Пример миди музыки
Это простенький пример создания миди музыки. Конечно это игрушечная поделка, хотя может кому-то станет отправной точкой. Звучание под WinXp и Win7 разные , я делал под семерку.
Платформа: Windows
Автор: Станислав Будинов
#INCLUDE "windows.bi" #INCLUDE "win/mmsystem.bi" Dim Shared hMidiOut As hMidiOut ' массив с нотами Dim Shared M(...) As Integer=>{150,49,53,63,61,50,55,60,58,51,55,63,63,50,55,60,58,52,58,55,52,55,55,55,55,58,61,62,56,57} 'Структура для команд Union midimsg dw As Uinteger b(2) As Ubyte End Union ' проверяем миди устройства в системе If midiOutGetNumDevs = 0 Then End ' Открываем или создаем устройство миди midiOutOpen @hMidiOut, -1, 0, 0, 0 Dim d As midimsg ' создаем объект структуры d.b(2)=64 ' в нашем примере громкость будет постоянной Dim UB As Integer = Ubound(M)' узнаем сколько ячеек в массиве For i As Integer = 0 To UB Dim T As Double ' переменная для таймера d.b(0)=&h80 ' выключаем звучание чтобы не было наложения звука ' отправляем команду выключения midiOutShortMsg hMidiOut, d.dw d.b(0)=&h90 ' включаем звук 'устанавливаем инструмент SynthStrings1 midiOutShortMsg hMidiOut, &hC0+&h100*50 d.b(1)=M(i) ' берем ноту из массива midiOutShortMsg hMidiOut, d.dw ' проигрываем звук 'устанавливаем инструмент Koto midiOutShortMsg hMidiOut, &hC0+&h100*107 d.b(1)=M(i)' берем ноту из массива midiOutShortMsg hMidiOut, d.dw ' проигрываем звук 'устанавливаем инструмент SynthDrum midiOutShortMsg hMidiOut, &hC0+&h100*118 d.b(1)=M(i)' берем ноту из массива midiOutShortMsg hMidiOut, d.dw ' проигрываем звук 'устанавливаем инструмент BowedPad midiOutShortMsg hMidiOut, &hC0+&h100*92 d.b(1)=M(i)' берем ноту из массива midiOutShortMsg hMidiOut, d.dw ' проигрываем звук If i=UB Then Sleep(650) ' ограничиваем время звучания завершающей ноты T = Timer Do: Loop Until Timer >= T + .4 ' время звучания каждой ноты Next midiOutClose hMidiOut 'закрываем устройство /'СПИСОК ИНСТРУМЕНТОВ 0. AcousticGrandPiano скрипка 1. BrightAcousticPiano 2. ElectricGrandPiano 3. HonkyTonkPiano 4. ElectricPiano1 5. ElectricPiano2 6. Harpsichord 7. Clavinet 8. Celesta 9. Glockenspiel 10. MusicBox 11. Vibraphone 12. Marimba 13. Xylophone 14. TubularBells 15. Dulcimer 16. DrawbarOrgan 17. PercussiveOrgan 18. RockOrgan 19. ChurchOrgan 20. ReedOrgan 21. Accordion 22. Harmonica 23. TangoAccordion 24. AcousticNylonGuitar 25. AcousticSteelGuitar 26. JazzElectricGuitar 27. CleanElectricGuitar 28. MutedElectricGuitar 29. OverdrivenGuitar 30. DistortionGuitar 31. GuitarHarmonics 32. AcousticBass 33. FingeredElectricBass 34. PickedElectricBass 35. FretlessBass 36. SlapBass1 37. SlapBass2 38. SynthBass1 39. SynthBass2 40. Violin 41. Viola 42. Cello 43. Contrabass 44. TremoloStrings 45. PizzicatoStrings 46. OrchestralHarp 47. Timpani 48. StringEnsemble1 49. StringEnsemble2 50. SynthStrings1 51. SynthStrings2 52. ChoirAahs 53. VoiceOohs 54. SynthVoice 55. OrchestraHit 56. Trumpet 57. Trombone 58. Tuba 59. MutedTrumpet 60. FrenchHorn 61. BrassSection 62. SynthBrass1 63. SynthBrass2 64. SopranoSax 65. AltoSax 66. TenorSax 67. BaritoneSax 68. Oboe 69. EnglishHorn 70. Bassoon 71. Clarinet 72. Piccolo 73. Flute 74. Recorder 75. PanFlute 76. BlownBottle 77. Shakuhachi 78. Whistle 79. Ocarina 80. SquareLead 81. SawtoothLead 82. CalliopeLead 83. ChiffLead 84. CharangLead 85. VoiceLead 86. FifthsLead 87. BassandLead 88. NewAgePad 89. WarmPad 90. PolySynthPad 91. ChoirPad 92. BowedPad 93. MetallicPad 94. HaloPad 95. SweepPad 96. SynthFXRain 97. SynthFXSoundtrack 98. SynthFXCrystal 99. SynthFXAtmosphere 100. SynthFXBrightness 101. SynthFXGoblins 102. SynthFXEchoes 103. SynthFXSciFi 104. Sitar 105. Banjo 106. Shamisen 107. Koto 108. Kalimba 109. Bagpipe 110. Fiddle 111. Shanai 112. TinkleBell 113. Agogo 114. SteelDrums 115. Woodblock 116. TaikoDrum 117. MelodicTom 118. SynthDrum 119. ReverseCymbal 120. GuitarFretNoise 121. BreathNoise 122. Seashore 123. BirdTweet 124. TelephoneRing 125. Helicopter 126. Applause 127. Gunshot'/