sample degrade
by mohayonao
HTML
<script src="//mohayonao.github.io/neume.js/build/neume.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/vue/0.10.6/vue.min.js"></script>
<div id="app">
<button id="start" v-on="click:start">start</button>
<input type="range" min="0.1" max="1.0" step="0.1" v-model="rate"> {{ rate }}
</div>
JavaScript
var Neume = neume(new AudioContext());
var Synth = new Neume(function($) {
var out;
out = $("sin");
var x = 1;
var rate = 0.7;
var value = 0;
out = $("script", { audioprocess: function(e) {
var input = e.inputBuffer.getChannelData(0);
var output = e.outputBuffer.getChannelData(0);
for (var i = 0, imax = input.length; i < imax; ++i) {
if (x >= 1) {
x -= 1;
value = input[i];
}
output[i] = value;
x += rate;
}
} }, out);
return out;
});
var synth = null;
new Vue({
el: "#app",
data: {
rate: 0.7
},
methods: {
start: function() {
if (synth) {
synth.fadeOut("+0", 0.5);
synth = null;
} else {
synth = new Synth().fadeIn("+0", 0.5);
}
}
}
});