Страница: 1 |
Учи формат WAV. Могу кинуть имеющиеся у меня некоторые данные... ИЗ встроенных средств у VB есть только beep, который должен генерировать какой-то звук фиксированойй частоты. ПРавда, у меня даже это не работает. wav'ы можешь создавать и своей программой, но, если звуки заранее известны, возьми готовую программу и сгенерируй. Их в инете, вроде, много. Если не найдёшь, могу скинуть на мыло. Beep - это не фиксированной частоты, это ding.wav или что-то из этой оперы. Если не стоит озвучка событий Винды, ВБ тоже не будет играть звук. Народ вы путаете два разных понятия. Есть VB функция Beep. Она как раз и проигрывает файл ding.wav . А есть API функция:  eclare Function Beep Lib "kernel32" Alias "Beep" (ByVal dwFreq As Long, ByVal dwDuration As Long) As Long Только в старых виндах она воспроизводит только системный звук Страница: 1 |
Вопрос: Генерация звука
Добавлено: 04.01.04 01:18
Автор вопроса: M@X
Подскажите, как сгенерировать звук определенной частоты на vb, или как создать wav файл содержащий эту частоту. ?
Ответы
Всего ответов: 10
Номер ответа: 1
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #1
Добавлено: 04.01.04 02:25
Номер ответа: 2
Автор ответа:
S_Serg
Вопросов: 9
Ответов: 25
Профиль | | #2
Добавлено: 04.01.04 03:41
Номер ответа: 3
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #3
Добавлено: 04.01.04 03:47
Номер ответа: 4
Автор ответа:
cresta
Вопросов: 117
Ответов: 1538
Профиль | | #4
Добавлено: 04.01.04 09:42
Номер ответа: 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-сайт:
Профиль | | #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
'Функция генерирует звуковой сигнал
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) [#]
 ataSign As String * 4 ' Подпись 'data'
 ataSize 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 - частота (не в герцах!).