我是一个编码新手(虽然我在一个名为 Garry's Mod 的游戏中编写了表达式 2),我需要一些帮助。我正在尝试将 MIDI 转换为名为 Expression 2 的米老鼠编码语言的字符串。这种“表达式 2”是一款名为 Garry's Mod 的游戏中的编码语言。我的表达式 2 代码允许我编写代码来播放歌曲。
#| 2 3 5 6 7 9 0 = a s f g j k l '
#| | | | | | | | | | | | | | | | | | | | | | | |
#| |C#|D#| |F#|G#|A#| |C#|D#| |F#|G#|A#| |C#|D#| |F#|G#|A#| |C#|
#| |__|__| |__|__|__| |__|__| |__|__|__| |__|__| |__|__|__| |__|
#| | | | | | | | | | | | | | | | | | | | | | | |
#|C |D |E |F |G |A |B |C |D |E |F |G |A |B |C |D |E |F |G |A |B |C | |
#|__|__|__|__|__|__|__|__|__|__|__|__|__|__|__|__|__|__|__|__|__|__|__|
# q w e r t y u i o p [ ] z x c v b n m , . /
这是 E2 代码的寄存器。如果我在 e2 中输入字符串“qwertyu”,芯片将播放音符 CDEFGAB。很长一段时间以来,我不得不手动输入相应的字母键来制作歌曲。
这就是播放 Pachelbel 的歌曲“Canon”的代码的样子
if (first()) {
TrackSounds[1,string] = "synth/sine.wav"
TrackVolume[1,number] = 0.8
TrackStrings[1,string] =
"]]]]]]]]]pppp[[[[]]]]]]]]]pppp[[[[]]]]]ttttyyyyuuuuiiiioooopppp[[[["+
"pppppppiiiiooooppppppppeeeerrrrttttyyyyttttrrrrtttttttttt"+
"iiiiuuuuiiiiiiiiyyyyiiiiuuuuyyyyttttrrrrttttttt"
如果你想知道为什么字母会重复这么多,那是因为(这个)表达式 2 读取每个字母并播放相关的音符 50 个滴答声。不要介意这一点。这都是相对的。如果音符之间有停顿,则停顿长度(停顿是字符串中的空格)与音符长度相关,反之亦然。
我想制作一个程序(或找到一个程序),可以将一个简单的 MIDI 文件转换为我的 e2 代码可识别的字符串。请帮忙。