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

          SQL error code 1064 with creating Laravel foreign keysForeign key constraints: When to use ON UPDATE and ON DELETEDropping column with foreign key Laravel error: General error: 1025 Error on renameLaravel SQL Can't create tableLaravel Migration foreign key errorLaravel php artisan migrate:refresh giving a syntax errorSQLSTATE[42S01]: Base table or view already exists or Base table or view already exists: 1050 Tableerror in migrating laravel file to xampp serverSyntax error or access violation: 1064:syntax to use near 'unsigned not null, modelName varchar(191) not null, title varchar(191) not nLaravel cannot create new table field in mysqlLaravel 5.7:Last migration creates table but is not registered in the migration table

          은진 송씨 목차 역사 본관 분파 인물 조선 왕실과의 인척 관계 집성촌 항렬자 인구 같이 보기 각주 둘러보기 메뉴은진 송씨세종실록 149권, 지리지 충청도 공주목 은진현