Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

Страница: 1 |

 

  Вопрос: Beep Добавлено: 24.05.07 18:04  

Автор вопроса:  Arseny | ICQ: 298826769 
Нужен аналог Beep, выдающий сигнал на звуковую карту. Порылся в нете, там только проигрывание файлов. Так мне остается только звук сначала записывать и потом его проигрывать? Не вериться, что нельзя просто задать частоту и длительность и отправить на колонки.

Ответить

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

Номер ответа: 1
Автор ответа:
 Боцман



ICQ: 295725312 

Вопросов: 53
Ответов: 830
 Web-сайт: Rus-Skipper.narod.ru
 Профиль | | #1
Добавлено: 24.05.07 18:42
Так вроде BEER и так это может, в разумных пределах.
Расположи на форме два HScroll1 и назови, srlChastotaи и srlTime у первого поставь минимум 30, а у второго ну скажем 10
Option Explicit 'Функция генерирует звуковой сигнал
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-сайт: Rus-Skipper.narod.ru
 Профиль | | #2
Добавлено: 24.05.07 18:44
Блин извени тебе на колонки, ну тогда поэксперементируй.

Ответить

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



ICQ: 461506481 

Вопросов: 38
Ответов: 88
 Web-сайт: afhelp.in.ua
 Профиль | | #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
где-то 50 мс длиной

ByVal dwDuration As Long


dwDuration = 50 ?

Ответить

Номер ответа: 6
Автор ответа:
 Серёга



ICQ: 262809473 

Вопросов: 17
Ответов: 561
 Web-сайт: houselab.narod.ru
 Профиль | | #6
Добавлено: 25.05.07 00:21
Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long

Это пробовал?

Ответить

Номер ответа: 7
Автор ответа:
 Серёга



ICQ: 262809473 

Вопросов: 17
Ответов: 561
 Web-сайт: houselab.narod.ru
 Профиль | | #7
Добавлено: 25.05.07 00:23
dwDuration = 50 ?

AF, ему на звуковуху подать надо, а не на спикер.

Ответить

Номер ответа: 8
Автор ответа:
 Champion



ICQ: 461506481 

Вопросов: 38
Ответов: 88
 Web-сайт: afhelp.in.ua
 Профиль | | #8
Добавлено: 25.05.07 08:20
смотри на пример какой я использовал
не помню правда, где я его откопал)

это в класс модуля
Option Explicit
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
Извиняюсь за долгое молчание, плашка памяти слетела, относил в гарантию.
Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long

Это пробовал?
Я ж говорю, мне не очень хочется звук предварительно создавать. У меня в проге юзер сам настраивает частоту и длительность сигнала. Смешно конечно, что на спикер прямой выход есть, а на звуковую - нет...

2Champion:
с MIDI вчера копался и сегодня пробую, но чего-то не того... Мне нужна довольно высокая точность по продолжительности сигнала. :(

Ответить

Страница: 1 |

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



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