Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: Управление звуковым генератором Добавлено: 12.05.09 10:36  

Автор вопроса:  Виталий Игоревич | Web-сайт: www.tvitaly1.narod.ru
имеется API функция:

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 220, 5000
End Sub


Увы, несовершенная вещь! Ибо:

1. дает прерывание внутри программы пока не завершился звук.
2. сигнал идет через внутренний динамик


1-ое мне удалось устранить через Паскаль:

‘компилированная внешняя программа в Pascal
USES CRT,dos;
var
 s:string;
 i,j:integer;
 f:text;
BEGIN

assign(f,'f:\s');
repeat
reset(f);
READ(F,J);
IF J <= 0 THEN NOSOUND ELSE SOUND(J);
Until j=-1;
close(f);
nosound;
END.



‘Программа в VB
'загрузка внешней программы
Private Sub Form_Load()
 Open "f:\s" For Output As 1
  Print #1, "0"
 Close #1
Shell "f:\sound.exe ", 0
end sub

'выгрузка внешней программы
Private Sub Form_Unload(Cancel As Integer)
 Open "f:\s" For Output As 1
  Print #1, "-1"
 Close #1
End Sub

'включить ноту
Private Sub Command1_MouseDown(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
Open "f:\s" For Output As 1
  Print #1, "220"
 Close #1
end sub

'отключить ноту
Private Sub Command1_MouseUp(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
 Open "f:\s" For Output As 1
  Print #1, "0"
 Close #1
end sub


Вопрос следующий:
a) Если API функция, которая только включает генератор внутреннего динамика
b) Если API функция(или как сделать соответвующее иным способом) которая дает сигнал генератора на колонки. Ведь стандартный Beep VB дает сигнал именно в колонки!

Ответить

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

Номер ответа: 1
Автор ответа:
 MegaÐefender



Вопросов: 19
Ответов: 313
 Web-сайт: safetyAV.narod.ru
 Профиль | | #1
Добавлено: 12.05.09 12:51
VB-шный beep зашит в msvbvm60.dll(независим от api-fnc) и он не имеет параметров.

Ответить

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


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #2
Добавлено: 12.05.09 17:16
Формируешь синусоидный сигнал в памяти и выводишь его waveOutOpen/waveOutClose, waveOutPrepareHeader/waveOutUnprepareHeader, waveOutWrite

Ответить

Номер ответа: 3
Автор ответа:
 $@ny@PG



ICQ: 468469477 

Вопросов: 71
Ответов: 196
 Профиль | | #3 Добавлено: 12.05.09 20:17
Прикольная функция!!! :-)

Ответить

Номер ответа: 4
Автор ответа:
 _Serega



Вопросов: 1
Ответов: 43
 Профиль | | #4 Добавлено: 13.05.09 00:48
Прямая работа с аудиоплатой через DirectX, что достаточно наворочено и уже другой вопрос хватит ли квалификации для реализации, то есть оно его как бы знать надо много всего другого, что есть отдельная и большая тема, а вот API вызов для проигрывания аудиофайлов имеет примерно такой вид:

'This project needs :
'- a common dialog box, named CDbox
' (To add the Common Dialog Box to your tools menu, go to Project->Components (or press CTRL-T)
' and select Microsoft Common Dialog control)
'-a button
Private Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long
Private Declare Function waveOutGetNumDevs Lib "winmm.dll" () As Long
Const SND_ASYNC = &H1
Const SND_NODEFAULT = &H2
Private Sub Command1_Click()
    'KPD-Team 1998
    'URL: http://www.allapi.net/
    'E-Mail: KPDTeam@Allapi.net
    'Get the number of installed waveout devices
    ret& = waveOutGetNumDevs
    If ret& > 0 Then
        'Set the CommonDialogBox' filter
        CDBox.Filter = "Wave-files (*.wav)|*.wav|All Files (*.*)|*.*"
        'Set the CommonDialogBox' title
        CDBox.DialogTitle = "Choose your wave-file ..."
        'Show the 'Open File'-dialog
        CDBox.ShowOpen
        'Play the selected sound
        sndPlaySound CDBox.filename, SND_ASYNC Or SND_NODEFAULT
    Else
        MsgBox "No soundcard detected !"
    End If
