Git Product home page Git Product logo

beadz-drum-machine's Introduction

Beadz Drum Machine

Beadz is an experimental drum machine built using The Web Audio API and Vue.js. It uses service worker and a manifest.json so that it can be saved to your device's homescreen and used offline. Get the Beadz web app here: heydon.github.io/beadz-drum-machine/.

Polymeters

Beadz lets you create dynamic polymetric drum patterns by adding and removing quarter-beats from individual tracks while the composition is playing.

The add beat and remove beat buttons encountered first for each track let you change the overall quantity of beats for that track

The greater the disparity between the (quarter-beat) length of individual tracks, the more complex and longer the composition.

Quantum playback

Beadz also lets you adjust the probability that any individual track's sounds will be played. By calibrating which beats can be played and the probability that they will be played within a polymetric composition can give the illusion of a drummer improvising.

The probability setting is available by pressing the settings button at the end of each track. It is composed of two number inputs. The first, called chance, is the numerator and the second, labeled "in", is the denominator.

Overrides

Some drums are not typically played at the same time as others within conventional drum beats. By allowing you to prioritize certain sounds over others, you can make sure collisions don't take place as polymetric track relationships permutate over time.

Choosing which sounds override other sounds is available inside the track settings. Each other sound is represented by a checkbox.

For example, by default the 'snare' and 'snare light' tracks are set to override the 'kick' track. Where a kick beat is scheduled but no snare sounds are due at the same time, the kick sound is played. Also, since 'snare' and 'snare light' represent sounds coming from the same drum, 'snare' overrides 'snare light'.

Fluctuation

Real drummers do not produce exactly the same sound each time they hit a drum. Minor differences in velocity and the precise placement of the hit result in subtly different sounds.

The fluctuation control is available under the track's settings and is provided as a range input.

Beadz emulates this variability by randomly altering the pitch of the triggered sound within close parameters. The level of fluctuation is adjustable for each track.

(Note: Safari does not support this feature because Safari is a thrice-used prophylactic.)

Accessibility

Beadz has been designed to be operable using a keyboard and/or screen reader. If you have any problems using Beadz, please create an issue.

beadz-drum-machine's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

beadz-drum-machine's Issues

Android issue

Nice work man :)
There is an issue on Android devices.
Basically, if I change the beat of a sound quickly, I'm getting a clipping issue.
I tried to fix it but I didn't find any good solution so far.
Any idea?

Probability exclusion silencing

Even when probability function returns false for the overriding sound and it doesn't play, the overrided sound is silenced. A logic issue.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.