Javascript music

De musiki

JavaScript Music

Flocking

TinyRave

TinyRave es una plataforma que permite la interacción de código JavaScript y su ejecución sonora en el browser. Utiliza una de las dos funciones (buildSampler or buildTrack) para ejecutar el track en el browser.

Mixables

Son funciones que toman en tiempo segundos y devuelven en samples de audio.

var mixable = function(time) { return Math.sin(TWO_PI * A_4 * time); } 

buildSampler

TinyRave llama a esta mixable 44,100 veces por segundo. Uso:

var buildSample = function(time){
  return Math.sin(TWO_PI * A_4 * time);
}

buildTrack

Mixable que se ejecuta una sola vez. Puede definirse dentro:

this.every(interval, callback)
this.until(duration, callback)
this.after(delay, callback)
this.play(mixable)

Para definir ganancia y bpm:

this.setMasterGain(gain)
this.setBPM(bpm)

Uso:

var buildTrack = function(){
  this.every(1, function(){
    // Cada segundo ...
    var o = new Oscillator;
    var e = new Envelope;
    var mixable = e.process(o);
    // Add mixable to the global mixer
    this.play(mixable);
  });
}

Librerías

  • Adapter.js (by default). Permite la comunicación entre el browser y TinyRave.com

Constants

    • BUFFER_SIZE (samples por canal)
    • SAMPLE_RATE (samples por canal en un segundo)
    • TWO_PI definido como 2 * Math.PI

Polyfills

[completar]

  • StdLib.coffee (by default). Eventos de frecuencias.
  • Instruments.coffee (opcional). Oscilador, filtros. Abstracciones de mayor nivel.

Para importar:

require('v1/instruments')
  • Midi.coffee (opcional). Para midi.

Para importar:

require('v1/midi')

Librería standard

Frecuencias en hz, octavas de 0 a 8.

C_0 through C_8
C_SHARP_0 / D_FLAT_0 through C_SHARP_8 / D_FLAT_8
D_0 through D_8
D_SHARP_0 / E_FLAT_0 through D_SHARP_8 / E_FLAT_8
E_0 through E_8
F_0 through F_8
F_SHARP_0 / G_FLAT_0 through F_SHARP_8 / G_FLAT_8
G_0 through G_8
G_SHARP_0 / A_FLAT_0 through G_SHARP_8 / A_FLAT_8
A_0 through A_8
A_SHARP_0 / B_FLAT_0 through A_SHARP_8 / B_FLAT_8
B_0 through B_8 

Frecuencia

Frequency.noteNumber(number) Argumento en midi. Devuelve en hz.

Frequency.makeNote(69) // Returns 440.0

Funciones globales

  • setTimeout(callback, delay)

=

Referencias

[[1]]