All Projects → billorcutt → I_dropped_my_phone_the_screen_cracked

billorcutt / I_dropped_my_phone_the_screen_cracked

Licence: mit
web audio, cracked.

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to I dropped my phone the screen cracked

Cracked
Mac app for noise making - built w/ "I Dropped My Phone The Screen Cracked"
Stars: ✭ 98 (-60%)
Mutual labels:  music, synthesis, web-audio, music-library, audio-library, html5-audio
Howler.js
Javascript audio library for the modern web.
Stars: ✭ 19,425 (+7828.57%)
Mutual labels:  web-audio, audio-library, html5-audio
Tone.js
A Web Audio framework for making interactive music in the browser.
Stars: ✭ 11,352 (+4533.47%)
Mutual labels:  music, synthesis, web-audio
Nicemusic
A Nice MusicPlayer Powered by StarrySky
Stars: ✭ 107 (-56.33%)
Mutual labels:  music, music-library
Webmidikit
Simplest MIDI Swift library
Stars: ✭ 100 (-59.18%)
Mutual labels:  music, music-library
D3 Audio Spectrum
Spectrum analysis demo using D3 and HTML5 audio
Stars: ✭ 101 (-58.78%)
Mutual labels:  music, html5-audio
Musicott
JavaFX application that manages and plays music files.
Stars: ✭ 97 (-60.41%)
Mutual labels:  music, music-library
Beets
music library manager and MusicBrainz tagger
Stars: ✭ 10,522 (+4194.69%)
Mutual labels:  music, music-library
Granular
HTML5 Granular Synthesiser
Stars: ✭ 113 (-53.88%)
Mutual labels:  music, synthesis
Voc
A physical model of the human vocal tract using literate programming, based on Pink Trombone.
Stars: ✭ 129 (-47.35%)
Mutual labels:  music, synthesis
Tonejs Instruments
A small instrument sample library with quick-loader for tone.js
Stars: ✭ 172 (-29.8%)
Mutual labels:  music, web-audio
Gwion
🎵 strongly-timed musical programming language
Stars: ✭ 235 (-4.08%)
Mutual labels:  music, synthesis
Supriya
A Python API for SuperCollider
Stars: ✭ 167 (-31.84%)
Mutual labels:  music, synthesis
Audiomotion.js
High-resolution real-time spectrum analyzer and music player using Web Audio and Canvas APIs.
Stars: ✭ 177 (-27.76%)
Mutual labels:  web-audio, html5-audio
Awesome Livecoding
All things livecoding
Stars: ✭ 1,373 (+460.41%)
Mutual labels:  music, synthesis
Tuna
An audio effects library for the Web Audio API.
Stars: ✭ 1,345 (+448.98%)
Mutual labels:  music, web-audio
Edsp
A cross-platform DSP library written in C++ 11/14. This library harnesses the power of C++ templates to implement a complete set of DSP algorithms.
Stars: ✭ 116 (-52.65%)
Mutual labels:  music, music-library
Beep.js
Beep is a JavaScript toolkit for building browser-based synthesizers.
Stars: ✭ 1,294 (+428.16%)
Mutual labels:  music, web-audio
React Cassette Player
Simple ReactJS HTML5 audio player component built with SVG icons from The Noun Project.
Stars: ✭ 93 (-62.04%)
Mutual labels:  music, html5-audio
Maloja
Self-hosted music scrobble database to create personal listening statistics and charts
Stars: ✭ 223 (-8.98%)
Mutual labels:  music, music-library

I Dropped My Phone The Screen Cracked

I Dropped My Phone The Screen Cracked is a web audio library that uses method chaining and CSS-style selectors to simplify creating, configuring and connecting audio nodes in the browser. Here's hello world:

//create and connect sine and system out. start the sine
__().sine().dac().play();

and a slightly more complex example:

//create and connect a sine oscillator (frequency of 180), lowpass,
//compressor and system output (level of .5).
__().sine(180).lowpass({frequency:160,q:5,id:"lp1"}).compressor().dac(.5);

//select the sine using its type and change the detune to 10
__("sine").detune(10);

//use the id to get a reference to the lowpass
//filter and set the frequency to 600
__("#lp1").frequency(600);

//create and connect a sawtooth oscillator, waveshaper & compressor
//and connect the compressor to the existing dac we created above.
__().saw(800).waveshaper().compressor().connect("dac");

//change the ratio of both compressors to 12
__("compressor").attr("ratio",12);

//start the sine and the sawtooth
__("sine,saw").start();

Audio node chains can be encapsulated as units using macros

//define a simple macro named "microsynth"
__().begin("microsynth").sine().gain().end("microsynth").dac();

//change the frequency of the sine
__("microsynth").frequency(100);

//start it up
__("microsynth").start();

and macros can be wrapped in simple factory functions to create plugins, making it possible to instantiate instances, connect them to other nodes, address them individually or as a group, nest them within other macros, etc.

//define a plugin called microsynth
cracked.microsynth = function(params) {
    //pass any params to begin() so they can associated with the instance
    __().begin("microsynth",params).sine().gain(0).end("microsynth");
    //return cracked so we can chain methods
    return cracked;
}

//create two instances with different ids
__().microsynth({id:"micro1"}).lowpass().dac();
__().microsynth({id:"micro2"}).lowpass().connect("dac");

//change the frequency in the first
__("#micro1").frequency(1200);
//change the frequency in the second
__("#micro2").frequency(600);

//set the gain in both and start them
__("microsynth").volume(1).start();

Generally, the goal of I Dropped My Phone The Screen Cracked is simplicity, brevity without obscurity and making audio coding as intuitive as patching a modular, so that noise makers can focus on keeping it weird and fun.

If you're interested in knowing more, there's a one page overview, full source documentation, a Reddit interview, some press, and a useful app for Mac or Linux to try it all out.

Also cat pictures.

If you'd like to contribute, you can send a comment to [email protected], open an issue for bugs or feature enhancements or best of all, submit a pull request.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].