Skip to content

json-to-web-audio allows you to specify oscillators and filters as JSON, and it will automatically create the necessary Web audio api nodes and filters, and link them together, and send the result to your speakers

Notifications You must be signed in to change notification settings

positonic/json-to-web-audio

Repository files navigation

json-to-web-audio

json-to-web-audio allows you to specify oscillators and filters as JSON, and it will automatically create the necessary Web audio api nodes and filters, and link them together, and send the result to your speakers.

You can specify any standard web audio filters, and it also includes support for the wonderful link to the wonderful TunaJS filters..

To install:

 npm install json-to-web-audio

To see it working run:

 npm start

Then visit http://localhost:8080/webpack-dev-server/

To use, first specify your json:

  nodeVoiceConfig = {
        oscillators : [
            {
                type: "sine",
                pipeLength: 32,
                gain: 100,
                filter: 1000,
                tuning: 0
            },
            {
                type: "sine",
                pipeLength: 8,
                gain: 100,
                filter: 1000,
                tuning: 700
            }
        ],
        gain: 100,
        filters: [
            {
                type: 'filter',
                props: {
                    type: "lowpass",
                        value: 1000
                }
            },
            {
                type: 'filter',
                tunaType: 'Chorus',
                props: {
                    rate: 1.5,
                        feedback: 0.2,
                        delay: 0.0045,
                        bypass: 0
                }
            },
            {
                type: 'filter',
                tunaType: "Delay",
                props: {
                    feedback: 0.45,    //0 to 1+
                        delayTime: 150,    //1 to 10000 milliseconds
                        wetLevel: 0.25,    //0 to 1+
                        dryLevel: 1,       //0 to 1+
                        cutoff: 2000,      //cutoff frequency of the built in lowpass-filter. 20 to 22050
                        bypass: 0
                }
            },
            {
                type: 'filter',
                tunaType: "Phaser",
                props: {
                    rate: 1.2,                     //0.01 to 8 is a decent range, but higher values are possible
                        depth: 0.3,                    //0 to 1
                        feedback: 0.2,                 //0 to 1+
                        stereoPhase: 30,               //0 to 180
                        baseModulationFrequency: 700,  //500 to 1500
                        bypass: 0
                }
            }
        ]
    }
    ],

    gain: 100

};

...and then run it like so:

 let voice = Voice(context, voiceConfig);
 
 var masterVca = voice.setupOscillators();
 let filterInput = voice.setUpFilters(voiceConfig.filters, masterVca, context.destination);
 
 voice.play();

About

json-to-web-audio allows you to specify oscillators and filters as JSON, and it will automatically create the necessary Web audio api nodes and filters, and link them together, and send the result to your speakers

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published