Coder Social home page Coder Social logo

notesalad-editor's Introduction

Note Salad Editor

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/

Supported browsers

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.

Building and running locally

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.

Using with sequencers

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).

notesalad-editor's People

Contributors

danielrfry avatar

Stargazers

 avatar Denjhang Liu avatar Alexander Troosh avatar James Alan Nguyen avatar now_its_dark avatar

Watchers

 avatar

notesalad-editor's Issues

Include device type in JSON format patches

Currently, JSON format patch files created by saving/loading in the editor do not indicate which chip they are intended for, so loading OPM patches in OPL mode is allowed and fails silently, for example.

Improve drop-down list appearance

Native HTML select elements are used for this, with some CSS styling applied, but this has an inconsistent appearance across browsers and looks particularly bad in Safari.

Customisable mapping of input CCs to parameters

There is already some support for using a hardware MIDI controller to adjust parameters in the editor (by mapping control change messages to the on-screen controls), however there are only mappings for two specific devices, and they are selected automatically based on the device name, which can vary across platforms.

Add warning that SD-1 hardware is required

Currently, if no device is selected, controls on the SD-1 page are greyed out as there is no emulator to fall back on. A note indicating the reason this page is unavailable would be helpful.

Add keyboard navigation

Focus handling and keyboard navigation is inconsistent, with some controls receiving focus and others only allowing interaction using the mouse.

Support touchscreen devices

Custom controls such as the on-screen (musical) keyboard and knobs handle mouse events only, and cannot be used on touchscreen devices.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.