End Sub
Private Sub Form_Load()
    Command1.Caption = "Load WAV"
End Sub

Ответить

Номер ответа: 5
Автор ответа:
 Виталий Игоревич



Вопросов: 3
Ответов: 5
 Web-сайт: www.tvitaly1.narod.ru
 Профиль | | #5
Добавлено: 14.05.09 13:38
Формируешь синусоидный сигнал в памяти и выводишь его waveOutOpen/waveOutClose, waveOutPrepareHeader/waveOutUnprepareHeader, waveOutWrite

Спасибо за ответ! Но хочется какого либо примера:
пример формирования сигнал, включения сигнала, выключения сигнала

Ответить

Номер ответа: 6
Автор ответа:
 Виталий Игоревич



Вопросов: 3
Ответов: 5
 Web-сайт: www.tvitaly1.narod.ru
 Профиль | | #6
Добавлено: 14.05.09 13:42
'This project needs :
'- a common dialog box, named CDbox
' (To add the Common Dialog Box to your tools menu, go to Project->Components (or press CTRL-T)
' and select Microsoft Common Dialog control)
'-a button
Private Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long
Private Declare Function waveOutGetNumDevs Lib "winmm.dll" () As Long
Const SND_ASYNC = &H1
Const SND_NODEFAULT = &H2
Private Sub Command1_Click()
    'KPD-Team 1998
    'URL: http://www.allapi.net/
    'E-Mail: KPDTeam@Allapi.net
    'Get the number of installed waveout devices
    ret& = waveOutGetNumDevs
    If ret& > 0 Then
        'Set the CommonDialogBox' filter
        CDBox.Filter = "Wave-files (*.wav)|*.wav|All Files (*.*)|*.*"
        'Set the CommonDialogBox' title
        CDBox.DialogTitle = "Choose your wave-file ..."
        'Show the 'Open File'-dialog
        CDBox.ShowOpen
        'Play the selected sound
        sndPlaySound CDBox.filename, SND_ASYNC Or SND_NODEFAULT
    Else
        MsgBox "No soundcard detected !"
    End If
End Sub
Private Sub Form_Load()
    Command1.Caption = "Load WAV"
End Sub

Спасибо за ответ!
А сам файл WAV как создать, какой формат его?

Ответить

Номер ответа: 7
Автор ответа:
 mc-black



ICQ: 308-534-060 

Вопросов: 20
Ответов: 1860
 Web-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #7
Добавлено: 14.05.09 14:12
WAV файл, формат PCM, создать саундрекордером или программкой какой-то специализированной, конвертировать из любого другого аудиоформата.. Кажется тебе не это надо. Sharp, по-моему вещь говорит про waveOutOpen/waveOutClose, waveOutPrepareHeader/waveOutUnprepareHeader, waveOutWrite, кури MSDN, может примеры через google накопаешь.

Ответить

Номер ответа: 8
Автор ответа:
 Виталий Игоревич



Вопросов: 3
Ответов: 5
 Web-сайт: www.tvitaly1.narod.ru
 Профиль | | #8
Добавлено: 15.05.09 14:40
WAV файл, формат PCM, создать саундрекордером или программкой какой-то специализированной, конвертировать из любого другого аудиоформата..
Не надо мне это сэр. У меня музыкальный редактор написан,в своем формате сохраняет, думал сохранять и в каком либо стандартном звуковом формате.

Ответить

Номер ответа: 9
Автор ответа:
 _Serega



Вопросов: 1
Ответов: 43
 Профиль | | #9 Добавлено: 16.05.09 03:00
На CODEPROJECT.COM видел материал по теме, там кстатьи и подвязка через DirectX была на аудиокарточку счас немножко загружен делами, но если не разберешься отпиши, постараюсь при возможности помочь.

Ответить

Страница: 1 |

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



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