小伙伴关心的问题:最简单的软件制作程序(快速生成器),本文通过数据整理汇集了最简单的软件制作程序(快速生成器)相关信息,下面一起看看。

最简单的软件制作程序(快速生成器)

我们使用简单的开发工具 aardio ,体积只有几 MB,下载打开就可以编程了,不需要任何复杂的配置。

入门示例

使用 aardio 新建一个源码文件:

输入以下代码,点击「运行」按钮合成并播放乐曲:

import sys.midiOut; //打开播放设备 var midiOut = sys.midiOut();  //播放简谱 midiOut.play("     两只老虎,     1__,2__,3__,1__,      两只老虎,     1__,2__,3__,1__,       *** ,     3__,4__,5__,__,      *** ,     3__,4__,5__,__,     一只没有耳朵,     5_,6_,5_,4_,3__,1__,     一只没有尾巴,     5_,6_,5_,4_,3__,1__,      真奇怪,     2__,5__,1__,__ ");

编程记谱规则

上面的编程记谱法基于简谱记号设计。

所有音符或演奏指令以逗号或换行分开,忽略空格、制表符。

0 表示休止符。

中音使用简谱记号:

"1,2,3,4,5,6,7"

高音在后面加单引号( 可加多个,每个单引号增高八度 ):

"1,2,3,4,5,6,7"

低音在音符前面加单引号( 可加多个,每个单引号降低八度 ):

"1,2,3,4,5,6,7"

数字音符前面加 # 高表示升高半个音,示例:

"#1,__,#5___,#6___"

前面加负号表示消音(停止演奏指定音符),示例:

"-5,-5"

用下划线表示一个延时单位(默认为 250 毫秒 ),前面的音符(或下划线)与后面的下划线可以连起来写,例如:

"5___,5___"

可以用双下划线 ‗ 表示半个下划线表示的延时,例如"5,‗,5‗",多个 ‗ 不允许连着写。

记谱时可以直接调用 midiOut 的成员函数,函数名后必须有括号 () 且必须有参数,例如:

"pitchBend(0.6),1__,2__,3__"

pitchBend 函数用于弯音,参数为表示百分比的小数,0 ~ 0.5 为向下弯音,0.5 ~ 1 为向上弯音。更多可用函数请参考库函数文档。

其他数值表示延时,其他字符串表示字幕。

下面是一个小例子:

import sys.midiOut; var midiOut = sys.midiOut();  //播放简谱 midiOut.play(" 1,150, pitchBend(0.6), 弯音, 500, 延时 500 毫秒, -1,停(音符前加负号表示消音) 1000 ");

转换简谱为程序代码

我们学习一下怎么翻译简谱,先找个简谱:

4/4 表示以四分音符为一拍,每小节有 4 拍。那么我们用 2 个下划线表示一拍(也就是 500 毫秒 ),那么 上面的

我们翻译为代码:

1__,2__,3__,1__,

再看下面的简谱:

这上面的短横线为增时线,表示增加一拍(这里是 500 毫秒,代码里就是增加 2 个下划线 ),所以上面的简谱翻译为代码就是:

3__,4__,5__,__,

然后我们再看简谱:

音符下面的横线是减时线,也就是由一拍减为半拍(这里是 250 毫秒,代码里用一个下划线表示),所以上面的简谱翻译为代码就是:

5_,6_,5_,4_,3__,1__,

最后生成完整源代码如下:

import sys.midiOut; //打开播放设备 var midiOut = sys.midiOut();  //播放简谱 midiOut.play("     1__,2__,3__,1__,      1__,2__,3__,1__,      3__,4__,5__,__,     3__,4__,5__,__,     5_,6_,5_,4_,3__,1__,     5_,6_,5_,4_,3__,1__,      2__,5__,1__,__ ");

要特别注意上面有一个低音 5,音符前面加个单引号表示低音。

自定义音高、拍子快慢

midiOut.play 函数可选用第 2 个参数指定音符 1 对应的 SPN 音名( 可用音名在 sys.midiOut.notes 名字空间定义 ),默认值为 "C4"。可选用第 3 个参数指定单个下划线对应的延时单位(默认为 250 毫秒 )

我们将上面示例的音符 1 改为 "E4" (其他数字音符会自动调整音高),一个延时单位改为 125 毫秒(加快一倍),代码如下:

