mdlr

a react component library for building declarative synthesizer instruments and systems

Usage no npm install needed!

<script type="module">
  import mdlr from 'https://cdn.skypack.dev/mdlr';
</script>

README

mdlr Build Status npm package

⚠️ mdlr is just a lil bb library right now ⚠️
⚠️ ~please contribute if it interests you~ ⚠️

table of contents

intent

mdlr is an abstraction of synthesis via the web audio API in the form of composable React components.

While it draws inspiration from react-music, its goals differ. If react-music could be considered most equivalent to a synthesizer workstation, mdlr would be best compared to Max (perhaps its BEAP library in particular), or modular synthesizers. Nonetheless, mdlr draws inspiration from other javascript libraries and web audio API abstractions such as react-music and i_dropped_my_phone_the_screen_cracked

mdlr is not concerned with implementing methods of control like sequencers, MIDI input, or basic musical time structures. In fact, mdlr doesn't even implement musical pitch (since this is easily derived by other utilities like note-to-frequency) in favor of frequency. Decisions about control, timing, temperament, etc. are better made in the context of mdlr's use.

installation

via npm:

npm install --save mdlr

or via yarn:

yarn add mdlr

usage

import { AudioContext, Output, Oscillator, Modulation } from 'mdlr';

const ToneGenerator = ({ freq }) => (
  <AudioContext>
    <Output>
      <Oscillator frequency={freq} waveform="sawtooth">
        <Modulation parameter="frequency">
          <Oscillator frequency={30} />
        </Modulation>
        <Modulation parameter="amplitude">
          <Oscillator frequency={2} />
        </Modulation>
      </Oscillator>
    </Output>
  </AudioContext>
);

reference

⚠️ documentation for components needed here! ⚠️

development

prerequisites

Node.js >= v4 and Yarn must be installed.

installation

  • Running yarn install in the components's root directory will install everything you need for development.

demo development server

  • yarn start will run a development server with the component's demo app at http://localhost:3000 with hot module reloading.

formatting

  • yarn lint will run linter on scripts.
  • yarn pretty will prettify scripts.

running tests

  • yarn test will run the tests once.

  • yarn test:coverage will run the tests and produce a coverage report in coverage/.

  • yarn test:watch will run the tests on every change.

building

  • yarn build will build the component for publishing to npm and also bundle the demo app.

  • yarn clean will delete built resources.