A browser-based GUI patch editor and software synthesizer based on Note Salad's MIDI implementation, supporting the Yamaha OPL, OPM and SD-1 FM synthesizer chips.
Note Salad Editor includes OPL and OPM emulators from ymfm, allowing it to be used as a standalone software synthesizer. In browsers supporting Web MIDI, it can also drive external hardware synthesizers that embed Note Salad, and accept input from hardware MIDI controllers (or software loopback devices).
Try it out here: https://danielrfry.github.io/notesalad-editor/
I use Chrome for development, test regularly in Firefox, and occasionally in Safari and Edge. Basic functionality should work in recent versions of all the major browsers, but audio latency is likely to be better in browsers that support Audio Worklet, and MIDI input/output requires Web MIDI support.
First, clone and build Note Salad, following the instructions under Building libnotesalad for web. Once built, link it with the following commands in the Note Salad repository:
cd web
npm link
Next, in the Note Salad Editor repository:
npm install
npm link @danielrfry/notesalad
Start the development server:
npm run start
To create a production build suitable for deployment:
npm run build
The build output is placed in the build
subdirectory.
In order to use Note Salad Editor as a software synthesizer in conjunction with a sequencer, a MIDI loopback driver is required to route MIDI output from the sequencer to the MIDI input of Note Salad Editor.
On Linux, the Midi Through Ports provided by the snd-seq-dummy
driver can be used for this purpose. This driver is loaded by default on Ubuntu.
On macOS, the IAC driver can be used to create a loopback MIDI port.
On Windows, loopMIDI appears to be a well-known solution (though please note that I have not tested this personally).