Beep是一款功能非常强大的基于浏览器的电子琴js插件。该电子琴插件可以在发音的同时显示出该声音的音符,并且自带演示功能,可以播放指定曲子的完整音乐。该电子琴插件支持键盘演奏和使用鼠标滑过琴键的方式演奏。

Beep是基于WebAudio API来创建合成音乐效果的电子琴javascript框架。它用于模拟真实的钢琴演奏环境。使用一行代码synth = new BEEP.Instrument()就可以创建一组触发音符的Trigger接口,每个接口的音符Notes都有自己的音调Voices。使用synth.scorePlay()方法,可以使该电子琴插件自动进行演奏默认的曲子。

网页电子琴

使用方法

要创建一个音符十分简单:n = new BEEP.Note(),你可以创建不同的音符,例如:new BEEP.Note('E♭')new BEEP.Note('5E♭'),5E♭是第五个八度音阶,那么如何创建一个5E♭音符呢?可以像下面这样创建一个对象:

{  
    A: 440,           //  What Concert A are we tuned to?  
    hertz: 622.253…,  //  Frequency of the note.  
    isFlat: true,     //  Set if ♭. Similar: isSharp and isNatural.  
    letter: "E",      //  Explains itself, no?  
    letterIndex: 4,   //  ['ABCDEFG'].indexOf(letter).  
    modifier: "♭",    //  Set to ♭, ♮, or ♯.   
    name: "E♭",       //  Note name. Will include ♮.   
    nameIndex: 7,     //  ['A♭','A♮','B♭','B♮','C♮'…].indexOf(name)  
    nameSimple: "E♭", //  Note name. Will NOT include ♮.  
    octaveIndex: 5,   //  On a standard piano, 0–8.  
    pianoKeyIndex: 55,//  On a standard piano, 0–87.  
    tuning: "EDO12"   //  Default: Equal Division of Octave into 12 steps.  
}                
              
灵活的参数

你可以创建一个new BEEP.Note('E♭')并接受上面的默认参数来创建音符,你也可以使用一个对象来代替Note中的参数字符串,对象中指定你需要的参数:

new BEEP.Note({ A: 442, name: 'E♭', octaveIndex: 5 })                
              
声音

要如何使音符开始播放呢?使用Voice即可。可以在Note初始化的时候创建一个Voice,在创建的时候还可以传入一个AudioContext参数。和Note一样,Voice的所有参数都是可选的。

voice = new BEEP.Voice()//  We’re running with defaults.
voice.play()//  Listen to that pure 440Hz Concert A.
voice.pause()//  Ok, we’ve had enough.                
              

关于该网页电子琴更加详细的使用方法请参考:https://github.com/stewdio/beep.js