Вот хотя бы это: Код (Text): #include "stdafx.h" #include "windows.h" #include "math.h" // подключаем LIB-файл для ф-ции PlaySound #pragma comment(lib, "winmm.lib") // описание заголовка файла WAV struct WAVHEADER { char sigRIFF[4]; // должно быть равно "RIFF" DWORD sizeRIFFch; // размер чанка RIFF char sigWAVE[4]; // должно быть равно "WAVE" char sigFMT[4]; // должно быть равно "fmt " DWORD sizeFMTch; // размер чанка FMT WORD wFormatTag; // категория формата, для PCM = 1 WORD wChannels; // кол-во каналов: 1-моно 2-стерео DWORD dwSamplesPerSec;// кол-во сэмплов в сек. DWORD dwAvgBytesPerSec;// среднее число байт в сек WORD wBlockAlign; // выравнивание данных в дата-чанке WORD wBitPerSample; // бит в сэмпле char sigDATA[4]; // должно быть равно "data" DWORD sizeDATAch; // размер data-чанка }; void SuperBeep(DWORD dwFrequency, DWORD dwMilliSeconds) { // частота дискретизации = 44100 Гц // кол-во бит на сэмпл = 8 // если требуемая частота > 44100 или равна нулю, то выходим if(!dwFrequency || dwFrequency>44100) return; // длина дорожки в байтах DWORD numSamples = 44100 / dwFrequency; // выделяем память под дорожку DWORD size = sizeof(WAVHEADER) + numSamples; void *buff = new char[size ]; // заполняем WAV-header WAVHEADER *head = (WAVHEADER*)buff; strcpy(head->sigRIFF, "RIFF"); strcpy(head->sigWAVE, "WAVE"); head->sizeRIFFch = size - 8; strcpy(head->sigFMT, "fmt "); head->sizeFMTch = 16; head->wFormatTag = 1; head->wChannels = 1; // моно head->dwSamplesPerSec = 44100; head->dwAvgBytesPerSec = 44100; head->wBlockAlign = 1; head->wBitPerSample = 8; strcpy(head->sigDATA, "data"); head->sizeDATAch = size; // заполняем дорожку периодом синуса BYTE *samples = (BYTE*)(head+1); for(DWORD i=0; i<numSamples; i++) samples[i] = BYTE(255*sin(6.28*double(i)/double(size))); // проигрываем звук PlaySound((const char*)buff, 0, SND_ASYNC|SND_LOOP|SND_MEMORY); // ждём заданное количество миллисекунд Sleep(dwMilliSeconds); // останавливаем звук PlaySound(0, 0, SND_ASYNC); } ////////////////////////////////////////////////////////////////////// //// // Тестовый звук - 900 Гц, одна секунда int main(int argc, char* argv[]) { SuperBeep(900, 1000); return 0; }
Есть неплохой сайтик: http://www.wotsit.org "This site contains file format information on hundreds of different file types and all sorts of other useful programming information; algorithms, source code, specifications, etc." про wav и mp3 там точно есть.
TaskFall Во во. Типа такого я ихочу посмотреть. BreakPointMAN Что-то про mp3 там не нашел. Точнее нашел неработающее.