Skip to content
A code playground for midi music
Branch: master
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
resources Use lambda instead of HTTP direct so we can use solo topology again Jun 12, 2019
src/midibin Use lambda instead of HTTP direct so we can use solo topology again Jun 12, 2019
.gitignore Ignore target dir May 27, 2019
README.md Create README.md May 27, 2019
UNLICENSE Add copyright renunciation May 27, 2019
deps.edn Pin expound version and rebuild compiler May 27, 2019
dev.clj Run nightlight before the run-cljs task May 28, 2019
dev.cljs.edn Use figwheel main and split dev commands from deploy May 27, 2019
figwheel-main.edn Use figwheel main and split dev commands from deploy May 27, 2019
ion.clj

README.md

Introduction

Midibin.com is a code playground for making MIDI music from Clojure data. It uses edna to generate the music server-side and send back the audio to your browser.

You aren't just restricted to writing edn data, though. You can write arbitrary code to generate your scores, as in this example. This is safe because the code is executed in your browser via ClojureScript, and only the resulting data is sent to the server.

Midibin is run entirely as a Datomic ion so you need to do all the necessary stuff to set that up. If you only want to run it locally, it should be enough to have a Datomic cloud instance and a SOCKS proxy connected to it; everything else will run locally with a little ring server using the development command below.

To run the commands below you will need to install the Clojure CLI tool.

Development

  • To develop with figwheel: clj -A:dev dev.clj
    • For this to work, you need a Datomic cloud instance set up, and a SOCKS proxy connected to it.
  • To build a release version of the frontend: clj -A:dev dev.clj build-cljs
    • To run the backend without figwheel (to test the release version of the frontend): clj -A:dev dev.clj run-clj
  • To build the sample audio files for each instrument: clj -A:dev dev.clj build-samples
  • To build the audio file for the default score on the main page: clj -A:dev dev.clj build-default

Deployment

  • To push the ion: clj -A:ion ion.clj push
  • To deploy the ion: clj -A:ion ion.clj deploy

Licensing

All files that originate from this project are dedicated to the public domain. I would love pull requests, and will assume that they are also dedicated to the public domain.

You can’t perform that action at this time.