Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

Страница: 1 |

 

  Вопрос: Генерация звука Добавлено: 04.01.04 01:18  

Автор вопроса:  M@X
Подскажите, как сгенерировать звук определенной частоты на vb, или как создать wav файл содержащий эту частоту. ?

Ответить

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

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


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #1
Добавлено: 04.01.04 02:25

Учи формат WAV. Могу кинуть имеющиеся у меня некоторые данные...

Ответить

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



Вопросов: 9
Ответов: 25
 Профиль | | #2 Добавлено: 04.01.04 03:41

ИЗ встроенных средств у VB есть только beep, который должен генерировать какой-то звук фиксированойй частоты. ПРавда, у меня даже это не работает.

wav'ы можешь создавать и своей программой, но, если звуки заранее известны, возьми готовую программу и сгенерируй.

Их в инете, вроде, много. Если не найдёшь, могу скинуть на мыло.

Ответить

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


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #3
Добавлено: 04.01.04 03:47

Beep - это не фиксированной частоты, это ding.wav или что-то из этой оперы. Если не стоит озвучка событий Винды, ВБ тоже не будет играть звук.

Ответить

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



Вопросов: 117
Ответов: 1538
 Профиль | | #4 Добавлено: 04.01.04 09:42

Народ вы путаете два разных понятия. Есть VB функция Beep. Она как раз и проигрывает файл ding.wav . 

А есть API функция:

 ;Declare Function Beep Lib "kernel32" Alias "Beep" (ByVal dwFreq As Long, ByVal dwDuration As Long) As Long

Только в старых виндах она  воспроизводит только системный звук

dwFreq
Windows NT/2000: Частота в герцах (Hz). Windows 95/98: Игнорируется
dwDuration
Windows NT/2000: Продолжительность звука в миллисекундах. Windows 95/98: Игнорируется

 

Ответить

Номер ответа: 5
Автор ответа:
 M@X



Вопросов: 38
Ответов: 43
 Профиль | | #5 Добавлено: 04.01.04 12:23
Если можно скиньте инфу на мыло: mb87@mail.ru

Ответить

Номер ответа: 6
Автор ответа:
 cresta



Вопросов: 117
Ответов: 1538
 Профиль | | #6 Добавлено: 04.01.04 14:18
Кинул

Ответить

Номер ответа: 7
Автор ответа:
 RendeRR



ICQ: 178595360 

Вопросов: 14
Ответов: 14
 Профиль | | #7 Добавлено: 14.09.05 22:31
И мне, если можно RendeRR[собачка]mail.ru

Ответить

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



Вопросов: 224
Ответов: 3777
 Web-сайт: xury.zx6.ru
 Профиль | | #8
Добавлено: 14.09.05 23:15
тоже хочу по WAV! privmail[at]nm.ru

Ответить

Номер ответа: 9
Автор ответа:
 «UL.eXe»



ICQ: 197.895.916.247 

Вопросов: 72
Ответов: 540
 Профиль | | #9 Добавлено: 14.09.05 23:17
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

Ответить

Номер ответа: 10
Автор ответа:
 Страшный Сон



Вопросов: 46
Ответов: 848
 Профиль | | #10 Добавлено: 15.09.05 08:32
Описание WAV-формата:


Private Type WAVHeader
   RIFFSign As String * 4    ' Подпись 'RIFF'
   RIFFSize As Long          ' Размер оставшейся части файла [-]
   FmtSign As String * 8     ' Подпись 'WAVEfmt '
   FmtSize As Long           ' Размер заголовка [+]
   Format As Integer         ' Формат (1=PCM) [*]
   Channels As Integer       ' Количество каналов (1/2) [/]
   Freq As Long              ' Частота [=]
   BytesPerSecond As Long    ' Количество байт/секунду [\]
   BytesPerSample As Integer ' Количество байт/сампл [%]
   Bits As Integer           ' Количество бит (8/16) [#]
   ;DataSign As String * 4    ' Подпись 'data'
   ;DataSize As Long          ' Размер блока данных [!]
End Type
  
Data [:]

RIFF----WAVEfmt ++++**//====\\\\%%##data!!!!::::::: ...

В итоге заголовок занимает 44 байта, а всё остальное - это блок данных.

 ----. Это [РФ]-[8]. (РФ - Суммарный размер файла)
 ++++. Обычно это число равно [16].
 **. В формате PCM это число равно [1].
 //. Если звук моно - число равно [1], если стерео - [2].
 ====. Частота дискретизации звука.
 \\\\. Если звук 8 бит моно - число совпадает с [=], если 16 бит моно или 8 бит стерео - число вдвое превышает [=], если 16 бит стерео - то вчетверо.
 %%. Это число всегда равно [\]/[=].
 ##. Количество бит на сампл.
 !!!!. Это число равно [РФ]-[44].

Запись блока данных:

8 бит моно: Все самплы записываются слева направо. Средняя линия соответствует [128]. Диапазон - от 0 до 255.
16 бит моно: Средняя линия соответствует [0]. Диапазон - от -32768 до 32767.
Стерео: Каждый сампл повторяется дважды для левого и правого канала.


Генерировать звук определенной частоты совсем просто:

Wave(I) = Int(Sin(I / V) * A)

A - амплитуда.
V - частота (не в герцах!).

Ответить

Страница: 1 |

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



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