Я пытаюсь создать простой аддитивный синтезатор, используя 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()
, он работает нормально, но мне это не кажется "параллельным".
Есть ли более подходящие подходы?