mdlr
⚠️ 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