Giter Club home page Giter Club logo

websynth's Introduction

WebSynth.io

A simple React-based synthesizer built on the Web MIDI API and Web Audio API. Originally built for Raspberry Pi with a mini display, but compatible with any Chromium browser.

GIF of Welcome Screen and Notes Playing In-App

Updates

In the latest release, I've refactored the code to be way more readable and just generally better. Input has been separated to its own components (for easy updating), and re-renders have been optimized for better performance. The beginnings of computer keyboard input have been added but it's buggy as hell right now, so don't test it lol.

Compatibility

The Web MIDI API is not currently supported in Safari or Firefox. Because of this, the synth will only work in Chrome with a MIDI device connected.

Get Started

npm install

You know the drill. Install project dependencies. There aren't a ton, pretty much just standard React stuff.

npm run startHTTPS

Run to start a localhost server with HTTPS enabled. This is currently required by most browsers to enable the MIDI API. Runs on https://localhost:3000.

This should also have live reload enabled, but it can be finicky so ya know, just refresh every now and then.

Have Fun ๐ŸŽ‰

Set up is pretty easy, so at this point you should be jamming on your MIDI keyboard.

MIDI Configuration

The MIDI mappings were originally set up for the Arturia Minilab Mk II but can easily be configured for other devices. All core settings can be accessed via src/midi-config.js. See comments in keyDownHandler and rangeHandler for instructions - basically, just console.log the input parameter to see your input data. It'll output an array with the following values [status code, note, velocity]. The note value is what you'll wanna plug in to midi-config.js. I'll probably add a MIDI configuration step in the frontend at some point but, but ๐Ÿคทโ€โ™‚๏ธ.

Coming Soon

Up next, I'll probably be adding computer keyboard support, mobile inputs, and more.

websynth's People

Contributors

treyhardin avatar

Stargazers

 avatar

Watchers

 avatar

websynth's Issues

Build Error - undefined value

Getting an error on build:

TypeError: Cannot read property 'toLowerCase' of undefined
    at Array.some (<anonymous>)

Have tried clearing npm cache, and temporarily removing all lines including toLowerCase. Plz help

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.