Skip to content

Commit 8f5a601

Browse files
committed
Updated to allow passing in 'audioPath' parameter
1 parent a49eb80 commit 8f5a601

File tree

8 files changed

+49
-25
lines changed

8 files changed

+49
-25
lines changed

example_effects/superpowered/SuperpoweredWebAudio.js

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -73,13 +73,13 @@ class SuperpoweredWebAudio {
7373
});
7474
}
7575

76-
async createAudioNodeAsync(url, className, onMessageFromAudioScope) {
76+
async createAudioNodeAsync(url, className, onMessageFromAudioScope, options) {
7777
return new Promise((resolve, reject) => {
78-
this.createAudioNode(url, className, resolve, onMessageFromAudioScope);
78+
this.createAudioNode(url, className, resolve, onMessageFromAudioScope, options);
7979
});
8080
}
8181

82-
createAudioNode(url, className, callback, onMessageFromAudioScope) {
82+
createAudioNode(url, className, callback, onMessageFromAudioScope, options) {
8383
if (!AudioWorkletHasBrokenModuleImplementation && (typeof AudioWorkletNode === 'function')) {
8484
this.audioContext.audioWorklet.addModule(url).then(() => {
8585
class SuperpoweredNode extends AudioWorkletNode {
@@ -112,7 +112,7 @@ class SuperpoweredWebAudio {
112112
node.samplerate = this.audioContext.sampleRate;
113113
node.inputBuffer = this.Superpowered.createFloatArray(1024 * 2);
114114
node.outputBuffer = this.Superpowered.createFloatArray(1024 * 2);
115-
node.processor = new processorModule.default(this.Superpowered, onMessageFromAudioScope, node.samplerate);
115+
node.processor = new processorModule.default(this.Superpowered, onMessageFromAudioScope, options.sampleRate || node.samplerate, options.audioPath);
116116
node.sendMessageToAudioScope = function(message, transfer = 0) { node.processor.onMessageFromMainScope(message); }
117117
node.onaudioprocess = function(e) {
118118
node.processor.Superpowered.bufferToWASM(node.inputBuffer, e.inputBuffer);
@@ -133,6 +133,9 @@ if (!AudioWorkletHasBrokenModuleImplementation && (typeof AudioWorkletProcessor
133133
this.port.onmessage = (event) => { this.onMessageFromMainScope(event.data); };
134134
this.ok = false;
135135
this.samplerate = options.processorOptions.samplerate;
136+
137+
this.audioPath = options.audioPath;
138+
136139
this.Superpowered = new SuperpoweredGlue();
137140
this.Superpowered.loadFromArrayBuffer(options.processorOptions.wasmCode, this);
138141
}
@@ -160,10 +163,13 @@ if (!AudioWorkletHasBrokenModuleImplementation && (typeof AudioWorkletProcessor
160163
SuperpoweredWebAudio.AudioWorkletProcessor = SuperpoweredAudioWorkletProcessor;
161164
} else {
162165
class SuperpoweredAudioWorkletProcessor {
163-
constructor(sp, oma, sr) {
166+
constructor(sp, oma, sr, ap) {
164167
this.loader = new SuperpoweredTrackLoader(this);
165168
this.Superpowered = sp;
166169
this.samplerate = sr;
170+
171+
this.audioPath = ap;
172+
167173
this.onMessageFromAudioScope = oma;
168174
this.onReady();
169175
}

example_guitardistortion/main.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,7 @@ async function startSample() {
161161
content.innerText = 'Creating the audio context and node...';
162162
webaudioManager = new SuperpoweredWebAudio(44100, Superpowered);
163163
let currentPath = window.location.pathname.substring(0, window.location.pathname.lastIndexOf('/'));
164-
audioNode = await webaudioManager.createAudioNodeAsync(currentPath + '/processor.js', 'MyProcessor', onMessageFromAudioScope);
164+
audioNode = await webaudioManager.createAudioNodeAsync(currentPath + '/processor.js', 'MyProcessor', onMessageFromAudioScope, { audioPath: '../track.mp3'});
165165

166166
// audioNode -> audioContext.destination (audio output)
167167
webaudioManager.audioContext.suspend();
@@ -184,7 +184,7 @@ async function startInput() {
184184
if (!micStream) return;
185185

186186
let currentPath = window.location.pathname.substring(0, window.location.pathname.lastIndexOf('/'));
187-
audioNode = await webaudioManager.createAudioNodeAsync(currentPath + '/processor_live.js', 'MyProcessor', onMessageFromAudioScope);
187+
audioNode = await webaudioManager.createAudioNodeAsync(currentPath + '/processor_live.js', 'MyProcessor', onMessageFromAudioScope, { audioPath: '../track.mp3'});
188188
let audioInput = webaudioManager.audioContext.createMediaStreamSource(micStream);
189189
audioInput.connect(audioNode);
190190
audioNode.connect(webaudioManager.audioContext.destination);

example_guitardistortion/processor.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ class MyProcessor extends SuperpoweredWebAudio.AudioWorkletProcessor {
88
this.distortion.enabled = true;
99
// the player
1010
this.player = new this.Superpowered.AdvancedAudioPlayer(this.samplerate, 2, 2, 0, 0.501, 2, false);
11-
SuperpoweredTrackLoader.downloadAndDecode('../track.mp3', this);
11+
SuperpoweredTrackLoader.downloadAndDecode(this.audioPath, this);
1212
}
1313

1414
onMessageFromMainScope(message) {

example_guitardistortion/superpowered/SuperpoweredWebAudio.js

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -73,13 +73,13 @@ class SuperpoweredWebAudio {
7373
});
7474
}
7575

76-
async createAudioNodeAsync(url, className, onMessageFromAudioScope) {
76+
async createAudioNodeAsync(url, className, onMessageFromAudioScope, options) {
7777
return new Promise((resolve, reject) => {
78-
this.createAudioNode(url, className, resolve, onMessageFromAudioScope);
78+
this.createAudioNode(url, className, resolve, onMessageFromAudioScope, options);
7979
});
8080
}
8181

82-
createAudioNode(url, className, callback, onMessageFromAudioScope) {
82+
createAudioNode(url, className, callback, onMessageFromAudioScope, options) {
8383
if (!AudioWorkletHasBrokenModuleImplementation && (typeof AudioWorkletNode === 'function')) {
8484
this.audioContext.audioWorklet.addModule(url).then(() => {
8585
class SuperpoweredNode extends AudioWorkletNode {
@@ -112,7 +112,7 @@ class SuperpoweredWebAudio {
112112
node.samplerate = this.audioContext.sampleRate;
113113
node.inputBuffer = this.Superpowered.createFloatArray(1024 * 2);
114114
node.outputBuffer = this.Superpowered.createFloatArray(1024 * 2);
115-
node.processor = new processorModule.default(this.Superpowered, onMessageFromAudioScope, node.samplerate);
115+
node.processor = new processorModule.default(this.Superpowered, onMessageFromAudioScope, options.sampleRate || node.samplerate, options.audioPath);
116116
node.sendMessageToAudioScope = function(message, transfer = 0) { node.processor.onMessageFromMainScope(message); }
117117
node.onaudioprocess = function(e) {
118118
node.processor.Superpowered.bufferToWASM(node.inputBuffer, e.inputBuffer);
@@ -133,6 +133,9 @@ if (!AudioWorkletHasBrokenModuleImplementation && (typeof AudioWorkletProcessor
133133
this.port.onmessage = (event) => { this.onMessageFromMainScope(event.data); };
134134
this.ok = false;
135135
this.samplerate = options.processorOptions.samplerate;
136+
137+
this.audioPath = options.audioPath;
138+
136139
this.Superpowered = new SuperpoweredGlue();
137140
this.Superpowered.loadFromArrayBuffer(options.processorOptions.wasmCode, this);
138141
}
@@ -160,10 +163,13 @@ if (!AudioWorkletHasBrokenModuleImplementation && (typeof AudioWorkletProcessor
160163
SuperpoweredWebAudio.AudioWorkletProcessor = SuperpoweredAudioWorkletProcessor;
161164
} else {
162165
class SuperpoweredAudioWorkletProcessor {
163-
constructor(sp, oma, sr) {
166+
constructor(sp, oma, sr, ap) {
164167
this.loader = new SuperpoweredTrackLoader(this);
165168
this.Superpowered = sp;
166169
this.samplerate = sr;
170+
171+
this.audioPath = ap;
172+
167173
this.onMessageFromAudioScope = oma;
168174
this.onReady();
169175
}

example_timestretching/main.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ async function start() {
7474
content.innerText = 'Creating the audio context and node...';
7575
webaudioManager = new SuperpoweredWebAudio(44100, Superpowered);
7676
let currentPath = window.location.pathname.substring(0, window.location.pathname.lastIndexOf('/'));
77-
audioNode = await webaudioManager.createAudioNodeAsync(currentPath + '/processor.js', 'MyProcessor', onMessageFromAudioScope);
77+
audioNode = await webaudioManager.createAudioNodeAsync(currentPath + '/processor.js', 'MyProcessor', onMessageFromAudioScope, { audioPath: '../track.mp3'});
7878

7979
// audioNode -> audioContext.destination (audio output)
8080
webaudioManager.audioContext.suspend();

example_timestretching/processor.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ class MyProcessor extends SuperpoweredWebAudio.AudioWorkletProcessor {
44
// runs after the constructor
55
onReady() {
66
this.player = new this.Superpowered.AdvancedAudioPlayer(this.samplerate, 2, 2, 0, 0.501, 2, false);
7-
SuperpoweredTrackLoader.downloadAndDecode('../track.mp3', this);
7+
SuperpoweredTrackLoader.downloadAndDecode(this.audioPath, this);
88
}
99

1010
onMessageFromMainScope(message) {

example_timestretching/superpowered/SuperpoweredWebAudio.js

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -73,13 +73,13 @@ class SuperpoweredWebAudio {
7373
});
7474
}
7575

76-
async createAudioNodeAsync(url, className, onMessageFromAudioScope) {
76+
async createAudioNodeAsync(url, className, onMessageFromAudioScope, options) {
7777
return new Promise((resolve, reject) => {
78-
this.createAudioNode(url, className, resolve, onMessageFromAudioScope);
78+
this.createAudioNode(url, className, resolve, onMessageFromAudioScope, options);
7979
});
8080
}
8181

82-
createAudioNode(url, className, callback, onMessageFromAudioScope) {
82+
createAudioNode(url, className, callback, onMessageFromAudioScope, options) {
8383
if (!AudioWorkletHasBrokenModuleImplementation && (typeof AudioWorkletNode === 'function')) {
8484
this.audioContext.audioWorklet.addModule(url).then(() => {
8585
class SuperpoweredNode extends AudioWorkletNode {
@@ -112,7 +112,7 @@ class SuperpoweredWebAudio {
112112
node.samplerate = this.audioContext.sampleRate;
113113
node.inputBuffer = this.Superpowered.createFloatArray(1024 * 2);
114114
node.outputBuffer = this.Superpowered.createFloatArray(1024 * 2);
115-
node.processor = new processorModule.default(this.Superpowered, onMessageFromAudioScope, node.samplerate);
115+
node.processor = new processorModule.default(this.Superpowered, onMessageFromAudioScope, options.sampleRate || node.samplerate, options.audioPath);
116116
node.sendMessageToAudioScope = function(message, transfer = 0) { node.processor.onMessageFromMainScope(message); }
117117
node.onaudioprocess = function(e) {
118118
node.processor.Superpowered.bufferToWASM(node.inputBuffer, e.inputBuffer);
@@ -133,6 +133,9 @@ if (!AudioWorkletHasBrokenModuleImplementation && (typeof AudioWorkletProcessor
133133
this.port.onmessage = (event) => { this.onMessageFromMainScope(event.data); };
134134
this.ok = false;
135135
this.samplerate = options.processorOptions.samplerate;
136+
137+
this.audioPath = options.audioPath;
138+
136139
this.Superpowered = new SuperpoweredGlue();
137140
this.Superpowered.loadFromArrayBuffer(options.processorOptions.wasmCode, this);
138141
}
@@ -160,10 +163,13 @@ if (!AudioWorkletHasBrokenModuleImplementation && (typeof AudioWorkletProcessor
160163
SuperpoweredWebAudio.AudioWorkletProcessor = SuperpoweredAudioWorkletProcessor;
161164
} else {
162165
class SuperpoweredAudioWorkletProcessor {
163-
constructor(sp, oma, sr) {
166+
constructor(sp, oma, sr, ap) {
164167
this.loader = new SuperpoweredTrackLoader(this);
165168
this.Superpowered = sp;
166169
this.samplerate = sr;
170+
171+
this.audioPath = ap;
172+
167173
this.onMessageFromAudioScope = oma;
168174
this.onReady();
169175
}

superpowered/SuperpoweredWebAudio.js

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -73,13 +73,13 @@ class SuperpoweredWebAudio {
7373
});
7474
}
7575

76-
async createAudioNodeAsync(url, className, onMessageFromAudioScope) {
76+
async createAudioNodeAsync(url, className, onMessageFromAudioScope, options) {
7777
return new Promise((resolve, reject) => {
78-
this.createAudioNode(url, className, resolve, onMessageFromAudioScope);
78+
this.createAudioNode(url, className, resolve, onMessageFromAudioScope, options);
7979
});
8080
}
8181

82-
createAudioNode(url, className, callback, onMessageFromAudioScope) {
82+
createAudioNode(url, className, callback, onMessageFromAudioScope, options) {
8383
if (!AudioWorkletHasBrokenModuleImplementation && (typeof AudioWorkletNode === 'function')) {
8484
this.audioContext.audioWorklet.addModule(url).then(() => {
8585
class SuperpoweredNode extends AudioWorkletNode {
@@ -112,7 +112,7 @@ class SuperpoweredWebAudio {
112112
node.samplerate = this.audioContext.sampleRate;
113113
node.inputBuffer = this.Superpowered.createFloatArray(1024 * 2);
114114
node.outputBuffer = this.Superpowered.createFloatArray(1024 * 2);
115-
node.processor = new processorModule.default(this.Superpowered, onMessageFromAudioScope, node.samplerate);
115+
node.processor = new processorModule.default(this.Superpowered, onMessageFromAudioScope, options.sampleRate || node.samplerate, options.audioPath);
116116
node.sendMessageToAudioScope = function(message, transfer = 0) { node.processor.onMessageFromMainScope(message); }
117117
node.onaudioprocess = function(e) {
118118
node.processor.Superpowered.bufferToWASM(node.inputBuffer, e.inputBuffer);
@@ -133,6 +133,9 @@ if (!AudioWorkletHasBrokenModuleImplementation && (typeof AudioWorkletProcessor
133133
this.port.onmessage = (event) => { this.onMessageFromMainScope(event.data); };
134134
this.ok = false;
135135
this.samplerate = options.processorOptions.samplerate;
136+
137+
this.audioPath = options.audioPath;
138+
136139
this.Superpowered = new SuperpoweredGlue();
137140
this.Superpowered.loadFromArrayBuffer(options.processorOptions.wasmCode, this);
138141
}
@@ -160,10 +163,13 @@ if (!AudioWorkletHasBrokenModuleImplementation && (typeof AudioWorkletProcessor
160163
SuperpoweredWebAudio.AudioWorkletProcessor = SuperpoweredAudioWorkletProcessor;
161164
} else {
162165
class SuperpoweredAudioWorkletProcessor {
163-
constructor(sp, oma, sr) {
166+
constructor(sp, oma, sr, ap) {
164167
this.loader = new SuperpoweredTrackLoader(this);
165168
this.Superpowered = sp;
166169
this.samplerate = sr;
170+
171+
this.audioPath = ap;
172+
167173
this.onMessageFromAudioScope = oma;
168174
this.onReady();
169175
}

0 commit comments

Comments
 (0)