Tiny Web-Audio GM synth
npm install jzz-synth-tinynpm install jzz-synth-tiny
yarn add jzz-synth-tiny
html
//...
`
##### CDN (jsdelivr)
`html
//...
`
##### CDN (unpkg)
`html
//...
`
##### CommonJS
`js
var JZZ = require('jzz');
require('jzz-synth-tiny')(JZZ);
//...
`
##### TypeScript / ES6
`ts
import { JZZ } from 'jzz';
import { Tiny } from 'jzz-synth-tiny';
Tiny(JZZ);
//...
`
##### AMD
`js
require(['JZZ', 'JZZ.synth.Tiny'], function(JZZ, dummy) {
// ...
});
`
API
##### Play directly
`js
JZZ.synth.Tiny().noteOn(0, 'C5', 127)
.wait(500).noteOn(0, 'E5', 127)
.wait(500).noteOn(0, 'G5', 127)
.wait(500).noteOff(0, 'C5').noteOff(0, 'E5').noteOff(0, 'G5');
`
##### Register as a MIDI port
`js
JZZ.synth.Tiny.register('Web Audio');
JZZ().openMidiOut('Web Audio').noteOn(0, 'C5', 127)
.wait(500).noteOn(0, 'E5', 127)
.wait(500).noteOn(0, 'G5', 127)
.wait(500).noteOff(0, 'C5').noteOff(0, 'E5').noteOff(0, 'G5');
`
To make vitual port visible by Web MIDI API, please check the instructions at https://github.com/jazz-soft/JZZ#virtual-midi-ports
##### Get/Set sound
`js
var synth = JZZ.synth.Tiny();
var tuba = synth.getSynth(58); // tuba
var drum = synth.getSynth(36, true); // bass drum
synth.setSynth(0, tuba); // set tuba to program 0 (it was piano originally);
synth.setSynth(35, drum, true); // set bass drum to percussion instrument 35;
`
See more details at https://github.com/g200kg/webaudio-tinysynth#timbre-object-structure
Using in Node.js with headless Web Audio
`js
const WAAPI = require('node-web-audio-api');
const JZZ = require('jzz');
require('jzz-synth-tiny')(JZZ);
global.window = { AudioContext: WAAPI.AudioContext };
JZZ.synth.Tiny()
.or(function() { console.log('Cannot open MIDI-Out!\n'/ + this.err() /); })
.note(0, 'C5', 127, 500).wait(500)
.note(0, 'E5', 127, 500).wait(500)
.note(0, 'G5', 127, 500).wait(500)
.note(9, 'C6', 127, 500).wait(500)
.and(function() { JZZ.lib.closeAudioContext(); });
``