Skip to content
/ vusic Public
forked from dawg/dawg

A DAW built using Electron and the Web Audio API

Notifications You must be signed in to change notification settings

JMLegere/vusic

 
 

Repository files navigation

Vusic

Build Status

A DAW for the 21st century!

Vusic

Roadmap

Vusic is currently being developed as part of ENGG 4000 (Senior Design Project). This means development will continue until at least April 2019; however, the project itself was started before the course began and will hopefully continue after its completion. Several core ideas have and continue to influence the development of the application:

User Experience

Learning to use a DAW is often a painful process, even for experienced users. Additionally, the UI/UX in modern DAWs are often lacking. We aim to change this by levering the web technology that is available today and focusing on the UI/UX during planning and development.

Collaboration

Music can be an incredibly collaborative process. When two individuals are in the same room, collaboration is easy; however this is often not possible as collaborators are often geographically separated. By taking advantage of the real-time collaboration technology available today, we hope to enable producers and musicians to simultaneously collaborate, even when they are located on different continents.

Machine Learning

With the advent of machine learning technology, several manual processes, such as vocal separation or audio to MIDI transcription, have the possibility to be completely automated. We aim to take advantage of this research to provide cutting-edge technology to musicians and producers today.

Tasks

Here is an incomplete list of the major tasks that need to be completed. 🏃 indicates active development.

  • Application layout
  • Piano roll + patterns
  • Basic synthesizers + integration with the piano roll
  • 🏃 Automated vocal extraction
  • 🏃 Automated piano note transcription
  • Playlist
  • Mixer + effects
  • Automation clips
  • 🏃 Real-time collaboration
  • 🏃 VSTs

Mockups

side

Bottom Tabs


lower

Side Tabs

Contributing

Prerequisites

  1. Install Node Version Manager (NVM)
  2. Install Node and npm using NVM
  3. Install the dependencies: npm i

Development

Development occurs one of two places. Application development occurs in Electron; however, Storybook is used as an isolated component development environment. For many components, it is recommended that you create a story within Storybook to serve as active documentation.

Electron

Start the Electron application in development mode.

npm run serve:electron

Storybook

Start the Storybook server.

npm run serve:storybook

Building

The following command will build Vusic for your current operating system. It is not very easy to build cross-platform. As such, we use Travis CI to build for Linux, MacOS, and Windows at the same time. See the .travis.yml file for more information.

npm run build

Electron

Currently, we are able to build the Electron application; however, deployment and auto-update mechanisms have yet to be created. To build the application, run the following command:

npm run build:electron

Storybook

GitHub Pages deploys the website located in our docs folder on the master branch. To update this folder, you must first build the storybook website.

npm run build:storybook

After, you must create a PR into develop and then another into master. The site itself will deploy automatically once the PR into master has been merged.

Testing

Currently, there is a small unit suite available. These tests make use of Vue Test Utils and can be initiated using the following command.

npm run test:unit

There is also an test:e2e command; however, this test suite does not currently contain any tests.

Deploying

First, replace of references of the version in package.json and .travis.yml to the new version. Then add and commit your changes.

Authors

Jacob Smith Matt DeSilva Amir Eldesoky Alex ODonnell
Software Engineering Electrical Engineering Electrical Engineering Electrical Engineering

References

GridSound was a great reference during development. For example, components such as Timeline.vue and BeatLines.vue were based off similar component implementations from gs-ui-components.

VS Code was also used as a reference during development. We are big fans of the structure and navigation tools (Shortcuts, Command Palette, etc) and wanted to implement similar features within Vusic.

About

A DAW built using Electron and the Web Audio API

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Vue 49.9%
  • TypeScript 49.3%
  • Other 0.8%