|
Модераторы: Daevaorn |
|
ud_sasha |
|
|||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 24.7.2004 Репутация: нет Всего: нет |
Когда-то в Borland C++5 была (да и сейчас есть) функция sound(), которая выводила звук определенной частоты на встроенный динамик. Хотелось бы узнать как такое реализовать на Visual C++ 6.0, только звук выводить на звуковую карту. Итак, требуется, к примеру, заставить издавать звуковую карту звук частотой 900 Гц 1 секунду. Спасибо.
|
|||
|
||||
mr.DUDA |
|
|||
3D-маньяк Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 25 Всего: 232 |
Есть такая функция, Beep называется. Но, к сожалению, в Win98/Me она не поддерживает аргументы dwFreq и dwDuration (вместо этого система издаёт "стандартный" звук).
Но можно сделать то же самое, используя PlaySound с параметрами SND_ASYNC | SND_LOOP | SND_MEMORY. Для остановки звука можно вызвать PlaySound с NULL в аргументе pszSound. Чтобы сформировать звук требуемой частоты прямо в памяти, достаточно выполнить ряд не слишком сложных действий, а именно: - сформировать WAV-header - заполнить дорожку сэмплами по периоду синусоиды - длину дорожки подбирать в зависимости от требуемой частоты Так как звук будет повторяться (SND_LOOP), то одного периода синусоиды будет достаточно. Вот пример, в котором реализована уже готовая функция SuperBeep, возвращающая управление после того, как звук отзвучит заданное количество миллисекунд (dwMilliSeconds). Кстати, можно и не ожидать завершения звучания -- для этого нужно запустить SuperBeep в отдельном потоке. Исходный текст ф-ции SuperBeep с примером использования:
-------------------- |
|||
|
||||
ud_sasha |
|
||||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 24.7.2004 Репутация: нет Всего: нет |
Спасибо, то что надо!!!
только
следует читать как:
иначе за пределы буфера начинаем писать. Это сообщение отредактировал(а) ud_sasha - 25.7.2004, 16:17 |
||||
|
|||||
Rutti |
|
|||
Бывалый Профиль Группа: Участник Сообщений: 225 Регистрация: 25.7.2004 Репутация: нет Всего: нет |
А как проще средствами VC++ воспроизвести MP3-файл?
|
|||
|
||||
gepard |
|
|||
Эксперт Профиль Группа: Участник Сообщений: 2477 Регистрация: 29.2.2004 Репутация: 2 Всего: 40 |
Это надо тебе DirectX или OpenAL разбирать
А вообще, вот как просто можно воспроизвести звук *.wav: Взято с одного из форумов:
Плюс вот это: USES mmsystem; sndPlaySound('C:\TEST.WAV',SND_ASYNC); // PLAY sndPlaySound('C:\TETS.WAV',SND_ASYNC+SND_LOOP); // Loop Mode (зацикливание) sndPlaySound(Nil,SND_ASYNC); //STOP Думаю разберёшься. -------------------- Когда начинаются цифровые войны, а траффик разносит моё сознание по бесконечным просторам инета, подобно ветру, разносящему листву по полям, тогда и только тогда я чувствую себя свободным! © Я, Берсерк, что значит - Неистовый. |
|||
|
||||
chipset |
|
|||
Эксперт Профиль Группа: Экс. модератор Сообщений: 4067 Регистрация: 11.1.2003 Где: Seattle, US Репутация: 27 Всего: 164 |
Человеку видимо необходим формат *.MP3.. Наверное надо копать в сторону DirectMusic.
--------------------
|
|||
|
||||
Rutti |
|
|||
Бывалый Профиль Группа: Участник Сообщений: 225 Регистрация: 25.7.2004 Репутация: нет Всего: нет |
chipset
Так капни же! |
|||
|
||||
gepard |
|
|||
Эксперт Профиль Группа: Участник Сообщений: 2477 Регистрация: 29.2.2004 Репутация: 2 Всего: 40 |
Ты знаешь, какя лопата нужна? Столько времени нужно. Лучше учите OpenAL. хотя лопата и время от этого не уменьшились -------------------- Когда начинаются цифровые войны, а траффик разносит моё сознание по бесконечным просторам инета, подобно ветру, разносящему листву по полям, тогда и только тогда я чувствую себя свободным! © Я, Берсерк, что значит - Неистовый. |
|||
|
||||
chipset |
|
|||
Эксперт Профиль Группа: Экс. модератор Сообщений: 4067 Регистрация: 11.1.2003 Где: Seattle, US Репутация: 27 Всего: 164 |
Это вечный вопрос..
Хотя ДиректИкс имхо перспективнее.. --------------------
|
|||
|
||||
gepard |
|
|||
Эксперт Профиль Группа: Участник Сообщений: 2477 Регистрация: 29.2.2004 Репутация: 2 Всего: 40 |
Его же вроде микрософт вообще не будет больше делать
-------------------- Когда начинаются цифровые войны, а траффик разносит моё сознание по бесконечным просторам инета, подобно ветру, разносящему листву по полям, тогда и только тогда я чувствую себя свободным! © Я, Берсерк, что значит - Неистовый. |
|||
|
||||
maxim1000 |
|
|||
Эксперт Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 17 Всего: 110 |
ShellExecute... (описание можно найти в MSDN) Это сообщение отредактировал(а) maxim1000 - 27.7.2004, 17:25 -------------------- qqq |
|||
|
||||
chipset |
|
|||
Эксперт Профиль Группа: Экс. модератор Сообщений: 4067 Регистрация: 11.1.2003 Где: Seattle, US Репутация: 27 Всего: 164 |
[quote]Его же вроде микрософт вообще не будет больше делать [quote]
ДА? Я слышал что наоборот Ogl загибается Ох, флеймим товарищи... --------------------
|
|||
|
||||
DeadProger |
|
|||
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 30.12.2004 Где: The Earth Репутация: нет Всего: нет |
Где можно найти понятное объяснение основ DirectMusic?
|
|||
|
||||
chipset |
|
|||
Эксперт Профиль Группа: Экс. модератор Сообщений: 4067 Регистрация: 11.1.2003 Где: Seattle, US Репутация: 27 Всего: 164 |
DeadProger
MSDN. Модератор: Пожалуйста, один топик - один вопрос. --------------------
|
|||
|
||||
qqqq1961 |
|
||||||||||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 24.8.2013 Репутация: нет Всего: нет |
Кроме предложенного ud_sasha:
Предлагаю исправить еще один выход за пределы буфера:
И нужно деструктор в конце, особенно если нужно повторно функцию вызывать:
Это сообщение отредактировал(а) qqqq1961 - 12.1.2015, 00:10 |
||||||||||
|
|||||||||||
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |