0 голосов
спросил от в категории VBNET
Ummm ... В Windows MultiMedia нет никаких инструментов. MIDI предназначен для использования с инструментами REAL с MIDI-интерфейсами. Это касается таких вещей, как воспроизведение MIDI-файлов на реальных инструментах. (MIDI) Музыкальный инструмент Цифровой интерфейс.

Ни Windows, ни .NET Framework не имеют ничего, что обеспечит звуки различных инструментов.

Вам понадобится найти стороннюю библиотеку для этого.

Ваш ответ

Отображаемое имя (по желанию):
Конфиденциальность: Ваш электронный адрес будет использоваться только для отправки уведомлений.
0 голосов
ответил от
Я нашел ответ, поэтому можно использовать множество разных инструментов в vb6
Private Declare Function midiOutShortMsg Lib "winmm.dll" (ByVal hMidiOut As Long, ByVal dwMsg As Long) As Long Private Declare Function midiOutOpen Lib "winmm.dll" (lphMidiOut As Long, ByVal udeviceid As Long, ByVal dwCallback As Long, ByVal dwInstance As Long, ByVal dwFlags As Long) As Long Private Declare Function midiOutClose Lib "winmm.dll" (ByVal hMidiOut As Long) As Long Dim Note1Play(200)   As Long, Length1_Note(200)  As Single Dim NUMBEROFNOTES As Integer Dim ThisTime Dim y As Integer Dim handleMidiOut As Long Dim ret As Integer Dim Instrument As Integer Private Sub Form_Load()         OpenMidiOut (-1) 'device id For midi mapper     Instrument = 14     ret = midiOutShortMsg(handleMidiOut, (256 * Instrument) + 192)         Happy_Birthday         For y = 1 To NUMBEROFNOTES       Call PlayNote(0, Note1Play(y), 127)       ThisTime = Timer       Do       Loop While ThisTime + Length2_Note(y) * 0.7 > Timer       Call StopNote(0, Note1Play(y), 127)    Next y       Call CloseMidiOut        End End Sub Private Function OpenMidiOut(ByVal dev_id As Integer) As Integer     Call CloseMidiOut     ret = midiOutOpen(handleMidiOut, dev_id, 0, 0, 0)     OpenMidiOut = (handleMidiOut <> 0) End Function Private Sub CloseMidiOut() ' close any opened midi device     If handleMidiOut <> 0 Then         ret = midiOutClose(handleMidiOut)         handleMidiOut = 0     End If End Sub Private Sub PlayNote(Ch As Integer, ByVal nn As Integer, vel As Integer)     Call ExecuteMidiOutShortMsg(&H90 + Ch, nn, vel) End Sub Private Sub StopNote(Ch As Integer, ByVal nn As Integer, vel As Integer)   Call ExecuteMidiOutShortMsg(&H80 + Ch, nn, vel) End Sub Private Sub ExecuteMidiOutShortMsg(b1 As Integer, b2 As Integer, b3 As Integer)     ret = midiOutShortMsg(handleMidiOut, PackDword(0, b3, b2, b1)) End Sub Private Sub Form_Unload(Cancel As Integer)     Call CloseMidiOut 'unloads the opened Midi Mapper End Sub Private Function PackDword(i1 As Integer, i2 As Integer, i3 As Integer, i4 As Integer) As Long     PackDword = i2 * &H10000 + i3 * &H100 + i4 End Function Private Sub Happy_Birthday() NUMBEROFNOTES = 26   'function "Choose" can only handle up to 12 variables at a time   For y = 1 To 12                    'G   G   A   G  >C  <B   G   G   A   G   D   C            Note1Play(y) = Choose(y, 55, 55, 57, 55, 60, 59, 55, 55, 57, 55, 62, 60)            Length1_Note(y) = Choose(y, 0.455, 0.455, 0.91, 0.91, 0.91, 1.82, 0.455, 0.455, 0.91, 0.91, 0.91, 1.82)   Next y   For y = 13 To 24                  'G   G  >G   E   C   C   B   A   F   F   E  C       Note1Play(y) = Choose(y - 12, 55, 55, 67, 64, 60, 60, 59, 57, 65, 65, 64, 60)       Length1_Note(y) = Choose(y - 12, 0.455, 0.455, 0.91, 0.91, 0.455, 0.455, 0.91, 0.91, 0.455, 0.455, 0.91, 0.91)   Next y   For y = 25 To 26               '  D    C       Note1Play(y) = Choose(y - 24, 62, 60)       Length1_Note(y) = Choose(y - 24, 0.91, 1.82)   Next y End Sub

Категории

Добро пожаловать на сайт DraftingCode Q&A (ИТ ответы), где вы можете задавать вопросы и получать ответы от других членов сообщества.

Связанных вопросов не найдено

...