Inspiration

We were inspired by the famous Garage Band application. We thought music editing might be even cooler if you can collaborate on projects with friends, even if they thousand miles from you.

What it does

It allows you to create/record audio and MIDI tracks and arrange them on a timeline as a typical music editing tool. In addition, your band members can also help you edit the same project by adding and editing their tracks.

How we built it

With MeteorJS of course. We used the following standard Meteor packages:

meteor-base
mobile-experience
mongo
blaze-html-templates
session
jquery
tracker
standard-minifiers

Other Meteor packages:

random
reactive-var
less
accounts-password
accounts-facebook
email

Community packages:

iron:router
semantic:ui-css
anti:helpers
anti:modals
fortawesome:fontawesome
matb33:collection-hooks
meteorhacks:npm
chuangbo:cookie

and application specific ones:

npm-container
custom:postal // postaljs for message bus
custom:midijs // MIDI playback based on MIDI.js

Challenges we ran into

There were at least two areas which you might think should be covered by some community made smart packages, but they weren't. Those are:

  • recording sound in browser and storing it as a WAV file
  • track player and in particular MIDI playback

Turned out there are some solutions out there but they're not configurable enough to fit our needs. So in the end we had to put a lot of work into custom integration of 3rd party libraries. For MIDI, we used

https://github.com/mudcube/MIDI.js/

and for sound recordings:

https://github.com/daaain/JSSoundRecorder

Bronchitis of one of our members didn't help either ;-)

What's next for "Star Song"

We hope we will have time to at least make parts of our work available to the community in the form of smart packages. Of course a lot of things require polishing.

Also it would be great if we can implement some features we didn't have time for:

  • more options for tracks customization, e.g. volume, sound effects
  • allow different MIDI instruments, possibly uploaded by the users
  • rendering the end result into an easy-to-use format
  • display MIDI track in a form of notes
  • share links to a read-only version of your compositions
  • improve collaborative experience, e.g. discussion, locking tracks

Built With

+ 1 more
Share this project:

Updates