cnCalc计算器论坛

 找回密码
 注册
搜索
查看: 4145|回复: 5

HP39GS奏乐

[复制链接]
发表于 2017-10-1 18:38:29 | 显示全部楼层 |阅读模式
用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
A  B C
1 0 1
1
0 1
5
0 1
5
0 1
6
0 1
6 0 1
5 0 2

小星星.jpg
 楼主| 发表于 2017-10-1 18:45:13 | 显示全部楼层
这个谱看来是最简单的了。
继续完善的话,乐谱放在不常用的M9里面,便于长期保存。
所有乐谱都放在一个矩阵里面,做好分界。
改for语句就可以选歌。
 楼主| 发表于 2017-10-1 19:20:53 | 显示全部楼层
简谱上有 1=C,这个算基频吧,也要考虑进去。

我在考虑曲谱存入数列List,使用正负号,十位数,小数记录附加信息,
正负号---升降调
十位----升降次数
个位----1234567
小数:每个调时间,默认1个单位,即没有小数。
-12.025表示降1个7,时间1/4
5.2,时间2个单位
3 时间一个单位
这样输入比较快一点。矩阵太麻烦了。


 楼主| 发表于 2017-10-1 21:04:36 | 显示全部楼层
使用数列储存的好处是,输入方便,占用内存少。我要继续优化数列表示的方法。

整数只一位1234567
升降调和持续时间都放在小数里。
 楼主| 发表于 2017-10-1 21:22:40 | 显示全部楼层
我在学习乐谱知识,大有收获。以后HP39gs可以帮我们唱新歌了
 楼主| 发表于 2017-10-3 21:07:30 | 显示全部楼层
第二版采用数列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省略。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|cnCalc计算器论坛

GMT+8, 2024-3-29 17:19 , Processed in 0.053092 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表