Ferramenta de Design de Sistema de Áudio

Este wiki apresenta como usar a Ferramenta de Design de Sistema de Áudio para projetar um sistema de áudio para a biblioteca Audio usando o Wio Terminal e o ReSpeaker 2-Mit Hat. Isso torna o design de sistemas de áudio muito mais fácil quando você pode ver para onde as entradas e saídas estão indo.
Este é um fork da Seeed da Audio System Design Tool for Teensy Audio Library.
Primeiros Passos
-
Visite a Ferramenta de Design de Sistema de Áudio aqui. Para mais informações sobre isso, visite também o teensy.
-
Assim que estiver no site, você deverá ver todos os recursos disponíveis da biblioteca Audio na coluna da esquerda.
-
Você pode clicar em cada classe e ver quais são as funções disponíveis dentro de cada classe e como usá-las.
Projetando um Sistema de Áudio
Reproduzindo arquivos de música a partir do cartão SD
Vamos percorrer um exemplo para entender o básico do Sistema de Design de Áudio. Digamos que você queira simplesmente reproduzir uma música do cartão SD pelo alto-falante através do ReSpeaker 2-Mic Hat:
-
INPUTé a reprodução a partir do cartão SD. -
OUTPUTé a saída I2S. -
wm8960é a unidade de controle do ReSpeaker 2-Mics.
Portanto, o design deve ser algo como isto:

- Clique em Export na parte superior para exportar as definições de Macros do sistema para colar na Arduino IDE.

Código de Exemplo
Este código de exemplo usa as definições de Macros do sistema projetado anteriormente e reproduz arquivos de música do cartão SD.
Certifique-se de que haja arquivos de música SDTEST1.wav, SDTEST2.wav, SDTEST3.wav e SDTEST4.wav no cartão MicroSD do Wio Terminal.
#include <Audio.h>
#include <Wire.h>
#include <Seeed_FS.h>
#include "SD/Seeed_SD.h"
// GUItool: begin automatically generated code
AudioPlaySdWav playSdWav1; //xy=376,277
AudioOutputI2S i2s1; //xy=611,277
AudioConnection patchCord1(playSdWav1, 0, i2s1, 0);
AudioConnection patchCord2(playSdWav1, 1, i2s1, 1);
AudioControlWM8960 wm8960_1; //xy=496,363
// GUItool: end automatically generated code
void setup() {
Serial.begin(9600);
while(!Serial);
// Audio connections require memory to work. For more
// detailed information, see the MemoryAndCpuUsage example
AudioMemory(8);
wm8960_1.enable();
wm8960_1.volume(0.7);
while (!SD.begin(SDCARD_SS_PIN,SDCARD_SPI,10000000UL)) {
Serial.println("Card Mount Failed");
return;
}
}
void playFile(const char *filename)
{
Serial.print("Playing file: ");
Serial.println(filename);
// Start playing the file. This sketch continues to
// run while the file plays.
playSdWav1.play(filename);
// A brief delay for the library read WAV info
delay(5);
// Simply wait for the file to finish playing.
while (playSdWav1.isPlaying()) {
}
}
void loop() {
playFile("SDTEST1.WAV"); // filenames are always uppercase 8.3 format
delay(500);
playFile("SDTEST2.WAV");
delay(500);
playFile("SDTEST3.WAV");
delay(500);
playFile("SDTEST4.WAV");
delay(1500);
}
Detecção de Pico
Vamos usar a ferramenta de design para projetar um sistema de detecção de pico enquanto reproduz a música a partir do cartão SD.
-
INPUTé a reprodução a partir do cartão SD. -
OUTPUTé a saída I2S e dois picos! Um pico para o canal esquerdo e um pico para o canal direito. -
wm8960é a unidade de controle do ReSpeaker 2-Mics.

Código de Exemplo
Confira aqui.
Visualizador de Espectro de Áudio
Este é o exemplo de reprodução de música a partir do cartão SD enquanto é executada uma FFT para obter os dados de frequência para implementar um Visualizador de Espectro de Áudio.
-
INPUTé a reprodução a partir do cartão SD. -
OUTPUTé a saída I2S e os cálculos de FFT. -
wm8960é a unidade de controle do ReSpeaker 2-Mics.
Aqui apresentaremos outro recurso útil, o Mixer. Ele permite combinar no máximo quatro canais de áudio em um só. Isso é usado porque executar a FFT em canais combinados (esquerdo e direito) é mais preciso do que em um único canal.

Código de Exemplo
Confira aqui.
Gravação e Reprodução em Tempo Real
Desta vez vamos projetar um sistema para gravar e reproduzir em tempo real!
-
INPUTé a gravação a partir do microfone: Input I2S -> RecordQueue -
OUTPUTé a saída I2S. PlayQueue -> Output I2S -
wm8960é a unidade de controle do ReSpeaker 2-Mics.

Código de Exemplo
Confira aqui.