Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: проиграть midi-файл из файла ресурсов Добавлено: 27.04.04 13:32  

Автор вопроса:  pokerlifer

проиграть wav-файл, хранящийся в res-файле можно sndStopSound'ом.

а как сделать то же самое, но с midi-файлами и циклически?

Ответить

  Ответы Всего ответов: 6  

Номер ответа: 1
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #1
Добавлено: 29.04.04 01:34

Ничего в голову хорошего не приходит... Только один вариант - изучить миди формат, загрузить его из реестра, и побайтово обрабатывать, "вручную" проигрывая звуки... но это легче и лучше использовать xm/it/mod и др. ...

Ответить

Номер ответа: 2
Автор ответа:
 Justas



ICQ: 259418212 

Вопросов: 24
Ответов: 325
 Web-сайт: justas.newmail.ru
 Профиль | | #2
Добавлено: 29.04.04 05:11

а если подумать немного в другую сторону?

(это надо доводить до ума, но куда смотреть уже будет понятно :)) )

 

Option Explicit

Dim hMIDI As Long
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

Private Sub Form_Load()

'открываем MIDI устройство
If OpenMidiDevice = True Then
End If

Do
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)

Loop
End Sub

Private Function OpenMidiDevice() As Boolean
'функция открытия MIDI устройства
Dim DeviceID As Long
DeviceID = -1
OpenMidiDevice = False
If midiOutOpen(hMIDI, DeviceID, 0&, 0&, 0&;) = 0& Then OpenMidiDevice = True
End Function

Private Sub NoteOn(ByVal Note As Long)
'процедура для включения определённой ноты
midiOutShortMsg hMIDI, &H5A0090 + Note * &H100&
End Sub

Private Sub NoteOff(ByVal Note As Long)
'процедура для выключения определённой ноты
midiOutShortMsg hMIDI, &H90& + Note * &H100&
End Sub

Ответить

Номер ответа: 3
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #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-сайт: justas.newmail.ru
 Профиль | | #6
Добавлено: 06.05.04 00:58
проверь почту

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам