leon2009 Опубликовано 17 марта, 2023 Поделиться Опубликовано 17 марта, 2023 Здравствуйте! как разобрать звуковой файл wav, можно другой, какие mediaPlayer поддерживает... в архиве ехе - только пример для windows если кто боится открывать ехе = вот видео = https://rutube.ru/video/27d89237909c7c44bf2cbef677edea66/ сам звук https://disk.yandex.ru/d/wvBuxzZsCl2sXA = сюда не закачался. звук проигрывает в мемо частота записывается можно и в график. если частота низкая (барабан играет), то пишет что барабан, если скрипка то скрипка.... Спасибо! Project1.zip Цитата Ссылка на комментарий
0 GASCHE Опубликовано 19 марта, 2023 Поделиться Опубликовано 19 марта, 2023 В 17.03.2023 в 13:24, leon2009 сказал: Здравствуйте! как разобрать звуковой файл wav Читаете файл, разбираете заголовок файла, определяете позицию начала данных, обрабатываете данные так как вам нужно . Цитата Ссылка на комментарий
0 Martifan Опубликовано 4 апреля, 2023 Поделиться Опубликовано 4 апреля, 2023 Здравствуйте! Для разбора звукового файла WAV в Delphi можно использовать стандартные средства работы с аудиофайлами из библиотеки Windows API или сторонние библиотеки, такие как BASS или FMOD. Пример чтения и воспроизведения звукового файла WAV с использованием Windows API можно найти в следующем коде: var WaveFormat: TWAVEFORMATEX; MMResult: MMRESULT; HWaveOut: HWAVEOUT; WaveHeader: TWAVEHDR; WaveData: Pointer; WaveSize: DWORD; begin MMResult := waveInOpen(@HWaveOut, WAVE_MAPPER, @WaveFormat, 0, 0, CALLBACK_NULL); if MMResult <> MMSYSERR_NOERROR then raise Exception.CreateFmt('Error opening audio device. Error code: %d', [MMResult]); try WaveData := LoadWaveData('audio.wav', WaveSize); // функция загрузки данных из WAV файла ZeroMemory(@WaveHeader, SizeOf(TWAVEHDR)); WaveHeader.dwBufferLength := WaveSize; WaveHeader.lpData := WaveData; MMResult := waveOutPrepareHeader(HWaveOut, @WaveHeader, SizeOf(TWAVEHDR)); if MMResult <> MMSYSERR_NOERROR then raise Exception.CreateFmt('Error preparing audio data. Error code: %d', [MMResult]); try MMResult := waveOutWrite(HWaveOut, @WaveHeader, SizeOf(TWAVEHDR)); if MMResult <> MMSYSERR_NOERROR then raise Exception.CreateFmt('Error playing audio. Error code: %d', [MMResult]); while waveOutUnprepareHeader(HWaveOut, @WaveHeader, SizeOf(TWAVEHDR)) = WAVERR_STILLPLAYING do Sleep(10); finally FreeMem(WaveData); end; finally waveOutClose(HWaveOut); end; end; Для анализа звукового файла можно использовать сторонние библиотеки, такие как BASS или FMOD. Например, для работы с BASS можно использовать следующий код: uses Bass; var Stream: HSTREAM; Info: BASS_CHANNELINFO; Frequency: Integer; begin if not BASS_Init(-1, 44100, 0, 0, nil) then raise Exception.Create('Error initializing audio system'); try Stream := BASS_StreamCreateFile(False, 'audio.wav', 0, 0, BASS_SAMPLE_FLOAT or BASS_STREAM_DECODE); if Stream = 0 then raise Exception.Create('Error creating audio stream'); try BASS_ChannelGetInfo(Stream, Info); Frequency := Info.freq; // далее можно использовать функции BASS для анализа звукового файла finally BASS_StreamFree(Stream); end; finally BASS_Free(); end; end; Цитата Ссылка на комментарий
Вопрос
leon2009
Здравствуйте! как разобрать звуковой файл wav, можно другой, какие mediaPlayer поддерживает...
в архиве ехе - только пример для windows
если кто боится открывать ехе = вот видео = https://rutube.ru/video/27d89237909c7c44bf2cbef677edea66/
сам звук https://disk.yandex.ru/d/wvBuxzZsCl2sXA = сюда не закачался.
звук проигрывает в мемо частота записывается можно и в график.
если частота низкая (барабан играет), то пишет что барабан, если скрипка то скрипка....
Спасибо!
Project1.zip
Ссылка на комментарий
2 ответа на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.