UNPKG

rkeys

Version:

A platform for creating tablet/HTML5 virtual-keyboard apps to send keystrokes to remote X11

116 lines (115 loc) 3.05 kB
// Generated by LiveScript 1.3.0 (function(){ var Noise, CACHESIZE, MONO, SAMPLERATE; Noise = require('./noise'); CACHESIZE = 3; MONO = 1; SAMPLERATE = 44100; module.exports = { createBeep: createBeep, createNoise: createNoise, beep: createBeep(), blip: createBeep({ type: 'square', freq: 9000 }), blop: createBeep({ type: 'square', freq: 100 }), drop: createBeep({ toFreq: 0 }), rise: createBeep({ toFreq: 2000 }), noise: { brown: createNoise({ type: 'brown' }), pink: createNoise({ type: 'pink' }), white: createNoise({ type: 'white' }) } }; function createBeep(arg$){ var ref$, freq, ref1$, dur, toFreq, type; ref$ = arg$ != null ? arg$ : {}, freq = (ref1$ = ref$.freq) != null ? ref1$ : 1000, dur = (ref1$ = ref$.dur) != null ? ref1$ : 0.025, toFreq = ref$.toFreq, type = ref$.type; return renderCacheOffline(dur, function(ctx){ var x$; x$ = ctx.createOscillator(); x$.frequency.value = freq; if (toFreq != null) { x$.frequency.setTargetAtTime(toFreq, 0, dur); } if (type != null) { x$.type = type; } return x$; }); } function createNoise(arg$){ var ref$, dur, ref1$, type, GENS; ref$ = arg$ != null ? arg$ : {}, dur = (ref1$ = ref$.dur) != null ? ref1$ : 0.025, type = (ref1$ = ref$.type) != null ? ref1$ : 'white'; GENS = { brown: Noise.createBrownNoise, pink: Noise.createPinkNoise, white: Noise.createWhiteNoise }; return renderCacheOffline(dur, function(ctx, size){ var b, samples, data, i$, to$, i, x$; b = ctx.createBuffer(MONO, size, SAMPLERATE); samples = GENS[type](size); data = b.getChannelData(0); for (i$ = 0, to$ = size - 1; i$ <= to$; ++i$) { i = i$; data[i] = samples[i]; } x$ = ctx.createBufferSource(); x$.buffer = b; return x$; }); } function createCache(){ var audio, p; audio = []; p = 0; return { init: function(samples){ var data, i$, to$, i, results$ = []; data = WavEncoder.encode(samples); for (i$ = 0, to$ = CACHESIZE - 1; i$ <= to$; ++i$) { i = i$; results$.push(audio[i] = new Audio(data)); } return results$; }, play: function(){ var ref$; return (ref$ = audio[p++ % CACHESIZE]) != null ? ref$.play() : void 8; } }; } function renderCacheOffline(dur, createGenerator){ var size, c, x$, generator, cache; size = SAMPLERATE * dur; c = new OfflineAudioContext(MONO, size, SAMPLERATE); x$ = generator = createGenerator(c, size); x$.connect(c.destination); x$.start(); x$.stop(dur); cache = createCache(); c.oncomplete = function(it){ return cache.init(it.renderedBuffer.getChannelData(0)); }; c.startRendering(); return cache.play; } }).call(this);