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
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
and for sound recordings:
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