Tone.js基础使用
1.tone的调试
按照官网的调试方法,直接在js里写入:
1
2
3
import * as Tone from 'tone' // 导入包,必要
const synth = new Tone.Synth().toDestination(); // 连接到电脑音频
synth.triggerAttackRelease("C4", "8n"); // 发出声音
而不用加上react里面的组件和渲染,浏览器就可以发出声音。
2.tone的基础使用
tone里面有一个now常量,如果像下面这样写,就会一直发出声音不停。
1 | const synth = new Tone.Synth().toDestination(); |
这个Attack和Release可以结合到一起,写起来比较方便。而且时刻不能重叠,重叠就只会发出最后一个声音。
1
2
3
4
5const synth = new Tone.Synth().toDestination();
const now = Tone.now()
synth.triggerAttackRelease("C4", "8n", now)
synth.triggerAttackRelease("E4", "8n", now + 0.5)
synth.triggerAttackRelease("G4", "8n", now + 1)
3.tone计时和多音轨
tone可以提供一个计时器,从页面加载开始计时。
1 | setInterval(() => console.log(Tone.now()), 100); |
tone可以双音轨。下面的例子给出音轨中tone自身的循环(不需要setInterval),而且循环内部越来越快。如下:
1 | const synthA = new Tone.FMSynth().toDestination(); // 两个音轨 |
tone提供了三个音轨,分别是Tone.FMSynth, Tone.AMSynth 和 Tone.NoiseSynth。这三个音轨都是一个时间点只能由一个音的。如果想要多个音在同一时间发出,就要用到Tone.PolySynth。例子如下:
1 | const synth = new Tone.PolySynth(Tone.Synth).toDestination(); |
4.tone播放MP3
tone可以播放MP3。例子:
1 | const player = new Tone.Player(url).toDestination(); |
根据tone可以播放mp3的特性,可以将新的音阶加入。
1 | const sampler = new Tone.Sampler({ |
tone还有音乐特效。我感觉用不到就不写出例子了。