Is there a better way to create polyphonic sound?Create GUID / UUID in JavaScript?What is the most efficient way to deep clone an object in JavaScript?Is there a better way to do optional function parameters in JavaScript?What is the best way to add options to a select from as a JS object with jQuery?(Built-in) way in JavaScript to check if a string is a valid numberEvent binding on dynamically created elements?Creating multiline strings in JavaScriptCreating a div element in jQueryWhat is JSONP, and why was it created?What is the best way to detect a mobile device?
Create custom script for send mail in magento 1.9
Who voices the character "Finger" in The Fifth Element?
Does a return economy-class seat between London and San Francisco release 5.28 t of CO2e?
Lifting a probability measure to the power set
My colleague is constantly blaming me for his errors
Picking balls from urns.
Why won't the ground take my seed?
Is the location of an aircraft spoiler really that vital?
Movie in a trailer park named Paradise and a boy playing a video game then being recruited by aliens to fight in space
Breakups - Makeups
Is there a legal way for US presidents to extend their terms beyond four years?
Donkey as Democratic Party symbolic animal
Was it really unprofessional of me to leave without asking for a raise first?
Prime parity peregrination
What game is this character in the Pixels movie from?
Most important new papers in computational complexity
Pshat of what did Korach take?
Training with a subset of data: relationship between subset size and training metric?
I hit a pipe with a mower and now it won't turn
Handling a player (unintentionally) stealing the spotlight
What does the phrase "building hopping chop" mean here?
Different budgets within roommate group
Meaning of じゃないんじゃない?
Why do we use a cylinder as a Gaussian surface for infinitely long charged wire?
Is there a better way to create polyphonic sound?
Create GUID / UUID in JavaScript?What is the most efficient way to deep clone an object in JavaScript?Is there a better way to do optional function parameters in JavaScript?What is the best way to add options to a select from as a JS object with jQuery?(Built-in) way in JavaScript to check if a string is a valid numberEvent binding on dynamically created elements?Creating multiline strings in JavaScriptCreating a div element in jQueryWhat is JSONP, and why was it created?What is the best way to detect a mobile device?
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;
I have created a piece of code that seems to work in playing a sound file several times simultaneously, however, I am not sure if this is the best approach.
In essence, I am trying to create a simple web piano and I may use this approach later on in a game or something. The result is pretty perfect. I can play chords with no problems, with the exception of keyboard combo limits. If I were to move var request = new XMLHttpRequest();
to outside the functions making it a call-once global variable then the sound does not play simultaneously as it does now.
document.onkeydown = function(key)
if(pitch[key.keyCode]!==undefined)
Voice(pitch[key.keyCode]);
function Voice(pitch)
var source = audioCtx.createBufferSource();
var request = new XMLHttpRequest();
request.open("GET","sample.wav",true);
request.responseType = "arraybuffer";
request.send();
request.onload = function()
var audioData = request.response;
audioCtx.decodeAudioData(audioData, function(buffer)
source.buffer = buffer;
source.playbackRate.value = pitch;
source.connect(audioCtx.destination);
source.start(0);
,
function(e)
console.log(e);
);
My only concern is if the code is filling up the memory with new functions. Like when the sample is done playing, there is still a source
, request
, audioData
and all the functions in between floating around in memory indefinitely.
So if the garbage collection doesn't take care of it, what would be the best approach to find out when that instance of the sample is done playing and removing that specific "object" manually from memory?
javascript audiocontext
add a comment |
I have created a piece of code that seems to work in playing a sound file several times simultaneously, however, I am not sure if this is the best approach.
In essence, I am trying to create a simple web piano and I may use this approach later on in a game or something. The result is pretty perfect. I can play chords with no problems, with the exception of keyboard combo limits. If I were to move var request = new XMLHttpRequest();
to outside the functions making it a call-once global variable then the sound does not play simultaneously as it does now.
document.onkeydown = function(key)
if(pitch[key.keyCode]!==undefined)
Voice(pitch[key.keyCode]);
function Voice(pitch)
var source = audioCtx.createBufferSource();
var request = new XMLHttpRequest();
request.open("GET","sample.wav",true);
request.responseType = "arraybuffer";
request.send();
request.onload = function()
var audioData = request.response;
audioCtx.decodeAudioData(audioData, function(buffer)
source.buffer = buffer;
source.playbackRate.value = pitch;
source.connect(audioCtx.destination);
source.start(0);
,
function(e)
console.log(e);
);
My only concern is if the code is filling up the memory with new functions. Like when the sample is done playing, there is still a source
, request
, audioData
and all the functions in between floating around in memory indefinitely.
So if the garbage collection doesn't take care of it, what would be the best approach to find out when that instance of the sample is done playing and removing that specific "object" manually from memory?
javascript audiocontext
add a comment |
I have created a piece of code that seems to work in playing a sound file several times simultaneously, however, I am not sure if this is the best approach.
In essence, I am trying to create a simple web piano and I may use this approach later on in a game or something. The result is pretty perfect. I can play chords with no problems, with the exception of keyboard combo limits. If I were to move var request = new XMLHttpRequest();
to outside the functions making it a call-once global variable then the sound does not play simultaneously as it does now.
document.onkeydown = function(key)
if(pitch[key.keyCode]!==undefined)
Voice(pitch[key.keyCode]);
function Voice(pitch)
var source = audioCtx.createBufferSource();
var request = new XMLHttpRequest();
request.open("GET","sample.wav",true);
request.responseType = "arraybuffer";
request.send();
request.onload = function()
var audioData = request.response;
audioCtx.decodeAudioData(audioData, function(buffer)
source.buffer = buffer;
source.playbackRate.value = pitch;
source.connect(audioCtx.destination);
source.start(0);
,
function(e)
console.log(e);
);
My only concern is if the code is filling up the memory with new functions. Like when the sample is done playing, there is still a source
, request
, audioData
and all the functions in between floating around in memory indefinitely.
So if the garbage collection doesn't take care of it, what would be the best approach to find out when that instance of the sample is done playing and removing that specific "object" manually from memory?
javascript audiocontext
I have created a piece of code that seems to work in playing a sound file several times simultaneously, however, I am not sure if this is the best approach.
In essence, I am trying to create a simple web piano and I may use this approach later on in a game or something. The result is pretty perfect. I can play chords with no problems, with the exception of keyboard combo limits. If I were to move var request = new XMLHttpRequest();
to outside the functions making it a call-once global variable then the sound does not play simultaneously as it does now.
document.onkeydown = function(key)
if(pitch[key.keyCode]!==undefined)
Voice(pitch[key.keyCode]);
function Voice(pitch)
var source = audioCtx.createBufferSource();
var request = new XMLHttpRequest();
request.open("GET","sample.wav",true);
request.responseType = "arraybuffer";
request.send();
request.onload = function()
var audioData = request.response;
audioCtx.decodeAudioData(audioData, function(buffer)
source.buffer = buffer;
source.playbackRate.value = pitch;
source.connect(audioCtx.destination);
source.start(0);
,
function(e)
console.log(e);
);
My only concern is if the code is filling up the memory with new functions. Like when the sample is done playing, there is still a source
, request
, audioData
and all the functions in between floating around in memory indefinitely.
So if the garbage collection doesn't take care of it, what would be the best approach to find out when that instance of the sample is done playing and removing that specific "object" manually from memory?
javascript audiocontext
javascript audiocontext
edited Mar 25 at 15:01
Egon Allison
9001 gold badge5 silver badges19 bronze badges
9001 gold badge5 silver badges19 bronze badges
asked Mar 25 at 13:27
EdwardEdward
661 silver badge12 bronze badges
661 silver badge12 bronze badges
add a comment |
add a comment |
0
active
oldest
votes
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55338895%2fis-there-a-better-way-to-create-polyphonic-sound%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
Is this question similar to what you get asked at work? Learn more about asking and sharing private information with your coworkers using Stack Overflow for Teams.
Is this question similar to what you get asked at work? Learn more about asking and sharing private information with your coworkers using Stack Overflow for Teams.
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55338895%2fis-there-a-better-way-to-create-polyphonic-sound%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown