Console Library 4.7.0
A header-only library that makes C++ simple
Loading...
Searching...
No Matches
melody.h File Reference

Windows 平台 MIDI 音乐播放库,支持乐器选择、音符播放和 BPM 控制。 More...

#include <windows.h>
#include <mmsystem.h>
#include <thread>

Go to the source code of this file.

Classes

struct  console::Note
 表示一个音符,包含音高、时值和力度。 More...
class  console::MIDI
 MIDI 输出设备控制器,支持乐器切换、音量调节、同步/异步播放音符序列。 More...

Namespaces

namespace  console
 本库所有组件所在的顶层命名空间。
namespace  pitches
 标准 MIDI 音高常量,包含中央 C4=60 的所有半音音高,以及休止符 REST。
namespace  console::pitches

Enumerations

enum class  console::Instrument : unsigned char {
  console::AcousticGrandPiano = 0 , console::BrightAcousticPiano = 1 , console::ElectricGrandPiano = 2 , console::HonkyTonkPiano = 3 ,
  console::ElectricPiano1 = 4 , console::ElectricPiano2 = 5 , console::Harpsichord = 6 , console::Clavinet = 7 ,
  console::Celesta = 8 , console::Glockenspiel = 9 , console::MusicBox = 10 , console::Vibraphone = 11 ,
  console::Marimba = 12 , console::Xylophone = 13 , console::TubularBells = 14 , console::Dulcimer = 15 ,
  console::DrawbarOrgan = 16 , console::PercussiveOrgan = 17 , console::RockOrgan = 18 , console::ChurchOrgan = 19 ,
  console::ReedOrgan = 20 , console::Accordion = 21 , console::Harmonica = 22 , console::TangoAccordion = 23 ,
  console::AcousticGuitarNylon = 24 , console::AcousticGuitarSteel = 25 , console::ElectricGuitarJazz = 26 , console::ElectricGuitarClean = 27 ,
  console::ElectricGuitarMuted = 28 , console::OverdrivenGuitar = 29 , console::DistortionGuitar = 30 , console::GuitarHarmonics = 31 ,
  console::AcousticBass = 32 , console::ElectricBassFinger = 33 , console::ElectricBassPick = 34 , console::FretlessBass = 35 ,
  console::SlapBass1 = 36 , console::SlapBass2 = 37 , console::SynthBass1 = 38 , console::SynthBass2 = 39 ,
  console::Violin = 40 , console::Viola = 41 , console::Cello = 42 , console::Contrabass = 43 ,
  console::TremoloStrings = 44 , console::PizzicatoStrings = 45 , console::OrchestralHarp = 46 , console::Timpani = 47 ,
  console::StringEnsemble1 = 48 , console::StringEnsemble2 = 49 , console::SynthStrings1 = 50 , console::SynthStrings2 = 51 ,
  console::ChoirAahs = 52 , console::VoiceOohs = 53 , console::SynthVoice = 54 , console::OrchestraHit = 55 ,
  console::Trumpet = 56 , console::Trombone = 57 , console::Tuba = 58 , console::MutedTrumpet = 59 ,
  console::FrenchHorn = 60 , console::BrassSection = 61 , console::SynthBrass1 = 62 , console::SynthBrass2 = 63 ,
  console::SopranoSax = 64 , console::AltoSax = 65 , console::TenorSax = 66 , console::BaritoneSax = 67 ,
  console::Oboe = 68 , console::EnglishHorn = 69 , console::Bassoon = 70 , console::Clarinet = 71 ,
  console::Piccolo = 72 , console::Flute = 73 , console::Recorder = 74 , console::PanFlute = 75 ,
  console::BlownBottle = 76 , console::Shakuhachi = 77 , console::Whistle = 78 , console::Ocarina = 79 ,
  console::Lead1Square = 80 , console::Lead2Sawtooth = 81 , console::Lead3Calliope = 82 , console::Lead4Chiff = 83 ,
  console::Lead5Charang = 84 , console::Lead6Voice = 85 , console::Lead7Fifths = 86 , console::Lead8BassLead = 87 ,
  console::Pad1NewAge = 88 , console::Pad2Warm = 89 , console::Pad3Polysynth = 90 , console::Pad4Choir = 91 ,
  console::Pad5Bowed = 92 , console::Pad6Metallic = 93 , console::Pad7Halo = 94 , console::Pad8Sweep = 95 ,
  console::Fx1Rain = 96 , console::Fx2Soundtrack = 97 , console::Fx3Crystal = 98 , console::Fx4Atmosphere = 99 ,
  console::Fx5Brightness = 100 , console::Fx6Goblins = 101 , console::Fx7Echoes = 102 , console::Fx8SciFi = 103 ,
  console::Sitar = 104 , console::Banjo = 105 , console::Shamisen = 106 , console::Koto = 107 ,
  console::Kalimba = 108 , console::Bagpipe = 109 , console::Fiddle = 110 , console::Shanai = 111 ,
  console::TinkleBell = 112 , console::Agogo = 113 , console::SteelDrums = 114 , console::Woodblock = 115 ,
  console::TaikoDrum = 116 , console::MelodicTom = 117 , console::SynthDrum = 118 , console::ReverseCymbal = 119 ,
  console::GuitarFretNoise = 120 , console::BreathNoise = 121 , console::Seashore = 122 , console::BirdTweet = 123 ,
  console::TelephoneRing = 124 , console::Helicopter = 125 , console::Applause = 126 , console::Gunshot = 127
}
 128 种 GM 标准乐器编号(0-127)。 More...

