1

Тема: Запис звуку (C++ Builder)

Привіт всім :)
Підскажіть, як записати щось що було сказане в мікрофон (звукозапис)?
а то гугл мовчить...
вітається будь яка інформація: книги/посилання/просто допомога

2 Востаннє редагувалося Chemist-i (01.08.2014 11:52:52)

Re: Запис звуку (C++ Builder)

Якщо це білдер з формочками - є спосіб, який вразить навіть самих збочених індусів - mmsystem.  Пошукайте там десь на вкладках, називаєсі mediaPlayer (або MPlayer), здається на вкладці system.

Disclaimer

П.С. Не подумайте нічого дурного, коли я таким сі займав я був приблизно в віці roctik1996.

3

Re: Запис звуку (C++ Builder)

Гм.. продовжуєте працювати над проектом? :)

4 Востаннє редагувалося roctik1996 (01.08.2014 15:47:54)

Re: Запис звуку (C++ Builder)

0xDADA11C7 написав:

Гм.. продовжуєте працювати над проектом? :)

це вже інший проект :)
більш серйозний
а минулий я доробив 8)

5

Re: Запис звуку (C++ Builder)

Chemist-i написав:

Якщо це білдер з формочками - є спосіб, який вразить навіть самих збочених індусів - mmsystem.  Пошукайте там десь на вкладках, називаєсі mediaPlayer (або MPlayer), здається на вкладці system.

Disclaimer

П.С. Не подумайте нічого дурного, коли я таким сі займав я був приблизно в віці roctik1996.

наскільки я знаю, MediaPlayer записує вже існуючий файл, а мені потрібно щоб воно записало те що я скажу через мікрофон вперше

6

Re: Запис звуку (C++ Builder)

roctik1996 написав:
Chemist-i написав:

Якщо це білдер з формочками - є спосіб, який вразить навіть самих збочених індусів - mmsystem.  Пошукайте там десь на вкладках, називаєсі mediaPlayer (або MPlayer), здається на вкладці system.

Disclaimer

П.С. Не подумайте нічого дурного, коли я таким сі займав я був приблизно в віці roctik1996.

наскільки я знаю, MediaPlayer записує вже існуючий файл, а мені потрібно щоб воно записало те що я скажу через мікрофон вперше

Та невже?

код
#include "stdafx.h"
#include <iostream>
#include <windows.h>
#include <mmsystem.h>
#include <fstream>
#pragma comment(lib,"winmm.lib") 
using namespace std;
int sampleRate = 44100;
short int *waveIn;
void main()
{
        //Формат данных
    WAVEFORMATEX pFormat;
    pFormat.wFormatTag = WAVE_FORMAT_PCM;
    pFormat.nChannels = 2;               //Стерео - 2 канала   
    pFormat.wBitsPerSample = 16;            
    pFormat.nSamplesPerSec = sampleRate;     
    pFormat.nAvgBytesPerSec = sampleRate * pFormat.nChannels * pFormat.wBitsPerSample / 8; 
    pFormat.nBlockAlign = pFormat.nChannels * pFormat.wBitsPerSample / 8;    
    pFormat.cbSize = 0;
    waveIn = new short int[pFormat.nAvgBytesPerSec * 2];
    memset(waveIn,0,pFormat.nAvgBytesPerSec * 2);
   
       //Запись звука в буфер waveIn
    HWAVEIN hWaveIn;
    WAVEHDR waveInHdr;
    waveInOpen(&hWaveIn, WAVE_MAPPER, &pFormat, NULL, NULL, WAVE_FORMAT_DIRECT);
    waveInHdr.lpData = (LPSTR)waveIn;
    waveInHdr.dwBufferLength = pFormat.nAvgBytesPerSec * 2;
    waveInHdr.dwBytesRecorded = 0;
    waveInHdr.dwUser = 0L;
    waveInHdr.dwFlags = 0L;
    waveInHdr.dwLoops = 0L;
    waveInPrepareHeader(hWaveIn, &waveInHdr, sizeof(WAVEHDR));
    waveInAddBuffer(hWaveIn, &waveInHdr, sizeof(WAVEHDR));
    waveInStart(hWaveIn);
    do{} 
    while(waveInUnprepareHeader(hWaveIn, &waveInHdr, sizeof(WAVEHDR)) == WAVERR_STILLPLAYING);
    waveInClose(hWaveIn);
    
       //Воспроизведение из буфера waveIn
    HWAVEOUT hWaveOut;
    WAVEHDR WaveOutHdr;
    waveOutOpen(&hWaveOut, WAVE_MAPPER, &pFormat, NULL, NULL, WAVE_FORMAT_DIRECT);
    WaveOutHdr.lpData = (LPSTR)waveIn;
    WaveOutHdr.dwBufferLength = pFormat.nAvgBytesPerSec * 2;
    WaveOutHdr.dwBytesRecorded = 0;
    WaveOutHdr.dwUser = 0L;
    WaveOutHdr.dwFlags = 0L;
    WaveOutHdr.dwLoops = 1L;
    waveOutPrepareHeader(hWaveOut, &WaveOutHdr, sizeof(WAVEHDR));
    waveOutSetVolume(out, 0xffffffff); 
    waveOutWrite(hWaveOut, &WaveOutHdr, sizeof(WAVEHDR));
    do{} 
    while(waveOutUnprepareHeader(hWaveOut, &WaveOutHdr, sizeof(WAVEHDR)) == WAVERR_STILLPLAYING);
    
    waveOutClose(hWaveOut);
    delete[] waveIn;
    system("pause");
 }

Звідсіль

Подякували: roctik19961

7

Re: Запис звуку (C++ Builder)

Chemist-i написав:
roctik1996 написав:
Chemist-i написав:

Якщо це білдер з формочками - є спосіб, який вразить навіть самих збочених індусів - mmsystem.  Пошукайте там десь на вкладках, називаєсі mediaPlayer (або MPlayer), здається на вкладці system.

Disclaimer

П.С. Не подумайте нічого дурного, коли я таким сі займав я був приблизно в віці roctik1996.

наскільки я знаю, MediaPlayer записує вже існуючий файл, а мені потрібно щоб воно записало те що я скажу через мікрофон вперше

Та невже?

дякую, я спробую, а інакше напишу ще