Tone.JS - аддитивный синтезатор - PullRequest
1 голос
/ 22 апреля 2019

Я пытаюсь создать простой аддитивный синтезатор, используя Tone.JS и WebAudioAPI.

Пока что я установил простой синтезатор, который отлично работает, и я могу играть любую ноту, какую захочу.

Я также могу свободно изменять параметры ecc ...

Вот код:

// synth declaration using Tone.JS

var synth = new Tone.Synth({
  oscillator: {
    type: 'fmsquare',
    modulationType: 'sawtooth',
    modulationIndex: 3,
    harmonicity: 2.4
  },
  envelope: {
    attack: 0.001,
    decay: 0.1,
    sustain: 5,
    release: 0.1
  }
}).toMaster()

//Possible added oscillator
 var synthB = new Tone.Synth({
   //Sample Data.......
 }).toMaster()

// Selection of piano keyboard from my HTML file

notes = document.querySelectorAll(".hex");

// Play note function

notes.forEach(function(note) {
    note.addEventListener("mouseover", function(event){
    x =  event.target.title;
    synth.triggerAttackRelease(x, "8n");
    //synthB.triggerAttackRelease(x, "8n");

    });
});

Я пытался добавить еще Tone.Synth, но не могу понять, как" распараллелить " процесс.

Глядя на документацию Я нашел, как создать полифонический синтезатор , но он позволяет добавлять несколько экземпляров одного и того же синтезатора для воспроизведения более одной ноты..

Я хотел бы сыграть одну и ту же ноту с РАЗЛИЧНЫМИ синтезаторами (каждый со своей формой волны), получая аддитивный синтезатор.

Я пытался просто создать SynthB, а затем вызвать synthB.triggerAttackRelease(), он работает нормально, но мне это не кажется "параллельным".

Есть ли более подходящие подходы?

...