import sys.midiOut; //打开播放设备 var midiOut = sys.midiOut();  //播放简谱 midiOut.play("     两只老虎,     1__,2__,3__,1__,      两只老虎,     1__,2__,3__,1__,       *** ,     3__,4__,5__,__,      *** ,     3__,4__,5__,__,     一只没有耳朵,     5_,6_,5_,4_,3__,1__,     一只没有尾巴,     5_,6_,5_,4_,3__,1__,      真奇怪,     2__,5__,1__,__ ","E4",125);

请运行一下,听一听有什么区别。

绘制桌面歌词

下面我们再小小改进一下,播放音乐时在桌面上显示漂亮的歌词。

源码如下:

//创建桌面歌词窗口 import win.util.lyric; var lyric = win.util.lyric(); lyric.show(); //打开播放设备 import sys.midiOut; var midiOut = sys.midiOut();  //定义显示歌词的函数 midiOut.log = function(str){     lyric.text = str;  } //播放简谱 midiOut.play("     两只老虎,     1__,2__,3__,1__,      两只老虎,     1__,2__,3__,1__,       *** ,     3__,4__,5__,__,      *** ,     3__,4__,5__,__,     一只没有耳朵,     5_,6_,5_,4_,3__,1__,     一只没有尾巴,     5_,6_,5_,4_,3__,1__,      真奇怪,     2__,5__,1__,__ ");

按「运行」按钮,显示效果如下:

多线程

下面创建独立线程合成并播放音乐,源码:

//合成并输出音乐 import win.util.lyric; var lyric = win.util.lyric(); lyric.show(); //创建独立线程 thread.invoke( function(lyric){     import sys.midiOut;     var midiOut = sys.midiOut();              //指定字幕回显函数     midiOut.log = function(v) lyric.text = v;          midiOut.play("         两只老虎,         1__,2__,3__,1__,          两只老虎,         1__,2__,3__,1__,           *** ,         3__,4__,5__,__,          *** ,         3__,4__,5__,__,         一只没有耳朵,         5_,6_,5_,4_,3__,1__,         一只没有尾巴,         5_,6_,5_,4_,3__,1__,          真奇怪,         2__,5__,1__,__     ");       lyric.close(); },lyric); win.loopMessage();

使用 SPN 音名记谱

编程记谱时可使用 sys.midiOut.notes 名字空间指定的所有音名,这些音名使用科学音高记号(Scientific pitch notation)。

音名与音符的对应关系如下:

音名

唱名

简谱

C4

do

1

D4

re

2

E4

mi

3

F4

fa

4

G4

sol

5

A4

la

6

B4

ti (si,xi)

7

当然音名与唱名的对应关系可以变更,这里先不用管这些。音名后面的数值越大表示越高的音,例如 C4( 中央C ,简谱中的 1 ) 高八度就是 C5( 高音 do,简谱 1 上面加一点),低八度的音就是 C3 ( 低音 do,简谱 1 下面加一点)。

注意:

SPN 音名中的 -1 省略SPN 音名中的升号 ♯(Sharp) 用小写 s 替代

例如:C-1♯ 略写为 Cs 。

示例:

import sys.midiOut; var midiOut = sys.midiOut(); midiOut.play("      C4,_,_,D4,_,_,E4,_,_,C4,_,_,      C4,_,_,D4,_,_,E4,_,_,C4,_,_,      E4,_,_,F4,_,_,G4,_,_,_,_,      E4,_,_,F4,_,_,G4,_,_,_,_,      G4,_,A4,_,G4,_,F4,_,E4,_,_,C4,_,_,      G4,_,A4,_,G4,_,F4,_,E4,_,_,C4,_,_,      D4,_,_,G3,_, _,C4,     1000 ");

也可以这样写:

import sys.midiOut; //打开音名空间 namespace sys.midiOut.notes{           //记谱(这里下划线与音符不能连起来,也不能使用数字音符)     drm = {         "两只老虎",         C4,_,_,D4,_,_,E4,_,_,C4,_,_,         "两只老虎",         C4,_,_,D4,_,_,E4,_,_,C4,_,_,         " *** ",         E4,_,_,F4,_,_,G4,_,_,_,_,         " *** ",         E4,_,_,F4,_,_,G4,_,_,_,_,         "一只没有耳朵",         G4,_,A4,_,G4,_,F4,_,E4,_,_,C4,_,_,         "一只没有尾巴",         G4,_,A4,_,G4,_,F4,_,E4,_,_,C4,_,_,         "真奇怪",         D4,_,_,G3,_, _,C4,         //用下面的方式调用函数,小于等于 127 的延时必须调用 delay 函数         {"delay",1000}      }  } var midiOut = sys.midiOut(); midiOut.play( sys.midiOut.notes.drm );

