Skip to content

Commit

Permalink
Add reverb
Browse files Browse the repository at this point in the history
  • Loading branch information
mmontag committed Jan 22, 2022
1 parent beb575d commit 0e276ff
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 5 deletions.
5 changes: 4 additions & 1 deletion index.html
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,9 @@
<div class="param-label">After Touch</div>
<toggle-button ng-true-value="1" ng-false-value="0" ng-model="presetCtrl.params.aftertouchEnabled"></toggle-button>
</div>
<div class="param">
<knob step="1" min="0" max="99" to-number label="Reverb" ng-model="presetCtrl.reverb"></knob>
</div>
<select class="dx7-button"
ng-model="midiCtrl.midiFileIndex"
ng-options="midiCtrl.midiFiles.indexOf(file) as file for file in midiCtrl.midiFiles"></select>
Expand Down Expand Up @@ -169,4 +172,4 @@
</div>
<script src="bundle.js"></script>
</body>
</html>
</html>
19 changes: 15 additions & 4 deletions src/app.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,15 +27,21 @@ var audioContext = new (window.AudioContext || window.webkitAudioContext)();
config.sampleRate = audioContext.sampleRate;
var visualizer = new Visualizer("analysis", 256, 35, 0xc0cf35, 0x2f3409, audioContext);
var scriptProcessor = null;
var reverbGainNode = null;

function setupAudioGraph() {
scriptProcessor = audioContext.createScriptProcessor(config.bufferSize, 0, 2);
scriptProcessor.connect(audioContext.destination);
scriptProcessor.connect(visualizer.getAudioNode());
Reverb.extend(audioContext);
var reverbNode = audioContext.createReverbFromUrl("impulses/church-saint-laurentius.wav");
reverbGainNode = audioContext.createGain();
reverbNode.connect(reverbGainNode);

scriptProcessor = audioContext.createScriptProcessor(config.bufferSize, 0, 2);
scriptProcessor.connect(visualizer.getAudioNode());
scriptProcessor.connect(reverbNode);
reverbNode.connect(audioContext.destination);

scriptProcessor.connect(audioContext.destination);
reverbGainNode.connect(audioContext.destination);

var bufferSize = scriptProcessor.bufferSize || config.bufferSize;
var bufferSizeMs = 1000 * bufferSize / config.sampleRate;
var msPerSample = 1000 / config.sampleRate;
Expand Down Expand Up @@ -576,6 +582,11 @@ app.controller('PresetCtrl', ['$scope', '$localStorage', '$http', function ($sco
FMVoice.updateLFO();
});

$scope.presetCtrl.reverb = 33;
$scope.$watch('presetCtrl.reverb', (value) => {
reverbGainNode.gain.value = 4 * value / 100;
});

self.onChange();

// Audio context unlock that should work in both iOS and Chrome
Expand Down

0 comments on commit 0e276ff

Please sign in to comment.