HP39GS奏乐
用39GS编了一个奏谱的小程序,还在调校中。主要调校基频和时间程序如下:
for I=1 to 42: #有几个谱就用多少数字
beep 50+(21+M1(1,1)+7*M1(1,2))*30 ; M1(1,2) / 2.5:
#50,21用来调基频,其实可以合并的;7, 30用于调音阶;1/2.5每个谱的持续时间
END:
乐谱存在矩阵M1里,3列,有多少谱就多少行。
第一列:简谱基本数字1 2 3 4 5 6 7
第二列:简谱升调或降调...-2,-1,0,1,2...
第三列:节拍时间,0.25, 0.5, 1,2,3, 4......
如图中乐谱,可以存为:
M1
AB C
1 0 1
1 0 1
5 0 1
5 0 1
6 0 1
6 0 1
5 0 2
这个谱看来是最简单的了。
继续完善的话,乐谱放在不常用的M9里面,便于长期保存。
所有乐谱都放在一个矩阵里面,做好分界。
改for语句就可以选歌。
简谱上有 1=C,这个算基频吧,也要考虑进去。
我在考虑曲谱存入数列List,使用正负号,十位数,小数记录附加信息,
正负号---升降调
十位----升降次数
个位----1234567
小数:每个调时间,默认1个单位,即没有小数。
-12.025表示降1个7,时间1/4
5.2,时间2个单位
3 时间一个单位
这样输入比较快一点。矩阵太麻烦了。
使用数列储存的好处是,输入方便,占用内存少。我要继续优化数列表示的方法。
整数只一位1234567
升降调和持续时间都放在小数里。 我在学习乐谱知识,大有收获。以后HP39gs可以帮我们唱新歌了 第二版采用数列list保存乐谱,每个音一个数,大大节约内存。也方便输入。
整数一位,升降调第一位小数,持续时第二一位小数
整数 1 2 3 4 5 6 7即简谱上的数字。
第一位小数1234分别代表降1234档,6789代表升1234档,0表示原调。
第二位小数1234表示1,2,3,4个1/4拍。789分别为底下1,2,3道杠,即1/2,1/4,1/8,通常1省略。
页:
[1]