Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Visual C++ /MFC/Запись и воспроизведение звука, Запись и воспроизведение звука в Windows 
:(
    Опции темы
novic
Дата 2.3.2007, 14:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 2.3.2007

Репутация: нет
Всего: нет



Объясните, пожалуйста, как написать программу записи и вспроизведения звука в Windows на языке C++ в среде Microsoft Visual C++. 
PM MAIL   Вверх
Greeen
Дата 2.3.2007, 23:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 710
Регистрация: 13.8.2006
Где: Петербург

Репутация: 10
Всего: 18



В раздел работа


--------------------
Подпись больше не нужна
PM MAIL ICQ Skype   Вверх
FelikZ
Дата 16.3.2007, 00:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Старый Маразматик
**


Профиль
Группа: Участник
Сообщений: 380
Регистрация: 1.12.2006
Где: Vault 13

Репутация: нет
Всего: 5



Читай про waveOut и waveIn...


--------------------
user posted image
PM WWW ICQ Skype   Вверх
SergMilk
Дата 11.8.2009, 21:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 29.4.2009

Репутация: нет
Всего: нет



Привет!
А подскажите, пожалуйста, как создавать wav файл для проигрывания через звуковую карту в процессе работы приложения? Например, в зависимости от выбора пользователя. Что-нибудь вроде Beep(int frequancy,int duration); ?

Спасибо!
PM MAIL   Вверх
GavriKos
Дата 13.8.2009, 13:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 220
Регистрация: 8.8.2007
Где: Донецк, Украина

Репутация: нет
Всего: 1



Для работы с wav файлами есть специальная библиотека в поставке студии. Вот название скажу когда студи будет под рукой. С ее помощью можно работать с аудио. Но загрузку, запись и прочее прийдется делать руками. Т.е. писать либо в одну переменную, либо в вектор (чтобы можно было воспроизвести кусок) и т.д. Библиотека только позволяет работать с аудио входом-выходом и системным микшером, но не оперирует аудиоданными - это остается з аплечами програмиста. 


Цитата

Что-нибудь вроде Beep(int frequancy,int duration);


По моему MessageBeep.
--------------------
Донецкая группа IT - присоединяемся
PM MAIL ICQ   Вверх
SergMilk
Дата 16.8.2009, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 29.4.2009

Репутация: нет
Всего: нет



То есть если я хочу допустим проигрывать точку и тире из азбуки Морзе, то мне надо создать два wav файла - один для точки, другой для тире(ну или только для точки, а тире как утроенную точку проигрывать). А для реализации возможности выбирать частоту  (ноту) на которой будет воспроизведение, таких wav файлов нужно несколько, так??
PM MAIL   Вверх
andrew_121
Дата 16.8.2009, 22:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: нет
Всего: 33





--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
SergMilk
Дата 18.8.2009, 23:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 29.4.2009

Репутация: нет
Всего: нет



Не, мне нужно не через спикер, а через звуковую плату проигрывать
PM MAIL   Вверх
ThrashTillDeath
Дата 11.2.2010, 21:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 9.12.2009

Репутация: нет
Всего: нет



библиотека вроде бы  mmsystem.h
    и там уже  описываешь  свойства wav:
     
Код

    WaveFormat.wFormatTag=...
    WaveFormat.nChannels=...
    WaveFormat.nSamplesPerSec=...
    WaveFormat.nAvgBytesPerSec=...
    WaveFormat.nBlockAlign=...
    WaveFormat.wBitsPerSample=...

далее описываешь свой буфер:
Код

    ULONG Buffersize=WaveFormat.nBlockAlign*WaveFormat.nSamplesPerSec*50;//задаешь нужное тебе время(сек), но желательно его сделать маленьким, потом просто докидывать буфера при помощи waveInAddBuffer(WaveIn, &WaveHdr, sizeof(WAVEHDR));
    WaveHdr.lpData=(char*)malloc(Buffersize);
    WaveHdr.dwBufferLength=Buffersize;
    waveInOpen(&WaveIn, 0, &WaveFormat, NULL, 0, CALLBACK_WINDOW);
    waveInPrepareHeader(WaveIn, &WaveHdr, sizeof(WAVEHDR));
    waveInAddBuffer(WaveIn, &WaveHdr, sizeof(WAVEHDR));
    waveInStart(WaveIn);


    
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0765 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.