【问题标题】:Create sound effect with Tone.js notes?使用 Tone.js 笔记创建音效?
【发布时间】:2021-08-04 17:48:59
【问题描述】:

如何使用 Tone.js 笔记创建these 音效之一

这甚至可能吗?当给出这些注释时: "C","C#","Db","D","D#","Eb","E","E#","Fb","F","F#","Gb","G ","G#","Ab","A","A#","Bb","B","B#","Cb"... 我现在可以以某种方式使用tone.js 来创建像“Tada!”这样的音效吗?我认为它需要的不仅仅是音符/音调,它还需要以某种方式进行音高和时间操纵?

简单的 C 音播放 400 毫秒:

polySynth.triggerAttack("C");
setTimeout(x=>polySynth.triggerRelease("C"),400);

这里有一个有效的Jsfiddle with Tone.js 进行实验。

【问题讨论】:

    标签: javascript audio tone.js


    【解决方案1】:

    我没有经验丰富的耳朵,但对我来说,其中大部分听起来像是大和弦(基础、三度、五度),有些还增加了八度。例如,C4、E4、G4、C5:

    const chord = ["C4", "E4", "G4", "C5"];
    const duration = 0.5;
    const delay = 0.05;
    const now = Tone.now();
    for (let i = 0; i < chord.length; i++) {
      const note = chord[i];
      polySynth.triggerAttackRelease(note, duration, now + i * delay);
    }
    

    如果您想随机化根音符,直接使用频率而不是音符名称可能会很有用。中音C以上的A一般取440Hz,以上每一个连续半音为Math.pow(2, 1/12)的倍数:

    const rootFrequency = 440;
    const chordSemitones = [0, 4, 7, 12];
    const duration = 0.5;
    const delay = 0.1;
    const now = Tone.now();
    for (let i = 0; i < chordSemitones.length; i++) {
      const pitch = rootFrequency * Math.pow(2, chordSemitones[i] / 12);
      polySynth.triggerAttackRelease(pitch, duration, now + i * delay);
    }
    

    【讨论】:

      猜你喜欢
      • 2012-10-26
      • 2021-02-17
      • 1970-01-01
      • 2019-12-11
      • 1970-01-01
      • 1970-01-01
      • 2014-06-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多