Skip to content
Music Live Rig App with Web Audio and MIDI Api's
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
assets
bin
dist
ref
src
todo
.editorconfig
.eslintrc.json
.gitignore
.gitmodules
README.md
index.html
package-lock.json
package.json

README.md

logo Jam Station

  • Music Live Rig App with Web Audio and MIDI Api's

screenshot

Installation

git clone https://github.com/alex-milanov/jam-station.git
cd jam-station
  • Install the dependencies
npm i

Running the app

Important: Web MIDI is currently supported only in Chrome

  • To start up the app just run:
npm start
  • Open Chrome at http://localhost:8080
  • To use the synth simply connect a MIDI keyboard or install a virtual MIDI keyboard app

Development Notes

Note: The app is currently in active development, and the architecture could undergo several refactorings.

App Architecture

The app architecture is influenced by recent trends like functional and functional reactive programming

It's building blocks consist of redux inspired state machine, virtual dom with hyperscript, whereby rxjs observables are used to connect the different elements.

The application flow is one directional, flux like.

  • Actions -> State -> UI (-> Actions)

A central goal of this approach is to structure the app in a manner of how one might reason about it. For eg.:

  • The State of the app is being changed by the user Actions
const state$ = actions.stream
	.scan((state, change) => change(state), actions.initial);
  • The UI of the app reflects it's State
const ui$ = state$.map(state => ui({state, actions}));
You can’t perform that action at this time.