PolySynth
ボタンを押すと、 aと aを使用していくつかの音符を演奏したいと思いますSequence
。ユーザーがボタンを繰り返し押すと、再生中のものは何でも停止して、もう一度開始したいと思います。これは、エンベロープのディケイ/サステインが原因である可能性が最も高いです。
問題:何を試しても、シーケンスが再び開始された場合 (ボタンが再度クリックされた場合) に、以前に再生されたノートを完全にキャンセル/無音にすることはできません。
私のシンセ:
import { PolySynth } from 'tone'
const synth = new PolySynth(Synth, {
oscillator: {
type: 'sine4',
volume: -6,
},
envelope: {
attack: 0.01,
decay: 0.5,
sustain: 0.1,
release: 1,
},
}).toDestination()
synth.maxPolyphony = 4 // max notes playing at a time, not sure if necessary
私のシーケンス:
import { Sequence } from 'tone'
// Play the 2 notes individually then play them together
const notes = [
{ note: 'C4', duration: '8n' },
{ note: 'G4', duration: '8n' },
{ note: ['C4', 'G4'], duration: '4n' }
]
// The sequence that should play the notes after one another
const sequence = new Sequence({
subdivision: '8n',
loop: false,
events: notes,
callback: (time, note) => synth.triggerAttackRelease(note.note, note.duration, time),
})
私がそれを再生する方法は、これはイベント ハンドラーです。
import { start, Transport } from 'tone'
// Event handler simply attached to a button's onClick
function onButtonClicked() {
// Call whatever this start is, doc says it can only happen in an event handler
start()
// Try everything to kill current sound
Transport.cancel()
Transport.stop()
// Start it again
Transport.start()
sequence.start()
}
再生を開始する前に、すべてのサウンド (存在する場合) を完全に削除するにはどうすればよいですか?