如何用MIDI库编写程序演奏《晴天》这首歌曲?

摘要:那些在MIDI库里徘徊的十六分音符 终究没能拼成告白的主歌 我把周杰伦的《晴天》写成C++的类在每个midiEvent里埋藏故事的小黄花 调试器的断点比初恋更漫长而青春不过是一串未导出的cmake工程文件
那些在MIDI库里徘徊的十六分音符 终究没能拼成告白的主歌 我把周杰伦的《晴天》写成C++的类 在每个midiEvent里埋藏故事的小黄花 调试器的断点比初恋更漫长 而青春不过是一串未导出的cmake工程文件 在堆栈溢出的夜晚 终将明白 有些旋律永远停在#pragma once的注释里 有些人永远停在未定义的引用里 或许你我的心跳终归运行在不同的时钟频率 却愿始终记得如何编译出一场永不落幕的晴天                   --题记 就像在题记里说的一样,这是一个从未导出成功的工程文件。 所以如果你也想听听,可以在PowerShell里运行以下指令: git clone https://github.com/TwilightLemon/SunnyDays cd SunnyDays mkdir build cd build cmake .. -G "MinGW Makefiles" mingw32-make ./SunnyDays.exe 没环境?巧了,她也如是说。 幸运的话能得到以下效果: 下面来简单讲讲如何使用C++和MIDI库作曲吧。 一、开始工作 1. 引入MIDI库和相关控制类 在CMakeLists.txt中: target_link_libraries(SunnyDays winmm) 在MIDIHelper.h中: #include <windows.h> #pragma comment(lib,"winmm.lib") 定义Scale(音阶), Instrument(乐器, 仅包括部分)等枚举。我把Drum单独提了出来。 enum Scale { X1 = 36, X2 = 38, X3 = 40, X4 = 41, X5 = 43, X6 = 45, X7 = 47, L1 = 48, L2 = 50, L3 = 52, L4 = 53, L5 = 55, L6 = 57, L7 = 59, M1 = 60, M2 = 62, M3 = 64, M4 = 65, M5 = 67, M6 = 69, M7 = 71, H1 = 72, H2 = 74, H3 = 76, H4 = 77, H5 = 79, H6 = 81, H7 = 83, LOW_SPEED = 500, MIDDLE_SPEED = 400, HIGH_SPEED = 300, _ = 0XFF }; enum Drum{ BassDrum = 36, SnareDrum = 38, ClosedHiHat = 42, OpenHiHat = 46 }; enum Instrument{ AcousticGrandPiano = 0, BrightAcousticPiano = 1, ElectricGrandPiano = 2, HonkyTonkPiano = 3, ElectricPiano1 = 4, ElectricPiano2 = 5 }; 一些基础方法,包括初始化/关闭设备、设置参数、播放单个音符和播放和弦等。
阅读全文