• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

ESP8266 Audio вопрос по библиотеке

FiNick

New member
Всем привет! Хочу озвучить один свой проект посредством библиотеки ESP8266 Audio.
earlephilhower/ESP8266Audio
Пытаюсь разобраться с примерами из библиотеки и вот тут засада .
Из приведенных в примере воспроизводится только PlayWAVFromPROGMEM, компилируется, есть звук, качество устраивает... Но не могу заменить файл viola.h.... Есть ли у кого удачный опыт использования данной библиотеки в составе встроенной памяти и встроенного DAC . Как и каким ПО пользуетесь для конвертациии WAV файла в HEX формат ?
 

Алексей.

Active member
Как и каким ПО пользуетесь для конвертациии WAV файла в HEX формат ?
Обычным hexdump-ом, посмотрим первые 64 байта файла CAMERA.WAV
alex@vb-u16:~/wav$ hexdump -n 64 -vC CAMERA.WAV
Код:
00000000  52 49 46 46 8c 15 00 00  57 41 56 45 66 6d 74 20  |RIFF....WAVEfmt |
00000010  10 00 00 00 01 00 01 00  11 2b 00 00 11 2b 00 00  |.........+...+..|
00000020  01 00 08 00 64 61 74 61  68 15 00 00 80 80 80 80  |....datah.......|
00000030  80 80 80 80 80 80 80 80  80 80 80 80 80 80 80 80  |................|
00000040
Те же первые 64 байта файла hexdump-ом для вставки как строки в си-шный код
Код:
alex@vb-u16:~/wav$ hexdump -n 64 -e '16/1 "_x%02X" "\n"' CAMERA.WAV | sed 's/_/\\/g; s/.*/    "&"/'
    "\x52\x49\x46\x46\x8C\x15\x00\x00\x57\x41\x56\x45\x66\x6D\x74\x20"
    "\x10\x00\x00\x00\x01\x00\x01\x00\x11\x2B\x00\x00\x11\x2B\x00\x00"
    "\x01\x00\x08\x00\x64\x61\x74\x61\x68\x15\x00\x00\x80\x80\x80\x80"
    "\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80"
А если совсем лениво и хотим сразу заголовочный файл, берем xxd
Код:
alex@vb-u16:~/wav$ xxd --include CAMERA.WAV
unsigned char CAMERA_WAV[] = {
  0x52, 0x49, 0x46, 0x46, 0x8c, 0x15, 0x00, 0x00, 0x57, 0x41, 0x56, 0x45,
  0x66, 0x6d, 0x74, 0x20, 0x10, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00,
  0x11, 0x2b, 0x00, 0x00, 0x11, 0x2b, 0x00, 0x00, 0x01, 0x00, 0x08, 0x00,
...
  0x7c, 0x7c, 0x7c, 0x7c, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
  0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x80, 0x7c, 0x80,
  0x80, 0x7c, 0x7c, 0x7c, 0x7c, 0x80, 0x7c, 0x7c, 0x80, 0x80, 0x80, 0x80,
  0x80, 0x7c, 0x7c, 0x80
};
unsigned int CAMERA_WAV_len = 5524;

ПС:
Если пользователи виндовса молчат, то это вопрос на очевидный ответ или это никому не нужно, тем не менее начиная с Windows7 в дистрибутиве содержится довольно мощное средство автоматизации PowerShell, можно воспользоваться им.

PS D:\tmp> Get-Content .\CAMERA.WAV -Encoding Byte `
-ReadCount 16 | ForEach-Object {
$output = ""
foreach ( $byte in $_ ) {
#BEGIN CALLOUT A
$output += "0x{0:X2}, " -f $byte
#END CALLOUT A
}
$output
}

0x52, 0x49, 0x46, 0x46, 0x8C, 0x15, 0x00, 0x00, 0x57, 0x41, 0x56, 0x45, 0x66, 0x6D, 0x74, 0x20,
0x10, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x11, 0x2B, 0x00, 0x00, 0x11, 0x2B, 0x00, 0x00,
0x01, 0x00, 0x08, 0x00, 0x64, 0x61, 0x74, 0x61, 0x68, 0x15, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80,
0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
...
0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7C, 0x80, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C,
0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C,
0x7C, 0x80, 0x7C, 0x80, 0x80, 0x7C, 0x7C, 0x7C, 0x7C, 0x80, 0x7C, 0x7C, 0x80, 0x80, 0x80, 0x80,
0x80, 0x7C, 0x7C, 0x80,


источник
 
Последнее редактирование:

FiNick

New member
Вот похоже результат работы xxd , похож на формат файла из примера. Но видимо мой уровень знаний не достаточен для понимания. Есть ли более простой способ получения нужного файла или подробного описания?
 
Сверху Снизу