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;








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?










share|improve this question






























    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?










    share|improve this question


























      0












      0








      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?










      share|improve this question
















      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






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      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






















          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
          );



          );













          draft saved

          draft discarded


















          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.



















          draft saved

          draft discarded
















































          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.




          draft saved


          draft discarded














          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





















































          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







          Popular posts from this blog

          Kamusi Yaliyomo Aina za kamusi | Muundo wa kamusi | Faida za kamusi | Dhima ya picha katika kamusi | Marejeo | Tazama pia | Viungo vya nje | UrambazajiKuhusu kamusiGo-SwahiliWiki-KamusiKamusi ya Kiswahili na Kiingerezakuihariri na kuongeza habari

          Swift 4 - func physicsWorld not invoked on collision? The Next CEO of Stack OverflowHow to call Objective-C code from Swift#ifdef replacement in the Swift language@selector() in Swift?#pragma mark in Swift?Swift for loop: for index, element in array?dispatch_after - GCD in Swift?Swift Beta performance: sorting arraysSplit a String into an array in Swift?The use of Swift 3 @objc inference in Swift 4 mode is deprecated?How to optimize UITableViewCell, because my UITableView lags

          Access current req object everywhere in Node.js ExpressWhy are global variables considered bad practice? (node.js)Using req & res across functionsHow do I get the path to the current script with Node.js?What is Node.js' Connect, Express and “middleware”?Node.js w/ express error handling in callbackHow to access the GET parameters after “?” in Express?Modify Node.js req object parametersAccess “app” variable inside of ExpressJS/ConnectJS middleware?Node.js Express app - request objectAngular Http Module considered middleware?Session variables in ExpressJSAdd properties to the req object in expressjs with Typescript