Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

View vitaliy-bobrov's full-sized avatar

Vitalii Bobrov vitaliy-bobrov

View GitHub Profile
avrdude -c USBasp -p m328p -b 19200 -e -U flash:w:"TransistorTester.hex":a -U eeprom:w:"TransistorTester.eep":a -U lfuse:w:0xF7:m -U hfuse:w:0xD9:m -U efuse:w:0xFC:m
guitarInput
.connect(convolver)
.connect(makeUpGain)
.connect(bassNode)
.connect(midNode)
.connect(trebleNode)
.connect(context.destination);
const level = 5;
const duration = 0.01;
midNode.gain.setTargetAtTime(level, context.currentTime, duration);
const bassNode = new BiquadFilterNode(context, {
type: 'lowshelf',
frequency: 500
});
const midNode = new BiquadFilterNode(context, {
type: 'peaking',
Q: Math.SQRT1_2,
frequency: 1500
});
const makeUpGain = new GainNode(context, {
// Need to be adjusted to a particular IR.
gain: 5
});
guitarInput
.connect(convolver)
.connect(makeUpGain)
.connect(context.destination);
guitarInput.connect(convolver).connect(context.destination);
const convolver = new ConvolverNode(context);
fetch('impulse.wav')
.then(response => response.arrayBuffer())
.then(buffer => {
context.decodeAudioData(buffer, decoded => {
convolver.buffer = decoded;
})
.catch((err) => console.error(err));
});
const audio = document.createElement('audio');
console.log(audio.canPlayType('audio/wav')); // "maybe"
if (!audio.canPlayType('audio/wav')) {
console.log('The format is not supported!');
}
const context = new AudioContext();
const convolver = new ConvolverNode(context);
const control = document.querySelector('.gain-control');
control.addEventListener('change', (event) => {
const parsed = parseFloat(event.target.value);
const value = Number.isNaN(parsed) ? 1 : parsed;
const clamped = clamp(value);
gainNode.gain.setTargetAtTime(clamped, context.currentTime, 0.01);
});