Variables

const int console::pitches::REST = -1
 休止符(不发音,仅占用时值)
自然音(C D E F G A B)
const int console::pitches::C0 = 12
const int console::pitches::D0 = 14
const int console::pitches::E0 = 16
const int console::pitches::F0 = 17
const int console::pitches::G0 = 19
const int console::pitches::A0 = 21
const int console::pitches::B0 = 23
const int console::pitches::C1 = 24
const int console::pitches::D1 = 26
const int console::pitches::E1 = 28
const int console::pitches::F1 = 29
const int console::pitches::G1 = 31
const int console::pitches::A1 = 33
const int console::pitches::B1 = 35
const int console::pitches::C2 = 36
const int console::pitches::D2 = 38
const int console::pitches::E2 = 40
const int console::pitches::F2 = 41
const int console::pitches::G2 = 43
const int console::pitches::A2 = 45
const int console::pitches::B2 = 47
const int console::pitches::C3 = 48
const int console::pitches::D3 = 50
const int console::pitches::E3 = 52
const int console::pitches::F3 = 53
const int console::pitches::G3 = 55
const int console::pitches::A3 = 57
const int console::pitches::B3 = 59
const int console::pitches::C4 = 60
const int console::pitches::D4 = 62
const int console::pitches::E4 = 64
const int console::pitches::F4 = 65
const int console::pitches::G4 = 67
const int console::pitches::A4 = 69
const int console::pitches::B4 = 71
const int console::pitches::C5 = 72
const int console::pitches::D5 = 74
const int console::pitches::E5 = 76
const int console::pitches::F5 = 77
const int console::pitches::G5 = 79
const int console::pitches::A5 = 81
const int console::pitches::B5 = 83
const int console::pitches::C6 = 84
const int console::pitches::D6 = 86
const int console::pitches::E6 = 88
const int console::pitches::F6 = 89
const int console::pitches::G6 = 91
const int console::pitches::A6 = 93
const int console::pitches::B6 = 95
const int console::pitches::C7 = 96
const int console::pitches::D7 = 98
const int console::pitches::E7 = 100
const int console::pitches::F7 = 101
const int console::pitches::G7 = 103
const int console::pitches::A7 = 105
const int console::pitches::B7 = 107
const int console::pitches::C8 = 108
const int console::pitches::D8 = 110
const int console::pitches::E8 = 112
const int console::pitches::F8 = 113
const int console::pitches::G8 = 115
const int console::pitches::A8 = 117
const int console::pitches::B8 = 119
const int console::pitches::C9 = 120
const int console::pitches::D9 = 122
const int console::pitches::E9 = 124
const int console::pitches::F9 = 125
const int console::pitches::G9 = 127
变化音(升号 #)
const int console::pitches::Cs0 = 13
const int console::pitches::Ds0 = 15
const int console::pitches::Fs0 = 18
const int console::pitches::Gs0 = 20
const int console::pitches::As0 = 22
const int console::pitches::Cs1 = 25
const int console::pitches::Ds1 = 27
const int console::pitches::Fs1 = 30
const int console::pitches::Gs1 = 32
const int console::pitches::As1 = 34
const int console::pitches::Cs2 = 37
const int console::pitches::Ds2 = 39
const int console::pitches::Fs2 = 42
const int console::pitches::Gs2 = 44
const int console::pitches::As2 = 46
const int console::pitches::Cs3 = 49
const int console::pitches::Ds3 = 51
const int console::pitches::Fs3 = 54
const int console::pitches::Gs3 = 56
const int console::pitches::As3 = 58
const int console::pitches::Cs4 = 61
const int console::pitches::Ds4 = 63
const int console::pitches::Fs4 = 66
const int console::pitches::Gs4 = 68
const int console::pitches::As4 = 70
const int console::pitches::Cs5 = 73
const int console::pitches::Ds5 = 75
const int console::pitches::Fs5 = 78
const int console::pitches::Gs5 = 80
const int console::pitches::As5 = 82
const int console::pitches::Cs6 = 85
const int console::pitches::Ds6 = 87
const int console::pitches::Fs6 = 90
const int console::pitches::Gs6 = 92
const int console::pitches::As6 = 94
const int console::pitches::Cs7 = 97
const int console::pitches::Ds7 = 99
const int console::pitches::Fs7 = 102
const int console::pitches::Gs7 = 104
const int console::pitches::As7 = 106
const int console::pitches::Cs8 = 109
const int console::pitches::Ds8 = 111
const int console::pitches::Fs8 = 114
const int console::pitches::Gs8 = 116
const int console::pitches::As8 = 118
const int console::pitches::Cs9 = 121
const int console::pitches::Ds9 = 123
const int console::pitches::Fs9 = 126

Detailed Description

Windows 平台 MIDI 音乐播放库,支持乐器选择、音符播放和 BPM 控制。

该模块封装了 Windows Multimedia API (winmm),提供 MIDI 输出功能。 支持 128 种 GM 标准乐器,可播放单音、音符序列,并支持异步播放。

Warning
仅支持 Windows 平台,需要链接 winmm 库(如 -lwinmm 或 winmm.lib)。
Author
MrXie1109
Date
2026