Clip
returns: Array
notes {String | Array}
pattern {String}
accentMap {String | Array}
arpegiate {Boolean | Object}
通过这个方法可以创建一个音或者一小段音乐,或者是一小段和弦,可以通过字面量对象的形式来传递参数
var scribble = require('scribbletune');
// 创建一个c4的音阶,并且定义它的节拍
var clip = scribble.clip({
notes: 'c4', //音阶
pattern: 'x________________' //节拍
});
//渲染生成midi文件
scribble.midi(clip, 'hats.mid');
在钢琴窗中,我们可以看到一共有C0-C10的音区,这些包含了低音区,中音区,高音区,我们可以根据需要来调整数值,C4到C5之间还有D4,E4等
notes: 'c4',
pattern:'x___'
我们通过使用_来表示音的延续,使用-来表示音的断开
notes: 'c4 d4 e4', // Or ['c4',d4', 'e4']
pattern: 'x_x_x'
//可以看作是c4_d4_e4
通过设置accentMap可以告诉Clip当前音阶的强度。这是一个x和 - (连字符)字符串。一个x意味着力度更强,一个-(连字符)意味着力度变弱。
这是你如何使用accentMap。在下面的例子中,我们有一个模式,指示Scribbletune的Clip方法在16个节拍条的每个节拍上创建一个音符。然后,它继续设置一个accentMap参数,该参数指示哪个音符点击更难x,哪个点击更柔和-
var scribble = require('scribbletune');
var clip = scribble.clip({
notes: 'c3',
pattern: 'xxxxxxxxxxxxxxxx',
accentMap: 'x---x-x-x---x-x-'
});
scribble.midi(clip, 'hats.mid');
accentMap也可以由单个音符值设置。您可以传递一组数值来表明当前音的强弱。
使用String.repeat
功能,您可以快速将之前的设置重复
var scribble = require('scribbletune');
var clip = scribble.clip({
notes: 'c4',
pattern: 'x'.repeat(16), //将x重复16次,等价于xxxxxxxxxxxxxxxx
accentMap: [5, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 127, 127, 127]
});
scribble.midi(clip);
accentHi {Number} default 127
如果你使用一个字符串来设置一个accentMap,那么这个属性可以让你定义每个x的级别。
accentLow {Number} default 70
如果你使用的字符串设置一个accentMap,那么这个属性可以让你定义每个级别- 。
shuffle (Boolean) default: false
设置此属性将随机将您在Clip方法中设置notes的顺序排序。
sizzle {Boolean}
使音符更具有弹性感
noteLength {String}
恶意通过设置其属性来调节节拍,例如
var scribble = require('scribbletune');
//音符是节拍,四分音符为一排,一拍的长短会根据歌曲来调整
// 16分音符的节拍,也是默认节拍
var clip1 = scribble.clip({
notes: 'c4',
pattern: 'x'.repeat(12)
});
// 通过noteLength将默认的16分设置为32分
var clip2 = scribble.clip({
notes: 'c4',
pattern: 'x_xxx_x_',
noteLength: '1/32'
});
scribble.midi(clip1.concat(clip2, 'music.mid'));
arpegiate {Boolean | Object}
将这个属性设置为true
时,会自动把音符转换为八分音符
var scribble = require('scribbletune');
var clip = scribble.clip({
notes: 'c3',
pattern: 'x_'.repeat(8),
arpegiate: true
});
scribble.midi(clip);
同时也可以通过设置对象的形式来设置其的节拍与间隔
var scribble = require('scribbletune');
var clip = scribble.clip({
notes: 'c3',
pattern: 'x_'.repeat(8),
arpegiate: {
distance: 7,
steps: 11
}
});
scribble.midi(clip);
scale/modereturns: Array
可以快速的构建notes
root {String}
scale {String}
octave {Number} default: 4
addRootFromNextOctave {Boolean} default: true
var scribble = require('scribbletune');
var cMinor = scribble.scale('c minor'); // [ 'c4', 'd4', 'd#4', 'f4', 'g4', 'g#4', 'a#4', 'c5' ]
cMinor = scribble.mode('c minor'); // [ 'c4', 'd4', 'd#4', 'f4', 'g4', 'g#4', 'a#4', 'c5' ]
cMinor = scribble.mode('c aeolian 4'); // [ 'c4', 'd4', 'd#4', 'f4', 'g4', 'g#4', 'a#4', 'c5' ]
// 默认是c4,以上直接获取c4-c5之间的音符
cMinor = scribble.mode('c', 'aeolian', 3); // [ 'c3', 'd3', 'd#3', 'f3', 'g3', 'g#3', 'a#3', 'c4' ]
// 获取c3-c4之间的音符
chord
可以直接通过和弦名来获取和弦
var scribble = require('scribbletune');
var clip = scribble.clip({
// C和弦 F和弦 G和弦 C和弦,都是大三和弦
notes: 'CMaj, FMaj, GMaj, CMaj',
pattern: 'x---'.repeat(4)
});
scribble.midi(clip, 'chords.mid');
以下为钢琴窗中的显示,这种为柱式和弦
另外一个就是可以通过chord来获取单个和弦的值,返回数组
var scribble = require('scribbletune');
var cMajorChord = scribble.chord('CMaj'); // [ 'c4', 'e4', 'g4' ]
通过listChords来获取所有可以用的和弦
var scribble = require('scribbletune');
var availableChords = scribble.listChords();
// 列表里的所有和弦
以下是可以用的和弦列表以及名称替代:
- 6th | Sixth | sixth
- maj | Maj
- min | Min | m
- sus2 | Sus2
- sus4 | Sus4
- maj7 | Maj7
- min7 | Min7
- dom7 | Dom7 | 7th
- dim | Dim
- dim7 | Dim7
- aug | Aug