Note: I have shared the project in its current state on GitHub under an Apache 2.0 licence, so please feel free to visit the project’s GitHub page, download and even comment on issues or suggest features!
Over the past few weeks, I have been running through features that needed to be added into the project, and the site is now much more functional, resembling a music-making environment much more. These features include:
- Transport control (ability to start and stop the main clock on the server which handles time).
- 2 more step sequencers, one controlling a bass synth, and the other controlling a basic drum machine which plays samples.
- Collapsible <div> containers for every element to let users decide what they want to work on by hiding other parts of the page.
- modifiable time signatures, so users can add or subtract beats from the step sequencers.
- A reset button to put every sequencer back to 8 columns (4/4 timing).
- A stall button (which lets the user temporarily freeze on a certain note before carrying on).
- All these changes are communicated by the server, so are reflected for every user.
Next features to work on include:
- Bar counts
- More functionality for the user’s unique instrument including generic parameters that they can map onto effects or other things to customise their instrument.
- Custom wave and envelope support for the user’s instrument.
- Mixing capabilities, so that users can carry out the age-old tradition of turning down the bassist.
- Much better user interface, hopefully with windows being layered instead of just hidden (the current code uses the style=”display” property to hide and restore <div> elements). I’m hoping for a fluid, easy to use interface that looks inviting and modern.
- Song construction mode. Users can choose to compose a piece, setting step sequencers on a bar-by bar basis. These will be stored on the server and played back using the bar number, populating the sequencers accordingly.
- There needs to be a way for the user to lock their settings in, or follow the prescription of the composer (e.g. if the composer wants a tremolo effect, but the user wants to add reverb, and decides to raise the tremolo effect’s levels)
- Envelope customisation for the step sequencers.
- Some kind of limiter to prevent clipping.
I’ll finish with some screenshots of the project running currently, as I’m very excited to see it coming to life!