/jam

Create music through collaborative coding!

Primary LanguageJavaScript

JAM

A live coding environment that allows realtime collaboration through a web browser.

Inspired by other live coding systems such as:

Running Locally

Install deno.

Run server:

deno run --allow-net --allow-read server.ts

Go to http://localhost:8000/ in a browser.

Project Status

I just started working on this so basically nothing is implemented yet :(

TODO

  • Implement backend with syncing
    • implement differential syncing
  • Add features to user API
    • silence function

    • sequence manipulation through decorators and dot operators

      e.g. seq("c4 e4 g4").shuffle().half() this would be a wrapper around: new HalfSequence(new ShuffleSequence(new ListSequence(...)))

    • configuration of options such as cycles per second

    • set volume of each named oscillator/track

    • envelope for volume and filter

    • LFOs

    • effects

    • samples

    • add support for parsing midi note numbers (e.g. 60 for middle C)

      • this may be more intuitive for people who don't know music theory
  • UI improvements
    • don't crash or stop music when an error occurs
    • cancel scheduled events and re-run scheduling (after state is restored) after an exception is thrown
    • display error messages from user code in html page rather than in the console
    • make error messages more meaningful
      • this can be done by verifying the arguments of user functions such as play() rather than allowing any invalid arguments to cause exceptions to be thrown later.
    • show other users' cursors
    • keyboard shortcuts
    • syntax highlighting
  • Documentation
    • Tutorial/walkthrough
    • Code overview

Ideas for sequence manipulation

  • chooseRand
  • join (concatenates 2 sequences)
  • times
  • divide
  • every(n)
  • shuffle
  • reverse
  • chance(x) (will play the sequence with a probability x)
  • chord("c4 e4 g4") (plays notes simultaneously)
  • euclidean
  • microtonal notes, non-western scales

References