pschatzmann / arduino-audio-tools

Arduino Audio Tools (a powerful Audio library not only for Arduino)
GNU General Public License v3.0
1.46k stars 227 forks source link

Previously working Volume code now has errors. #1457

Closed mooballs closed 6 months ago

mooballs commented 6 months ago

Problem Description

Code used to work but possibly because of a 'Redesign Volume Mgmt' commit a couple of days ago it no longer compiles and I get this error:

In file included from C:\Users\marky\OneDrive\Documents\Arduino\BTfaultfind\BTfaultfind.ino:7: c:\Users\marky\OneDrive\Documents\Arduino\libraries\arduino-audio-tools-main\src/AudioLibs/AudioA2DP.h:258:14: error: conflicting return type specified for 'virtual void audio_tools::A2DPStream::setVolume(float)' void setVolume(float volume) override { ^~~~~ In file included from c:\Users\marky\OneDrive\Documents\Arduino\libraries\arduino-audio-tools-main\src/AudioTimer/AudioTimerBase.h:4, from c:\Users\marky\OneDrive\Documents\Arduino\libraries\arduino-audio-tools-main\src/AudioTimer/AudioTimer.h:10, from c:\Users\marky\OneDrive\Documents\Arduino\libraries\arduino-audio-tools-main\src/AudioTools.h:65, from C:\Users\marky\OneDrive\Documents\Arduino\BTfaultfind\BTfaultfind.ino:4: c:\Users\marky\OneDrive\Documents\Arduino\libraries\arduino-audio-tools-main\src/AudioTools/AudioTypes.h:185:18: note: overridden function is 'virtual bool audio_tools::VolumeSupport::setVolume(float)' virtual bool setVolume(float volume) { ^~~~~

exit status 1

Compilation error: exit status 1

Device Description

ESP32 Wroom

Sketch

#include "AudioTools.h"
#include "BluetoothA2DPSink.h"

#include "AudioLibs/AudioA2DP.h"
#include "AudioConfigLocal.h"

AudioInfo info(44100, 2, 16);    //configuration for out1
BluetoothA2DPSink a2dp_sink;
A2DPStream in;  // had to copy a2dp in to out, then wrap out in volume and eq then use multioutput to get vol_info
MultiOutput out;
StreamCopy copier(out, in);  //copying in to out
VolumePrint out1;            //changed from vol.info
I2SStream out2;              //changed from i2s
//A2DPStream in;
VolumeStream volume(out);
LinearVolumeControl(lvc);  //this is for using the log pot

Equilizer3Bands eq(volume);  //must wrap the stream up correctly
//StreamCopy copier(eq, i2s); // copy in to equilizer
ConfigEquilizer3Bands cfg_eq;

#define I2S_BUFFER_SIZE 1024  //default is 512
#define I2S_BUFFER_COUNT 6    //default is 6

int VolLevel = 0;

void writeDataStream(const uint8_t *data, uint32_t length) {
  out1.write(data, length);
}

void read_data_stream(const uint8_t *data, uint32_t length) {
  eq.write(data, length);
}

// Arduino Setup
void setup() {

  Serial.begin(115200);

  out.add(out1);  //multi-outs
  out.add(out2);

  AudioLogger::instance().begin(Serial, AudioLogger::Warning);  //tried setting to Warning from Info to aid audio quality

  out1.begin(info);     //begin stream

  //i2s_out esp32 external DAC
  auto config = out2.defaultConfig(TX_MODE);
  config.pin_bck = 26;
  config.pin_ws = 25;
  config.pin_data = 23;
  config.sample_rate = 44100;  //changed from a2dp_sink.sample_rate();
  config.channels = 2;
  config.bits_per_sample = 16;
  config.buffer_size = I2S_BUFFER_SIZE;
  config.buffer_count = I2S_BUFFER_COUNT;
  out2.begin(config);

  cfg_eq = eq.defaultConfig();
  cfg_eq.setAudioInfo(config);  // use channels, bits_per_sample and sample_rate from kit

  cfg_eq.gain_medium = 0.5;

  eq.begin(cfg_eq);

  // set initial volume
  volume.begin(config);  // we need to provide the bits_per_sample and channels
  volume.setVolume(0.0);
  volume.setVolumeControl(lvc);  //for using log pot
  // register callback
  //a2dp_sink.set_pin_config(my_pin_config);
  a2dp_sink.set_stream_reader(writeDataStream, false);
  a2dp_sink.set_stream_reader(read_data_stream, false);

  a2dp_sink.set_mono_downmix(true);  //makes mono
  Serial.print("starting a2dp...");
  // Start Bluetooth Audio Receiver
  a2dp_sink.set_auto_reconnect(true);
  a2dp_sink.start("BT");  //bluetooth name
}

// Arduino loop
void loop() {
  copier.copy();  //trying this
}

Other Steps to Reproduce

No response

What is your development environment

Arduino

I have checked existing issues, discussions and online documentation

pschatzmann commented 6 months ago

The correction has been committed