An open API service indexing awesome lists of open source software.

https://github.com/bobbicodes/mario-music-composer

Classic SNES music sequencer in Clojurescript w/ re-frame and Web Audio API featuring MusicXML import, vector graphics, undo/redo and sharps/flats
https://github.com/bobbicodes/mario-music-composer

Last synced: about 1 year ago
JSON representation

Classic SNES music sequencer in Clojurescript w/ re-frame and Web Audio API featuring MusicXML import, vector graphics, undo/redo and sharps/flats

Awesome Lists containing this project

README

          

# mario-music-composer

Classic SNES music sequencer in Clojurescript w/ re-frame and Web Audio API featuring MusicXML import, vector graphics, undo/redo and sharps/flats

## Start local development server:

I use [Figwheel Main](https://github.com/bhauman/figwheel-main) with the [Clojure CLI tools](https://clojure.org/reference/deps_and_cli). Audio samples are fetched with [core.async](https://github.com/clojure/core.async), and while the app generally follows the [re-frame](https://github.com/Day8/re-frame) pattern, it still does lots of yucky stuff like perform logic in views, side-effecting event handlers, etc.

Oh and I'm still working on a proper note scheduling system. It currently just plays the entire song and there's no way to stop or adjust it once you press play...

```
clojure -A:fig -b dev -r
```

You'll need to change the line in `music.cljs` to point to the directory with the samples:

```
(defn load-samples []
(go-loop [result {}
sounds (range 1 27)]
(if-not (nil? (first sounds))
(let [sound (first sounds)
decoded-buffer (