45 lines
1.4 KiB
Arduino
45 lines
1.4 KiB
Arduino
|
|
/**
|
||
|
|
* @file basic-generator-a2dp.ino
|
||
|
|
* @author Phil Schatzmann
|
||
|
|
* @brief We send a test sine signal to a bluetooth speaker
|
||
|
|
* @copyright GPLv3
|
||
|
|
*/
|
||
|
|
|
||
|
|
#include "AudioTools.h"
|
||
|
|
#include "AudioTools/Communication/A2DPStream.h" // https://github.com/pschatzmann/ESP32-A2DP
|
||
|
|
|
||
|
|
const char* name = "LEXON MINO L"; // Replace with your bluetooth speaker name
|
||
|
|
SineGenerator<int16_t> sineWave(15000); // subclass of SoundGenerator, set max amplitude (=volume)
|
||
|
|
GeneratedSoundStream<int16_t> in_stream(sineWave); // Stream generated from sine wave
|
||
|
|
BluetoothA2DPSource a2dp_source; // A2DP Sender
|
||
|
|
|
||
|
|
// callback used by A2DP to provide the sound data - usually len is 128 * 2 channel int16 frames
|
||
|
|
int32_t get_sound_data(uint8_t * data, int32_t len) {
|
||
|
|
return in_stream.readBytes((uint8_t*)data, len);
|
||
|
|
}
|
||
|
|
|
||
|
|
// Arduino Setup
|
||
|
|
void setup(void) {
|
||
|
|
Serial.begin(115200);
|
||
|
|
AudioToolsLogger.begin(Serial, AudioToolsLogLevel::Warning);
|
||
|
|
|
||
|
|
// start input
|
||
|
|
auto cfg = in_stream.defaultConfig();
|
||
|
|
cfg.bits_per_sample = 16;
|
||
|
|
cfg.channels = 2;
|
||
|
|
cfg.sample_rate = 44100;
|
||
|
|
in_stream.begin(cfg);
|
||
|
|
sineWave.begin(cfg, N_B4);
|
||
|
|
|
||
|
|
|
||
|
|
// start the bluetooth
|
||
|
|
Serial.println("starting A2DP...");
|
||
|
|
a2dp_source.set_auto_reconnect(false);
|
||
|
|
a2dp_source.set_data_callback(get_sound_data);
|
||
|
|
a2dp_source.start(name);
|
||
|
|
}
|
||
|
|
|
||
|
|
// Arduino loop - repeated processing
|
||
|
|
void loop() {
|
||
|
|
delay(1000);
|
||
|
|
}
|