Расширение файла WAV. Работа с SD картой

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

Для чего нужен файловый формат.WAV?

Расширение имени файла .wav используется в основном с файлами, содержащими несжатые звуковые данные. Этот формат аудио был введен компанией Майкрософт. Несжатые файлы WAV поддерживаются практически всеми программами, способными работать со звуком, что делает этот формат универсальным.

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



Несжатые файлы WAV считаются "чистым аудио" из-за того, что звук в них не подвергался цифровой обработке. В связи с этим они являются неплохим выбором для тех, кто хочет скопировать звуковые файлы без потери качества. Если сравнивать с файлами в формате MP3, несжатые файлы WAV отличаются значительно большим размером: каждая минута записи занимает около 10 Мб в случае файла .wav и только 1 Мб в случае .mp3 со средними настройками.

Помимо несжатого аудио, файлы .wav могут также содержать звуковые данные, сжатые одним из следующих кодеков: ADPCM, MPEG Layer-3, Truespeech, Microsoft GSM 06.10, CELP, SBC. Сжатые файлы WAV занимают значительно меньше места и хуже поддерживаются различными приложениями.

Программы для открытия или конвертации WAV файлов

Вы можете открыть файлы WAV с помощью следующих программ:

Воспроизведение 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 .

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

Например, на данном рисунке выделен файл my-file.wav , далее необходимо щелкнуть правой кнопкой мыши по этому файлу, и в меню файла выбрать опцию «сканировать с помощью AVG» . При выборе данного параметра откроется AVG Antivirus, который выполнит проверку данного файла на наличие вирусов.


Иногда ошибка может возникнуть в результате неверной установки программного обеспечения , что может быть связано с проблемой, возникшей в процессе установки. Это может помешать вашей операционной системе связать ваш файл WAV с правильным прикладным программным средством , оказывая влияние на так называемые «ассоциации расширений файлов» .

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


Совет: Попробуйте обновить Microsoft Windows Media Player до последней версии, чтобы убедиться, что установлены последние исправления и обновления.


Это может показаться слишком очевидным, но зачастую непосредственно сам файл WAV может являться причиной проблемы . Если вы получили файл через вложение электронной почты или загрузили его с веб-сайта, и процесс загрузки был прерван (например, отключение питания или по другой причине), файл может повредиться . Если возможно, попробуйте получить новую копию файла WAV и попытайтесь открыть его снова.


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


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

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


Совет: Если при попытке открыть файл WAV вы получаете сообщение об ошибке, связанной с.SYS file , проблема, вероятно, может быть связана с поврежденными или устаревшими драйверами устройств , которые необходимо обновить. Данный процесс можно облегчить посредством использования программного обеспечения для обновления драйверов, такого как DriverDoc .


Если шаги не решили проблему , и у вас все еще возникают проблемы с открытием файлов WAV, это может быть связано с отсутствием доступных системных ресурсов . Для некоторых версий файлов WAV могут потребоваться значительный объем ресурсов (например, память/ОЗУ, вычислительная мощность) для надлежащего открытия на вашем компьютере. Такая проблема встречается достаточно часто, если вы используете достаточно старое компьютерное аппаратное обеспечение и одновременно гораздо более новую операционную систему.

Такая проблема может возникнуть, когда компьютеру трудно справиться с заданием, так как операционная система (и другие службы, работающие в фоновом режиме) могут потреблять слишком много ресурсов для открытия файла WAV . Попробуйте закрыть все приложения на вашем ПК, прежде чем открывать WAVE Audio File. Освободив все доступные ресурсы на вашем компьютере вы обеспечите налучшие условия для попытки открыть файл WAV.


Если вы выполнили все описанные выше шаги , а ваш файл WAV по-прежнему не открывается, может потребоваться выполнить обновление оборудования . В большинстве случаев, даже при использовании старых версий оборудования, вычислительная мощность может по-прежнему быть более чем достаточной для большинства пользовательских приложений (если вы не выполняете много ресурсоемкой работы процессора, такой как 3D-рендеринг, финансовое/научное моделирование или интенсивная мультимедийная работа). Таким образом, вполне вероятно, что вашему компьютеру не хватает необходимого объема памяти (чаще называемой «ОЗУ», или оперативной памятью) для выполнения задачи открытия файла.

2024 psiholog112.ru. Интернет. Безопасность. Полезные советы. Программы. Система.