All Projects → vincentriemer → Io 808

vincentriemer / Io 808

Licence: mit
An attempt at a fully recreated web-based TR-808 drum machine.

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Io 808

glicol
(Audio) graph-oriented live coding language and music DSP library written in Rust
Stars: ✭ 853 (+48.09%)
Mutual labels:  sound, webaudio, web-audio
Sonorous
Sonorous streamlines working with web audio, enabling easy audio integration into web apps and games.
Stars: ✭ 47 (-91.84%)
Mutual labels:  webaudio, web-audio
Gs Wa Components
The audio code behind the GridSound's DAW
Stars: ✭ 38 (-93.4%)
Mutual labels:  webaudio, web-audio
Sono
A simple yet powerful JavaScript library for working with Web Audio
Stars: ✭ 164 (-71.53%)
Mutual labels:  sound, web-audio
Daw
GridSound (0.33.0) wants to be an open source online digital audio workstation following the new WebAudio API 🎛🎹🎵✨
Stars: ✭ 804 (+39.58%)
Mutual labels:  webaudio, web-audio
Audioworklet Polyfill
🔊 Polyfill AudioWorklet using the legacy ScriptProcessor API.
Stars: ✭ 179 (-68.92%)
Mutual labels:  webaudio, web-audio
Mecca
Animated music editor in Clojurescript/re-frame
Stars: ✭ 125 (-78.3%)
Mutual labels:  sound, web-audio
X-Piano
Now you can make your own piano!
Stars: ✭ 13 (-97.74%)
Mutual labels:  sound, webaudio
fastidious-envelope-generator
Envelope generator (aka ADSR) for the Web Audio API that aims to be free of artifacts and handle edge cases well
Stars: ✭ 56 (-90.28%)
Mutual labels:  webaudio, web-audio
Shape-Your-Music
A web application for drawing music.
Stars: ✭ 106 (-81.6%)
Mutual labels:  sound, webaudio
Tinysynth
A drums looper made with React and the WebAudio API
Stars: ✭ 238 (-58.68%)
Mutual labels:  sound, webaudio
birds
Bird Sound Synthesis based on AM+FM
Stars: ✭ 46 (-92.01%)
Mutual labels:  sound, webaudio
Jzz
MIDI library for Node.js and web-browsers
Stars: ✭ 325 (-43.58%)
Mutual labels:  webaudio, web-audio
Dx7 Supercollider
My accurate Yamaha DX-7 clone. Programmed in Supercollider.
Stars: ✭ 395 (-31.42%)
Mutual labels:  sound
Audiomentations
A Python library for audio data augmentation. Inspired by albumentations. Useful for machine learning.
Stars: ✭ 439 (-23.78%)
Mutual labels:  sound
Soundwave
Illustrate your sound waves on the fly 🚀
Stars: ✭ 390 (-32.29%)
Mutual labels:  sound
Beats
A command-line drum machine. Convert a beat notated in YAML into a *.wav file.
Stars: ✭ 389 (-32.47%)
Mutual labels:  sound
Jsfx
Javascript Sound Effect Generator
Stars: ✭ 553 (-3.99%)
Mutual labels:  sound
Odas
ODAS: Open embeddeD Audition System
Stars: ✭ 435 (-24.48%)
Mutual labels:  sound
Swyh
Stream the sound from your PC to an UPnP/DLNA device
Stars: ✭ 383 (-33.51%)
Mutual labels:  sound

iO-808

An attempt at a fully recreated web-based TR-808 drum machine using React, Redux, and the Web Audio API.

As an amateur/bedroom music producer I've always been fascinated with the impact and history of the TR-808. While trying to learn the new Web Audio API I attempted to try and recreate a few of the sounds by referencing the Sound on Sound Synth Secrets series and the block diagrams of the 808 itself. It became addicting and once I had most of the sounds done, I figured recreating the interface/functionality was the next logical step. I hope you enjoy it as much as I did making it!

Tools/Libraries Overview

Like most web/JavaScript developers, I sit on the shoulders of giants. Here's a brief list of the notable dependencies used in this project:

Web Audio API

All of the sound generated by this drum machine are synthesized using the Web Audio API (look mom, no samples!). A side effect of this is while I got the sounds fairly close to the original hardware, there's still a lot of room for improvement (yes I'm looking at you Cymbal and Rimshot).

The only WAA-related external library used is WAAClock which is used for scheduling the drum hits.

react

This library really has fueled my love of programming user interfaces and is what powers the UI of this app.

redux

Used for state management and used in conjuction with redux-localstorage for state persistance and react-redux for connecting my React components to the Redux store.

seamless-immutable

Used as the primary data structure for the redux store. The state store in this application is quite large (seriously, there are over 12,000 steps to keep track of) so in order to ensure maximum performance for mutating the state, this library was crucial (and a whole lot smaller than ImmutableJS).

reselect

Used for efficiently computing values from the Redux store. A lot of the UI state depends on the state of over components so this library was a lifesaver in helping with the reasoning and performance of those dependencies.

radium

Used for styling of all React components. All of the styles in the webapp are done through inline styles and in the few places I needed something like a :hover selector, Radium provided it. Also doesn't hurt that it autoprefixes all of the inline styles.

Features Not Yet Implemented

In order to meet my personal deadline of 8/08 for my initial release I had to skip a few of the features of the original 808.

  • PLAY mode
  • COMPOSE mode
  • PRE-SCALE (every pattern is currently hardcoded to 3)
  • Adding triggers via the TAP button

I'll be continuously working on these features as well as improving the synthesis of each sound to greater match the sounds of the original hardware.

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].