Страница: 1 |
Страница: 1 |
Вопрос: Beep
Добавлено: 24.05.07 18:04
Автор вопроса: Arseny | ICQ: 298826769
Нужен аналог Beep, выдающий сигнал на звуковую карту. Порылся в нете, там только проигрывание файлов. Так мне остается только звук сначала записывать и потом его проигрывать? Не вериться, что нельзя просто задать частоту и длительность и отправить на колонки.
Ответы
Всего ответов: 9
Номер ответа: 1
Автор ответа:
Боцман
ICQ: 295725312
Вопросов: 53
Ответов: 830
Web-сайт:
Профиль | | #1
Добавлено: 24.05.07 18:42
Так вроде BEER и так это может, в разумных пределах.
Расположи на форме два HScroll1 и назови, srlChastotaи и srlTime у первого поставь минимум 30, а у второго ну скажем 10
Private Declare Function Beep Lib "kernel32" (ByVal dwFreq As Long, ByVal dwDuration As Long) As Long
'dwFred - частота звука
'dwDuration - продолжительность сигнала в милисекундах
Private Sub cmdGen_Click()
Beep srlChastota.Value, srlTime.Value
'Генерируем звук
End Sub
Номер ответа: 2
Автор ответа:
Боцман
ICQ: 295725312
Вопросов: 53
Ответов: 830
Web-сайт:
Профиль | | #2
Добавлено: 24.05.07 18:44
Блин извени тебе на колонки, ну тогда поэксперементируй.
Номер ответа: 3
Автор ответа:
Champion
ICQ: 461506481
Вопросов: 38
Ответов: 88
Web-сайт:
Профиль | | #3
Добавлено: 24.05.07 20:30
можно MIDI отправить, хоть целую симфонию звуков)
если тебе подходит такое
Номер ответа: 4
Автор ответа:
Arseny
ICQ: 298826769
Вопросов: 53
Ответов: 1732
Профиль | | #4
Добавлено: 24.05.07 20:57
Я от отчаяния и это пробовал, но кажется это не совсем то. нужны звуки четкие и короткие. где-то 50 мс длиной. Ну там плюс-минус. Миди то проигрывает, то не слышно...
Номер ответа: 5
Автор ответа:
AgentFire
ICQ: 192496851
Вопросов: 75
Ответов: 3178
Профиль | | #5
Добавлено: 24.05.07 23:39
dwDuration = 50 ?
Номер ответа: 6
Автор ответа:
Серёга
ICQ: 262809473
Вопросов: 17
Ответов: 561
Web-сайт:
Профиль | | #6
Добавлено: 25.05.07 00:21
Это пробовал?
Номер ответа: 7
Автор ответа:
Серёга
ICQ: 262809473
Вопросов: 17
Ответов: 561
Web-сайт:
Профиль | | #7
Добавлено: 25.05.07 00:23
AF, ему на звуковуху подать надо, а не на спикер.
Номер ответа: 8
Автор ответа:
Champion
ICQ: 461506481
Вопросов: 38
Ответов: 88
Web-сайт:
Профиль | | #8
Добавлено: 25.05.07 08:20
смотри на пример какой я использовал
не помню правда, где я его откопал)
это в класс модуля
Private Type MIDIOUTCAPS
wMid As Integer
wPid As Integer
vDriverVersion As Long
szPname As String * 32
wTechnology As Integer
wVoices As Integer
wNotes As Integer
wChannelMask As Integer
dwSupport As Long
End Type
Private Declare Function midiOutClose Lib "winmm.dll" (ByVal hMidiOut 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 midiOutShortMsg Lib "winmm.dll" (ByVal hMidiOut As Long, ByVal dwMsg As Long) As Long
Dim lngHandle As Long
Dim rc As Long
Dim channel As Integer
Dim volume As Integer
Public Sub StartNote(index As Integer)
midiOutShortMsg lngHandle, &H90 + ((127 - index) * &H100) + (volume * &H10000) + channel
End Sub
Public Sub StopNote(index As Integer)
midiOutShortMsg lngHandle, &H80 + ((127 - index) * &H100) + channel
End Sub
Public Sub ChangeInstrument(ByVal lngInst As Long)
midiOutShortMsg lngHandle, lngInst * &H100 + &HC0 + channel
End Sub
Private Sub Class_Initialize()
Dim caps As MIDIOUTCAPS
rc = midiOutClose(lngHandle)
rc = midiOutOpen(lngHandle, -1, 0, 0, 0)
If (rc <> 0) Then MsgBox "Не могу открыть миди выход = " & rc
volume = 128
End Sub
Private Sub Class_Terminate()
rc = midiOutClose(lngHandle)
End Sub
не помню точные значения, но добивался звучание барабанов(типа тум-тум) и колокольчиков)
Номер ответа: 9
Автор ответа:
Arseny
ICQ: 298826769
Вопросов: 53
Ответов: 1732
Профиль | | #9
Добавлено: 25.05.07 16:32
Извиняюсь за долгое молчание, плашка памяти слетела, относил в гарантию.
Это пробовал?
2Champion:
с MIDI вчера копался и сегодня пробую, но чего-то не того... Мне нужна довольно высокая точность по продолжительности сигнала.