Не воспроизводится wav файл windows 7. Расширение файла WAV

  • Дата: 11.09.2023

Воспроизведение WAV-аудио

Платформа.NET Framework имеет небогатую историю поддержки звука. Версии 1.0 и 1.1 не предлагали никакого управляемого способа воспроизведения аудио, а когда долгожданная поддержка, наконец, появилась в.NET 2.0, она была представлена в форме не приводящего в восторг класса SoundPlayer (который можно найти в "малонаселенном" пространстве имен System.Media). Класс SoundPlayer довольно ограничен: он может воспроизводить только файлы в формате WAV, не поддерживает воспроизведения одновременно более одного звука и совсем не предоставляет возможностей управления никакими аспектами воспроизведения аудио (например, громкостью и балансом).

Чтобы получить эти возможности, разработчики, использующие Windows Forms, вынуждены были работать с библиотекой неуправляемого кода quartz.dll. Библиотека quartz.dll - ключевая часть DirectX, и она присутствует в проигрывателе Windows Media и операционной системе Windows. (Тот же компонент известен под названием DirectShow, а предыдущие версии назывались ActiveMovie.)

Класс SoundPlayer поддерживается в приложениях WPF. Если смириться с его существенными ограничениями, то можно сказать, что он предлагает наиболее простой и легкий способ добавления работы с аудио в приложения. Класс SoundPlayer также упаковывается в класс SoundPlayerAction. который позволяет воспроизводить звук через декларативный триггер (вместо написания нескольких строк кода C# в обработчике событий). В следующих разделах будет представлен краткий обзор обоих классов, а затем уже описания более мощных WPF-классов MediaPlayer и MediaElement.

Класс SoundPlayer

Чтобы воспроизвести звук с помощью класса SoundPlayer, понадобится выполнить перечисленные ниже шаги:

    Создать экземпляр SoundPlayer.

    Указать звуковое содержимое, установив либо свойство Stream , либо свойство SoundLocation . Если есть объект Stream, содержащий звук в формате WAV, используйте свойство Stream. Если же есть путь к файлу или URL, указывающий на файл WAV, применяйте свойство SoundLocation.

    Если аудио-содержимое хранится в виде двоичного ресурса и встроено в приложение, то потребуется доступ к нему в виде потока и использование свойства SoundPlayer.Stream. Причина в том, что SoundPlayer не поддерживает синтаксис упакованных URL в WPF.

    Установив свойство Stream или SoundLocation, можно заставить SoundPlayer в действительности загрузить аудиоданные, вызвав метод Load() или LoadAsync(). Метод Load() наиболее прост - он останавливает выполнение кода до тех пор, пока весь звуковой фрагмент не будет загружен в память. LoadAsync() выполняет свою работу в другом потоке и по завершении инициирует событие LoadCompleted.

    Формально использовать Load() или LoadAsync() не обязательно. Экземпляр SoundPlayer загружает аудиоданные по мере необходимости, когда вызывается метод Play() или PlaySync(). Однако явно загрузить аудио-фрагмент - хорошая идея; это не только позволит снизить накладные расходы при многократном воспроизведении, но также упростит обработку исключений, связанных с файловыми проблемами, отдельно от исключений, вызванных причинами, относящимися к процессу воспроизведения.

    После этого можно вызвать PlaySync() , который приостановит код на время воспроизведения аудио-фрагмента, или же применить Play() для воспроизведения в другом потоке, обеспечивая интерфейсу приложения способность реагировать на действия пользователя. Единственный другой доступный вариант - это метод PlayLooping() , воспроизводящий аудио-фрагмент асинхронно в бесконечном цикле (что идеально для саундтреков). Чтобы остановить текущее воспроизведение в любой момент, необходимо вызвать метод Stop() .

В следующем фрагменте кода демонстрируется простейший подход к загрузке и асинхронному воспроизведению аудиофайла:

SoundPlayer sp = new SoundPlayer(); sp.SoundLocation = "tada.wav"; sp.Load(); sp.PlayLooping()

До сих пор в коде предполагалось, что аудиофайл присутствует в том же каталоге, что и скомпилированное приложение. Однако загружать SoundPlayer-аудио из файла не обязательно. Для коротких звуков, которые воспроизводятся в нескольких местах приложения, возможно, разумнее встроить звуковые файлы непосредственно в скомпилированную сборку в виде двоичных ресурсов (не путайте их с декларативными ресурсами, определяемыми в коде разметки XAML). Эта техника работает со звуковыми файлами так же хорошо, как и с графическими изображениями.

Например, если добавить файл ding.wav как ресурс по имени Ding (просто перейдите к узлу Properties --> Resources (Свойства --> ресурсы) в окне Solution Explorer и воспользуйтесь поддержкой визуального конструктора), то можно будет применить следующий код для его воспроизведения:

SoundPlayer player = new SoundPlayer(); player.Stream = Properties.Resources.Ding; player.Play();

Класс SoundPlayer не слишком хорошо работает с большими аудиофайлами, поскольку он должен загрузить в память весь файл целиком. Может показаться, что данную проблему можно разрешить, разбив большой аудиофайл на куски, однако класс SoundPlayer не предназначен для этого. Не существует простого способа такой синхронизации SoundPlayer, чтобы он мог воспроизвести множество аудиофрагментов друг за другом, поскольку он не обеспечивает никаких средств для организации очередей. Всякий раз, когда вызывается метод PlaySound() или Play(), текущее воспроизведение останавливается. Обходные пути возможны, но намного лучше вместо этого воспользоваться классом MediaElement.

Класс SoundPlayerAction

Класс SoundPlayerAction позволяет более удобно использовать класс SoundPlayer. Класс SoundPlayerAction унаследован от TriggerAction, который позволяет использовать его в ответ на любое событие.

Ниже приведена разметка кнопки, применяющей SoundPlayerAction для подключения события Click к звуку. Триггер организован так, что его можно применить к множеству кнопок (если перенести его в коллекцию Resources):

При использовании SoundPlayerAction звук всегда воспроизводится асинхронно.

Очень маленький инструмент для воспроизведения WAV файлов. Программа не требует установки, поэтому вы можете скопировать Wav Player на сеъмный носитель и запускать программу на любом компьютере.

Интерфейс программы состоит из маленького простого окна, через которое вы можете искать нужные файлы в древовидной структуре папок ("drag and drop" не поддерживается). Вы можете воспроизводить треки, использовать паузу, сортировать файлы по имени или дате, удалять их с жесткого диска, создавать и сохранять плейлисты, настраивать громкость воспроизведения и выбирать звуковую карту для воспроизведения.

В настройках (Options) вы можете ассоциировать все WAV файлы с этой программой, включить запоминание позиции и размера окна и применить некоторые другие опции. Программа работает довольно стабильно, во время тестирования не было замечено каких-либо ошибок. Однако интуитивности в расположении элементов и названиях опций не хватает. Например, для того, чтобы видеть линейку прокрутки трека нужно в выпадающем вниз меню активировать пункт "Set position". В целом программа очень простая и совсем не похожа на современные плееры, и если учесть, что на рынке есть намного более продвинутые средства воспроизведения музыки, то достоинствами этой программы можно назвать только портативность и маленький размер исполняемого файла.

О библиотеке

TMRpcm - Arduino библиотека для асинхронного воспроизведения PCM/WAV файлов напрямую с SD карты.

Использует стандартную библиотеку SD Arduino, SD карту и выходное устройство (громкоговоритель, наушники, усилитель и т.д.).

Поддерживаемые платы:

  • все платы на базе ATmega328: Arduino Uno, Nano, Duemilanove и т.д.;
  • платы Mega: 1280, 2560 и т.д..

Особенности

  • Воспроизведение PCM/WAV напрямую с SD карты.
  • Основные форматы: WAV файлы, 8-бит, частота дискретизации 8-32 кГц, моно.
  • Асинхронное воспроизведение: позволяет работать коду в основном цикле программы во время воспроизведения звука.
  • Работа на одном таймере: TIMER1 (Uno, Mega) или TIMER3, 4 или 5 (Mega).
  • Двухтактный выход или подключение двух динамиков.
  • Двойное увеличение частоты дискретизации.
  • Поддерживаемые устройства: Arduino Uno, Nano, Mega и т.д.

Подготовка аудиофайлов

Файлы конвертируются легко и просто:

  • с помощью iTunes:
    • кликнуть Edit > Preferences > Import Settings;
    • изменить значение в выпадающем списке на WAV Encoder и Setting: Custom > 16.000kHz to 32kHz, 8-bit, Mono;
    • правый клик на любом файле в in iTunes и выбрать " Create WAV Version ";
  • с помощью Audacity:
    • Tracks > Stereo Track to Mono;
    • Project Rate (HZ) > установить 32000, 22050, 16000 или 11025;
    • File > Export > Save as type: Other uncompressed files > Options...;
    • выбрать WAV, Unsigned 8 bit PCM.

Затем с помощью компьютера скопируйте файл на SD карту.

Известные ограничения

Данная библиотека сильно нагружает процессор, и выполнение кода во время воспроизведения будет медленнее, чем обычно. Нагрузка от обработки аудиофайлов может быть уменьшена за счет использования аудио более низкого качества, кодированного с меньшей частотой дискретизации (с минимальным значением 8 кГц).

Возможно влияние на другие библиотеки, которые используют прерывания. Функции isPlaying() , disable() или noInterrupts() могут использоваться для предотвращения параллельного выполнения кода.

Управление громкостью допускает хороший диапазон регулировки громкости, но при большой громкости возможно появление искажений.

Загрузка

Также проект можно найти на GitHub: ссылка .

Функции

TMRpcm audio; audio.play("filename"); // воспроизвести файл audio.play("filename",30); // воспроизвести файл, начиная с 30-ой секунды audio.speakerPin = 11; // установить в значение 5, 6, 11 или 46 для Mega, 9 для Uno, Nano и т.д. audio.disable(); // выключить таймер на выходном выводе и остановить воспроизведение audio.stopPlayback(); // остановить воспроизведение, но таймер остается запущенным audio.isPlaying(); // возвращает 1, если идет воспроизведение, в противном случае - 0 audio.pause(); // поставить воспроизведение на паузу / снять с паузы audio.quality(1); // установить 1 для удвоения частоты дискретизации audio.volume(0); // 1 (включить) или 0 (выключить) для управления громкостью audio.setVolume(0); // от 0 до 7. Устанавливает уровень громкости. audio.loop(1); // 0 или 1. Может быть изменено во время воспроизведения для полного управления зацикливанием.

Пример использования

Это простая схема для проигрывания wav файлов с помощью Arduino Nano v.3.0, она содержит 4 кнопки, при нажатии каждой из которых воспроизводится заданный wav файл, загруженный на SD карту.

  1. Arduino Nano v3.0 (я использовал китайскую версию под названием Funduino Nano);
  2. модуль SD карты;
  3. SD карта;
  4. макетная плата;
  5. четыре кнопки;
  6. четыре резистора 22 кОм;
  7. один резистор 4,7 кОм;
  8. NPN транзистор BC546B;
  9. динамик;
  10. перемычки.

Подготовка SD карты

  1. Отформатируйте SD карту (убедитесь, что настройки форматирования совпадают с приведенными на скриншоте выше).
  2. Конвертируйте ваши аудиофайлы в.WAV файлы (я использовал программу Wav Sample rate converter) со следующими параметрами:
    • частота дискретизации: 16000 Гц;
    • количество каналов: моно;
    • количество бит на отсчет: 8.
  3. Wav файлы для примера приведены ниже.

Схема

Код

Перед написанием кода вам необходимо скачать (ссылка выше в разделе «Загрузка») и установить библиотеку TMRpcm.

#include // также необходимо включить данную библиотеку... TMRpcm tmrpcm; // создать объект для использования в данном скетче int SW1; int SW2; int SW3; int SW4; void setup() { pinMode(14,INPUT); // Определить A0 как цифровой вход. pinMode(15,INPUT); // Определить A1 как цифровой вход. pinMode(16,INPUT); // Определить A2 как цифровой вход. pinMode(17,INPUT); // Определить A3 как цифровой вход. tmrpcm.speakerPin = 9; // 11 на Mega, 9 на Uno, Nano и т.д. if (!SD.begin(SD_ChipSelectPin)) // проверить, есть ли карта, и может ли она быть инициализирована: { return; // если нет, то ничего не делать } tmrpcm.volume(1); tmrpcm.play("1.wav"); // звуковой файл "1" будет проигрываться при каждом включении или перезагрузке arduino } void loop() { SW1=digitalRead(14); SW2=digitalRead(15); SW3=digitalRead(16); SW4=digitalRead(17); if (SW1 == LOW) { // если SW1 нажата, то воспроизвести файл "6.wav" tmrpcm.play("6.wav"); } else if(SW2 == LOW) { // если SW2 нажата, то воспроизвести файл "4.wav" tmrpcm.play("4.wav"); } else if(SW3 == LOW) { // если SW3 нажата, то воспроизвести файл "5.wav" tmrpcm.play("5.wav"); } else if(SW4 == LOW) { // если SW4 нажата, то воспроизвести файл "3.wav" tmrpcm.play("3.wav"); } }

Поиск неисправностей

Если у вас не получилось заставить эту схему работать, то ниже приведены два тестовых скетча для поиска неисправностей. Код был протестирован на Arduino Nano, Uno и Mega.

Подключать кнопки нет необходимости, файлы будут воспроизводится автоматически.

Нет необходимости подключать транзистор, подключите небольшой динамик или наушники напрямую к выводу 9 платы Arduino Nano или к выводу 11 платы Arduino Mega.

Arduinio Nano

Соединение выводов
Arduino Nano SD карта
12 MISO
11 MOSI
13 SCK
4 CS
9 динамик
GND GND
5V VCC
#include // необходимо включить SD библиотеку #define SD_ChipSelectPin 4 // использование цифрового вывода 4 на arduino nano 328 #include TMRpcm tmrpcm; // создать объект для использования в данном скетче void setup() { tmrpcm.speakerPin = 9; // 11 на Mega, 9 на Uno, Nano и т.д. if (!SD.begin(SD_ChipSelectPin)) // проверить, есть ли карта, и может ли она быть инициализирована: { return; // если нет, то ничего не делать } tmrpcm.volume(1); } void loop() { tmrpcm.play("6.wav"); delay(1000); tmrpcm.play("4.wav"); delay(3000); tmrpcm.play("5.wav"); delay(4000); tmrpcm.play("3.wav"); delay(2000); }

Arduino Mega

Соединение выводов
Arduino Mega SD карта
50 MISO
51 MOSI
52 SCK
53 CS
11 динамик
GND GND
5V VCC
#include // необходимо включить SD библиотеку #define SD_ChipSelectPin 53 // использование цифрового вывода 4 на arduino nano 328 #include // также необходимо включить данную библиотеку... #include TMRpcm tmrpcm; // создать объект для использования в данном скетче void setup() { tmrpcm.speakerPin = 11; //11 on Mega, 9 on Uno, Nano, etc if (!SD.begin(SD_ChipSelectPin)) // проверить, есть ли карта, и может ли она быть инициализирована: { return; // если нет, то ничего не делать } tmrpcm.volume(1); } void loop() { tmrpcm.play("6.wav"); delay(1000); tmrpcm.play("4.wav"); delay(3000); tmrpcm.play("5.wav"); delay(4000); tmrpcm.play("3.wav"); delay(2000); }

Если тестовый код работает, то добавьте строку #include в программу с кнопками.

Если звука всё равно нет, то добавьте задержку между командами воспроизведения delay(1000); .

Дополнительные возможности

Данная библиотека предназначалась для простого и удобного пользователю использования в качестве проигрывателя wav аудиофайлов, использующего стандартные библиотеки Arduino и воспроизводящего файлы в простейшем wav формате. Многие дополнительные функции были добавлены по запросам пользователей и включены в pcmConfig.h , чтобы сохранить изначальную простоту.

Большинство дополнительных функций требуют больше памяти RAM, больше программной памяти и, в некоторых случаях, большей вычислительной мощности для воспроизведения. Некоторые из них до сих пор еще отлажены не полностью. Помните об этом при включении данных функций.

Смотрите pcmConfig.h для настройки следующих параметров:

Пользовательские определения

В pcmConfig.h настраиваются следующие параметры:

Настройка параметров TMRpcm
Параметр Описание
#define buffSize 128 Управляет размером двух буферов (или четырех в режиме MULTI).
#define DISABLE_SPEAKER2 Выключает вывод по умолчанию второго динамика для совместимости с другими библиотеками (вывод 10 на Uno).
#define ENABLE_MULTI Включает режим воспроизведения нескольких треков (по умолчанию на одном таймере).
#define STEREO_OR_16BIT Включает воспроизведение стерео или 16-битных файлов.
#define MODE2 Включает режим двойного таймера для воспроизведения нескольких треков. Не доступен с TIMER2.
#define SDFAT Библиотека SdFat использует меньше памяти программ и RAM. Смотрите пример SDFAT в составе данной библиотеки.
#define HANDLE_TAGS Пропускает теги WAV файлов, которые содержат метаданные.
#define USE_TIMER2 Использует 8-разрядный TIMER2, вместо 16-разрядных таймеров.
#define rampMega Принудительный ручной выбор включения/выключения метода линейного изменения ШИМ.
#define ENABLE_RF Включает стриминг аудио через радиоканал (NRF24L01+).

Второй громкоговоритель / двухтактный режим

Данная библиотека по умолчанию выводит данные на два вывода таймер, хотя по умолчанию полностью включен только один.

Для включения дополнительный вывод должен быть настроен на выход, например:

  • Arduino Uno (один выход): audio.speakerPin = 9;
  • Arduino Uno (двухтактный выход): audio.speakerPin = 9; pinMode(10,OUTPUT);

Чтобы полностью выключить второй выход, раскомментируйте в pcmConfig.h строку #define DISABLE_SPEAKER2 .

Режим Multi

Режим Multi включает одновременное воспроизведение двух треков.

Функции множественного режима немного отличаются от функций стандартного режима:

Audio.speakerPin2 = 5; // То же действие, что и в стандартном режиме, используется только с 4-выводным выходом audio.play("sound.wav"); // Воспроизвести файл на выходе 0 audio.play("sound.wav",30,1); // Воспроизвести файл, начиная с 30-ой секунды, на выходе 1 audio.play("sound.wav",0); // play(имя_файла, выход 0 или 1) определяется speakerpin или speakerpin2 audio.stopPlayback(0); // Может принимать номер выхода 0 или 1 audio.isPlaying(0); // Может принимать номер выхода 0 или 1 audio.setVolume(4,0); // Установить громкость на выходе 0 audio.volume(0,1); // Уменьшить громкость на выходе 1

  • по умолчанию: использует тот же таймер и выводы, что и в обычном режиме с двухтактным выходом;
  • MODE2: использует два 16-разрядных таймера и до 4-х выводов.

Использование:

  • рекомендуемая частота дискретизации 16-20 кГц;
  • размер буфера может быть увеличен для улучшения производительности;
  • звуки, воспроизводимые одновременно, должны иметь одинаковые частоты дискретизации;
  • для включения режима multi раскомментируйте определение в pcmConfig.h;
  • переменная audio.speakerPin2 должна быть установлена в 4-выводном режиме для выбора дополнительного таймера / вывода, которые будут использоваться.

Упрощенные режимы:

Примечание: все 4-выводные режимы требуют платы с двумя и более 16-разрядными таймерами.

Воспроизведение стерео и 16-битного аудио

Эти режимы требуют дополнительных ресурсов и вычислительной мощности, так как с SD карты должны считываться удвоенные данные. Треки моно могут воспроизводиться в режиме стерео, но не наоборот.

В стандартном режиме:

#define STEREO_OR_16BIT В этом режиме стерео и 16-битные файлы обрабатываются одинаково, причем первый байт считывает на один выход, а второй байт - на другой. Это дает в результате стерео выход на двух динамиках, подключенных между выводом (выводами) динамика и корпусом, или один 16-разрядный выход, использующий резисторную матрицу. #define MODE2 В стандартном режиме MODE2 позволяет выводить стерео или 16-разрядный звук, используя два дополнительных вывода таймера. Таймер и выводы указываются переменой speakerPin2 . Двухтактные выводы таймера должны быть настроены на выход вручную.

В режиме Multi:

#define STEREO_OR_16BIT Включение этой опции вместе с режимом MULTI позволит воспроизводить два стерео или 16-разрядных трека на отдельных выводах таймера. Это обеспечивает выход для четырех громкоговорителей, подключенных между выводом (выводами) и корпусом, или один 16-разрядный выход для каждого трека. #define MODE2 Включение этой опции с режимом MULTI и STEREO_OR_16BIT ни на что не влияет.

Использование SDFAT

Библиотека SDFAT может использоваться для уменьшения использования оперативной памяти и памяти программ и для повышения производительности. Файлы должны быть включены в скетч. Смотрите пример в архиве с библиотекой.

Метаданные (теги ID3v2.3 и LIST)

Функции были добавлены для чтения данных о песне, артисте и альбоме из тегов ID3v2.3 и LIST в WAV файлах.

Примечание: добавление, модифицирование и редактирование метаданных поддерживает программа Audacity.

ListInfo Прочитать теги LIST в символьный буфер, возвращает длину тега. id3Info Прочитать теги ID3 в символьный буфер, возвращает длину тега. getInfo Ищет оба тега и считывает в символьный буфер, возвращает длину тега. Первым ищется ID3.

Теги для запросов:

  1. 0 = название песни;
  2. 1 = имя артиста;
  3. 2 = название альбома.

Синтаксис:

Byte length = audio.listInfo(,,); byte length = audio.id3Info(,,); byte length = audio.getInfo(,,);

  1. Найти только информацию LIST и напечать название песни через последовательный порт. char info; audio.listInfo("song.wav",info,0); Serial.print(info);Serial.println(":");
  2. Найти информацию ID3v2.3 и LIST и напечатать информацию о песне, артисте и альбоме через последовательный порт. char info; char* titles = {"Now Playing: ", "by: ", "Album: "}; for(int i=0; i<3; i++) { if(audio.getInfo("song1.wav",info,i) > 0) { Serial.print(titles[i]); Serial.println(info); } } audio.play("song1.wav");

Использование TIMER2

Часто данная библиотека используется с платами Uno, Nano и т.д. только с одним 16-разрядным таймером. Когда TIMER1 необходим для других целей, для воспроизведения аудио может быть использован TIMER2.

Выводы динамика - на Uno, Nano и т.д. только вывод 3.

Для включения использования 8-разрядного TIMER2 раскомментируйте строку #define USE_TIMER2 в секции пользовательских определений.

Примечания:

  1. этот вариант, как правило, является не самым лучшим решением;
  2. скорость воспроизведения будет слегка отличаться от использования 16-разрядных таймеров;
  3. воспроизведение на TIMER2 поддерживает нестандартные частоты дискретизации: 31,4 кГц, 23,5 кГц и 15,7 кГц;
  4. увеличение частоты дискретизации включено по умолчанию и в этом режиме не может быть изменено;
  5. рекомендуются частоты дискретизации 24-32 кГц при размере буфера 128.

ШИМ и опция rampMega

В попытках уменьшить шумы треска, создаваемые ШИМ, было опеределено четыре основных источника проблемы:

  1. включение ШИМ/таймеров на Arduino;
  2. выключение ШИМ/таймеров на Arduino;
  3. разница в значениях между треками;
  4. парсинг незвуковых данных.
  • 1 и 2. При тестировании на платах Arduino Duemianove и Mega я обнаружил необходимость в разных методах линейного изменения при включении и выключении. Надеюсь, это решит проблему на большинстве других плат.
  • 3. Код линейного изменения между треками не меняется. При воспроизведении треков с разными частотами дискретизации используйте функцию disable() для выключения таймеров между изменениями. Смотрите также #4.
  • 4. Опция HANDLE_TAGS включена в pcmConfig.h , чтобы обеспечить правильное воспроизведение wav-файлов с включенными метаданными (ID3 или LIST).

Простое цифровое создание WAV файлов

Данные функции будут генерировать стандартные WAV файлы. Исходные данные с аналоговых входов или других датчиков могут быть записаны в файл для генерации цифрового звука, который может быть воспроизведен на любом устройстве, поддерживающем WAV файлы, или легко конвертирован в другие форматы.

Примечание: в дальнейшем будут добавлены и другие форматы wav.

Синтаксис:

Audio.createWavTemplate(,); audio.finalizeWavTemplate();

Использование:

Смотрите пример, включенный в библиотеку. Создайте файл шаблона, затем запишите в него данные, начиная с 44 байта. Используйте команду finalizeWavTemplate , чтобы добавить данные о размере файла перед воспроизведением.

Примечания: Если указанный файл существует, он будет перезаписан при создании, но обновлен только при завершении. Эти функции при использовании функций записи вызываются автоматически.

Запись звука

Запись звука находится всё еще в тестировании и может работать не так, как ожидается.

Функции:

StartRecording Начать запись с указанного аналогового вывода. stopRecording Остановить запись и финализировать wav файл.

Проходной режим - во время записи выдает звук на динамик.

Режимы: 0 - нормальный/нет; 1 - динамик включен; 2 - записи нет, вывод только на динамик.

Синтаксис:

Audio.startRecording(,, ); audio.startRecording(,, , ); audio.stopRecording();

Использование:

  1. раскомментируйте #define buffSize 128 и #define ENABLE_RECORDING в pcmConfig.h ;
  2. начните запись audio.startRecording("sound.wav",16000,A0);
  3. остановите запись audio.stopRecording("sound.wav");

Примечания:

  • для записи рекомендуется библиотека SdFat;
  • рекомендуются SD карты минимум класса 4;
  • возможно, понадобится увеличение buffSize .

Объявление

Формат файлов WAV Audio

Файлы WAV (WAVE) были созданы компанией IBM и Microsoft. Они содержат различные аудиоданные - звуки, звуковые эффекты, музыку, а также записи голоса. Программы проигрывания медиафайлов (Windows Media Player, QuickTime и т.п.) могут воспроизводить и открывать такие файлы. Файлы WAV значительно больше файлов MP3, и именно поэтому они не пользуются популярностью. Отличительная черта файлов WAV - их технология сжатия звука без потерь. Полученные файлы отличаются высоким качеством и большими размерами, что значительно вредит их популярности. Отправка и загрузка таких файлов требует много времени и дискового пространства.

Технические сведения о файлах WAV

Файлы WAV используют формат файлов для обмена ресурсами, с помощью которого происходит сохранение данных. Данные хранятся в кластерах, которые содержат тег из 4 символов, а также кол-во байт в кластере. Аналог данного формата для ОС Mac - файлы AIFF. Файлы WAV могут иметь семплы от 8 до 16 бит при частотах от 11 025 до 44 100 Гц. Максимальное качество файлов WAV - 16 бит, 44 100 Гц, и именно такой частотой дискретизации обладают дорожки на компакт-дисках, на которых секунда звука "весит" 88 кБ. При кодировании цифрового потока обычно используется формат линейной-импульсно-кодовой модуляции. Системные звуки в ОС Windows при запуске ОС, нажатии на ярлыки, при выдаче ошибок, выключении компьютера и т.п. представляют собой несжатые файлы WAV.

Дополнительная информация о формате WAV

What is WAV file? WAV (WAVE) is short for Waveform Audio File Format. WAV is an audio standard developed by Microsoft and IBM specifically for storing audio bitstream on computers. The WAV file used for raw and uncompressed audio, and it has grown to become a standard computer audio format for everything from system and game sounds to radio broadcasting.

Since WAV file is very popular now, it is not hard to find an audio player that is compatible with WAV file. In this article, we have listed the best WAV player we could find for you to play WAV player smoothly on PC/Mac.

Best WAV player for Windows/Mac

Расширение файла .wav
Категория файлов
Файл-пример (6,1 MiB)
(1,5 MiB)
Связанные программы CyberLink PowerDirector
Microsoft Windows Media Player
Roxio Creator 2009
9
No. Screenshot Features
1 Free Media Player
  • ◆ Best free all-in-one WAV player for Windows/Mac users.
    ◆ Enable to play HD/4K UHD videos.
    ◆ Support audio formats like WAV, OGG, FLAC, AAC, MP3, etc.
2
(WAV player for: Windows/Mac)
  • ◆ Play WAV, FLAC, MP3, OGG, WMA, AAC, etc.
    ◆ Play WMV, MP4, MKV, MTS, M2TS, VOB, and more video files.
    ◆ Play Blu-ray disc/folder.
3 VLC Media Player
(WAV player for: Windows/Mac)
  • ◆ One of the most popular media player, work as a video player or a audio player.
  • ◆ Supported audio/video formats: WAV, FLAC, MP4, MP3, AVI, MKV, WMV, VOB and more.
  • ◆ WAV player for both Windows/Mac. Simple and easy-to-use.
4

(WAV player for: Windows)

  • ◆ Default WAV player for Windows.
  • ◆ Clean and simple interface.
5
(WAV player for: Mac)
  • ◆ Default WAV player for Mac.
  • ◆ Play audio formats smoothly like WAV, FLAC, M4A, AAC, WAV, WMA, APE, OGG, etc.
  • ◆ A good audio managment tool for iPhone, iPad and iPod.
6

(WAV player for: Windows/Mac)

  • ◆ Free and most popular audio player which can player WAV file greatly.
  • ◆ Winamp can be downloaded and installed on Windows, Mac, iOS and Android.
  • ◆Include music visualization, playlist creation, plug-ins, skins and a media library.
7
(WAV player for: Windows)
  • ◆ Free WAV player for Windows 8/7/Vista/XP.
  • ◆ Support more than 80 types of video/audio formats including WAV.
  • ◆ Everything needed is included in the setup program. No obscure codecs needed.
8
(WAV player for: Mac)
  • ◆ A multifunctional free media player for Mac that can be taken as WAV player.
  • ◆ Supports a wide range of common audio & video formats, including WAV, FLV, SWF, WMV, AVI, MOV, MP4, MP3, DAT, FLAC, M4V, MPG, MKV and more
  • ◆Boasts features such as built-in web-browser and Open URL option that allow you to watch online videos from the app window.

(WAV player for: Windows)
  • ◆ An excellent audio player that can play WAV, FLAC, MP3, M4A, AAC, OGG, WMA and more.
    ◆ Sync music from various devices to your computer and works as an alternative to itunes as well.
10 VOX
(WAV player for: Mac/Windows)
  • ◆ Vox media player can play WAV, FLAC, OGG, WMA, MP3 and other audio files.
  • ◆ Vox has Vox for Mac and Vox for Windows.
  • ◆ Enable you to listen to any kind of music on any kind of your wireless output devices.

Q&A about WAV playback

In this article, I have introduced 8 best WAV players for you to play WAV file smoothly on Wuter or pindows or Mac. Of course, a WAV player is not optional. You could also try to convert WAV file to MP3 for easy enjoyment on iPhone/iPod. Have better WAV player recommendation? Feel free to leave your suggestion down below!

Q1. How to free play WAV files on Mac?

Free Media Player is definitely what you want. This free Mac WAV player is able to let you paly WAV files with great audio quality.


Q2. Can VLC play WAV files?

Yes, VLC can play WAV files. VLC comes equipped with the digital programming that instructs it how to handle data sent via the WAV format.

1) Launch the VLC media player. Click on "Media" from the menu bar.
2) Click on "Open File" from the pop-up window and get ready to load your WAV files.
3) Click on the "Open" button. The WAV file will load and the VLC media player will start playing it automatically.

Q3. How do I play WAV file on my mobile phone?

You can use Free Video Converter to free convert music to WAV format and then play WAV iPhone or Android smartphone.

In this article, I have introduced best WAV players for you to play WAV file smoothly on Windows or Mac. What is your favorite WAV Player? Leave what you want to say below!

What do you think of this post?