切换乐器

我们还可以选择不同的乐器,代码示例:

import sys.midiOut; var midiOut = sys.midiOut();  //选择八音盒,参数为乐器编号 midiOut.changeInstrument(10);

在谱子中也可以切换乐器,例如:

import sys.midiOut; var midiOut = sys.midiOut(); midiOut.play( " changeInstrument(10), 1___, 2___, 3___, " );

可用的乐器编号为 0~127 范围的数值,全部编号如下:

//钢琴 0 大钢琴(声学钢琴) 1 明亮的钢琴 2 电钢琴 3 酒吧钢琴 4 柔和的电钢琴 5 加合唱效果的电钢琴 6 羽管键琴(拨弦古钢琴) 7 科拉维科特琴(击弦古钢琴) //色彩打击乐器 8 钢片琴 9 钟琴 10 八音盒 11 颤音琴 12 马林巴 13 木琴 14 管钟 15 大扬琴 //风琴 16 击杆风琴 17 打击式风琴 18 摇滚风琴 19 教堂风琴 20 簧管风琴 21 手风琴 22 口琴 23 探戈手风琴 //吉他 24 尼龙弦吉他 25 钢弦吉他 26 爵士电吉他 27 清音电吉他 28 闷音电吉他 29 加驱动效果的电吉他 30 加失真效果的电吉他 31 吉他和音 //贝司 32 大贝司(声学贝司) 33 电贝司(指弹) 34 电贝司(拨片) 35 无品贝司 36 掌击1 37 掌击2 38 电子合成1 39 电子合成2 //弦乐 40 小提琴 41 中提琴 42 大提琴 43 低音大提琴 44 弦乐群颤音音色 45 弦乐群拨弦音色 46 竖琴 47 定音鼓 //合奏/合唱 48 弦乐合奏音色1 49 弦乐合奏音色2 50 合成弦乐合奏音色1 51 合成弦乐合奏音色2 52 人声合唱“啊” 53 人声“嘟” 54 合成人声 55 管弦乐敲击齐奏 //铜管 56 小号 57 长号 58 大号 59 加弱音器小号 60 法国号(圆号) 61 铜管组(铜管乐器合奏音色) 62 合成铜管音色1 63 合成铜管音色2 //簧管 64 高音萨克斯风 65 次中音萨克斯风 66 中音萨克斯风 67 低音萨克斯风 68 双簧管 69 英国管 70 巴松(大管) 71 单簧管(黑管) //笛 72 短笛 73 长笛 74 竖笛 75 排箫 76 Bottle Blow 77 日本尺八 78 口哨声 79 奥卡雷那 //合成主音 80 合成主音1(方波) 81 合成主音2(锯齿波) 82 合成主音3 83 合成主音4 84 合成主音5 85 合成主音6(人声) 86 合成主音7(平行五度) 87 +合成主音8(贝司加主音) //合成音色 88 合成音色1(新世纪) 89 合成音色2(温暖) 90 合成音色3 91 合成音色4(合唱) 92 合成音色5 93 合成音色6(金属声) 94 合成音色7(光环) 95 合成音色8 //合成效果 96 雨声 97 音轨 98 水晶 99 大气 100 明亮 101 鬼怪 102 回声 103 科幻 //民间乐器 104 西塔尔(印度) 105 班卓琴(美洲) 106 三昧线(日本) 107 十三弦筝(日本) 108 卡林巴 109 风笛 110 民族提琴 111 山奈 //打击乐器 112 叮当铃 113 Agogo 钟 114 钢鼓 115 木鱼 116 太鼓 117 通通鼓 118 合成鼓 119 铜钹 //声音效果 120 吉他换把杂音 121 呼吸声 122 海浪声 123 鸟鸣 124 电话铃 125 直升机 126 鼓掌声 127 Q 声

更多最简单的软件制作程序(快速生成器)相关信息请关注本站,本文仅仅做为展示!