Страница: 1 |
проиграть wav-файл, хранящийся в res-файле можно sndStopSound'ом. а как сделать то же самое, но с midi-файлами и циклически?
Ничего в голову хорошего не приходит... Только один вариант - изучить миди формат, загрузить его из реестра, и побайтово обрабатывать, "вручную" проигрывая звуки... но это легче и лучше использовать xm/it/mod и др. ... а если подумать немного в другую сторону? (это надо доводить до ума, но куда смотреть уже будет понятно ) ) Option Explicit Dim hMIDI As Long Private Sub Form_Load() 'открываем MIDI устройство Do Loop Private Function OpenMidiDevice() As Boolean Private Sub NoteOn(ByVal Note As Long) Private Sub NoteOff(ByVal Note As Long) Ну все равно если воспроизводить миди файл, его потребуется разбить на составляющие части вручную, и проигрывать их... спасибо, только, я конечно, извиняюсь, но как его разбить вручную и проиграть? Страница: 1 |
Вопрос: проиграть midi-файл из файла ресурсов
Добавлено: 27.04.04 13:32
Автор вопроса: pokerlifer
Ответы
Всего ответов: 6
Номер ответа: 1
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #1
Добавлено: 29.04.04 01:34
Номер ответа: 2
Автор ответа:
Justas
ICQ: 259418212
Вопросов: 24
Ответов: 325
Web-сайт:
Профиль | | #2
Добавлено: 29.04.04 05:11
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds 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 midiOutShortMsg Lib "winmm.dll" (ByVal hMidiOut As Long, ByVal dwMsg As Long) As Long
If OpenMidiDevice = True Then
End If
DoEvents
NoteOn (64)
Sleep (900)
NoteOff (64)
NoteOn (64)
Sleep (900)
NoteOff (64)
NoteOn (64)
Sleep (400)
NoteOff (64)
NoteOn (64)
Sleep (900)
NoteOff (64)
NoteOn (67)
Sleep (900)
NoteOff (67)
NoteOn (66)
Sleep (400)
NoteOff (66)
NoteOn (66)
Sleep (900)
NoteOff (66)
NoteOn (64)
Sleep (400)
NoteOff (64)
NoteOn (64)
Sleep (900)
NoteOff (64)
NoteOn (63)
Sleep (400)
NoteOff (63)
NoteOn (64)
Sleep (900)
NoteOff (64)
End Sub
'функция открытия MIDI устройства
Dim DeviceID As Long
DeviceID = -1
OpenMidiDevice = False
If midiOutOpen(hMIDI, DeviceID, 0&, 0&, 0& = 0& Then OpenMidiDevice = True
End Function
'процедура для включения определённой ноты
midiOutShortMsg hMIDI, &H5A0090 + Note * &H100&
End Sub
'процедура для выключения определённой ноты
midiOutShortMsg hMIDI, &H90& + Note * &H100&
End Sub
Номер ответа: 3
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #3
Добавлено: 29.04.04 11:36
Номер ответа: 4
Автор ответа:
pokerlifer
Вопросов: 1
Ответов: 2
Профиль | | #4
Добавлено: 29.04.04 19:57
Номер ответа: 5
Автор ответа:
Yeputons
ICQ: 278444762
Вопросов: 71
Ответов: 179
Профиль | | #5
Добавлено: 05.05.04 20:40
Justas, а как "шифруется" параметр dwMsg в midiOutShortMsg?
Номер ответа: 6
Автор ответа:
Justas
ICQ: 259418212
Вопросов: 24
Ответов: 325
Web-сайт:
Профиль | | #6
Добавлено: 06.05.04 00:58
проверь почту