mirror of
https://github.com/pschatzmann/arduino-audio-tools.git
synced 2024-09-22 10:57:31 +00:00
Compile issues for non ESP32 processors
This commit is contained in:
parent
23ee30916d
commit
0c466784d0
@ -7,7 +7,7 @@ Maximilian maximilian(out);
|
||||
|
||||
// Maximilian
|
||||
maxiOsc myOsc,myAutoPanner;//
|
||||
vector<double> myStereoOutput(2,0);
|
||||
vector<float> myStereoOutput(2,0);
|
||||
maxiMix myOutputs;//this is the stereo mixer channel.
|
||||
|
||||
void setup() {//some inits
|
||||
|
@ -146,6 +146,8 @@
|
||||
#define USE_I2S
|
||||
#define USE_AUDIO_SERVER
|
||||
#define USE_URLSTREAM_TASK
|
||||
#define USE_TYPETRAITS
|
||||
#define USE_EFFECTS_SUITE
|
||||
|
||||
#define PWM_FREQENCY 30000
|
||||
#define PIN_PWM_START 12
|
||||
@ -190,10 +192,12 @@ typedef uint32_t eps32_i2s_sample_rate_type;
|
||||
|
||||
//----------------
|
||||
#ifdef ESP8266
|
||||
#define USE_URL_ARDUINO
|
||||
//#define USE_URL_ARDUINO // commented out because of compile errors
|
||||
#define USE_I2S
|
||||
#define USE_PWM
|
||||
#define USE_AUDIO_SERVER
|
||||
#define USE_TYPETRAITS
|
||||
#define USE_EFFECTS_SUITE
|
||||
//#define USE_ESP8266_AUDIO
|
||||
|
||||
#define PIN_PWM_START 12
|
||||
@ -211,6 +215,8 @@ typedef uint32_t eps32_i2s_sample_rate_type;
|
||||
#ifdef ARDUINO_ARDUINO_NANO33BLE
|
||||
#define USE_I2S
|
||||
#define USE_PWM
|
||||
#define USE_TYPETRAITS
|
||||
#define USE_EFFECTS_SUITE
|
||||
|
||||
#define PIN_PWM_START 6
|
||||
#define PIN_I2S_BCK 2
|
||||
@ -227,6 +233,8 @@ typedef uint32_t eps32_i2s_sample_rate_type;
|
||||
//#define USE_I2S 1
|
||||
#define USE_PWM
|
||||
#define USE_ADC_ARDUINO
|
||||
#define USE_TYPETRAITS
|
||||
#define USE_EFFECTS_SUITE
|
||||
|
||||
#define PIN_ADC_START 26
|
||||
#define PIN_PWM_START 6
|
||||
@ -256,6 +264,8 @@ typedef uint32_t eps32_i2s_sample_rate_type;
|
||||
#define USE_I2S 1
|
||||
#define USE_PWM
|
||||
#define USE_ADC_ARDUINO
|
||||
#define USE_TYPETRAITS
|
||||
#define USE_EFFECTS_SUITE
|
||||
|
||||
#define PIN_ADC_START 26
|
||||
#define PIN_PWM_START 6
|
||||
@ -315,5 +325,9 @@ typedef uint32_t eps32_i2s_sample_rate_type;
|
||||
|
||||
#ifdef IS_DESKTOP
|
||||
#define USE_URL_ARDUINO
|
||||
#define FLUSH_OVERRIDE override
|
||||
#endif
|
||||
|
||||
#ifndef OVERRIDE
|
||||
#define FLUSH_OVERRIDE
|
||||
#endif
|
||||
|
@ -3,7 +3,9 @@
|
||||
#include "AudioBasic/Vector.h"
|
||||
#include "AudioEffects/SoundGenerator.h"
|
||||
#include "AudioEffects/AudioEffect.h"
|
||||
#ifdef USE_EFFECTS_SUITE
|
||||
#include "AudioEffects/AudioEffectsSuite.h"
|
||||
#endif
|
||||
#ifdef USE_STK
|
||||
#include "AudioEffects/STKEffects.h"
|
||||
#endif
|
||||
|
@ -24,17 +24,19 @@ class I2SBase {
|
||||
}
|
||||
|
||||
/// starts the DAC with the default config
|
||||
void begin(RxTxMode mode = TX_MODE) {
|
||||
begin(defaultConfig(mode));
|
||||
bool begin(RxTxMode mode = TX_MODE) {
|
||||
return begin(defaultConfig(mode));
|
||||
}
|
||||
|
||||
/// starts the DAC
|
||||
void begin(I2SConfig cfg) {
|
||||
bool begin(I2SConfig cfg) {
|
||||
i2s_set_rate(cfg.sample_rate);
|
||||
cfg.bits_per_sample = 16;
|
||||
if(!i2s_rxtx_begin(cfg.rx_tx_mode == RX_MODE, cfg.rx_tx_mode == TX_MODE)){
|
||||
LOGE("i2s_rxtx_begin failed");
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/// stops the I2C and unistalls the driver
|
||||
@ -42,6 +44,16 @@ class I2SBase {
|
||||
i2s_end();
|
||||
}
|
||||
|
||||
/// we assume the data is already available in the buffer
|
||||
int available() {
|
||||
return I2S_BUFFER_COUNT*I2S_BUFFER_SIZE;
|
||||
}
|
||||
|
||||
/// We limit the write size to the buffer size
|
||||
int availableForWrite() {
|
||||
return I2S_BUFFER_COUNT*I2S_BUFFER_SIZE;
|
||||
}
|
||||
|
||||
/// provides the actual configuration
|
||||
I2SConfig config() {
|
||||
return cfg;
|
||||
|
@ -181,7 +181,7 @@ class MetaDataICY : public AbstractMetaData {
|
||||
LOGD(LOG_METHOD);
|
||||
if (meta_size>0){
|
||||
if (metaData==nullptr){
|
||||
metaData = new prog_char[meta_size+1];
|
||||
metaData = new char[meta_size+1];
|
||||
metaDataMaxLen = meta_size;
|
||||
LOGD("metaDataMaxLen: %d", metaDataMaxLen);
|
||||
} else {
|
||||
|
@ -69,7 +69,7 @@ struct PWMConfig : public AudioBaseInfo {
|
||||
LOGI("channels: %d", channels);
|
||||
LOGI("bits_per_sample: %d", bits_per_sample);
|
||||
LOGI("buffer_size: %u", buffer_size);
|
||||
LOGI("pwm_frequency: %lu", pwm_frequency);
|
||||
LOGI("pwm_frequency: %u", (unsigned int)pwm_frequency);
|
||||
LOGI("resolution: %d", resolution);
|
||||
//LOGI("timer_id: %d", timer_id);
|
||||
}
|
||||
|
@ -44,7 +44,7 @@ class AudioUtils {
|
||||
result++;
|
||||
}
|
||||
if (result <= limit){
|
||||
LOGW("Time for samplingRate %u -> %lu is < %u μs - we rounded up", (unsigned int)samplingRate, result, limit);
|
||||
LOGW("Time for samplingRate %u -> %u is < %u μs - we rounded up", (unsigned int)samplingRate, (unsigned int)result, (unsigned int)limit);
|
||||
result = limit;
|
||||
}
|
||||
return result;
|
||||
@ -56,7 +56,7 @@ class AudioUtils {
|
||||
result++;
|
||||
}
|
||||
if (result <= limit){
|
||||
LOGW("Time for samplingRate %u -> %lu is < %u μs - we rounded up", (unsigned int)samplingRate, result, limit);
|
||||
LOGW("Time for samplingRate %u -> %u is < %u μs - we rounded up", (unsigned int)samplingRate, (unsigned int)result, (unsigned int)limit);
|
||||
result = limit;
|
||||
}
|
||||
return result;
|
||||
|
@ -20,11 +20,15 @@ TimerAlarmRepeatingESP8266 *self;
|
||||
*/
|
||||
class TimerAlarmRepeatingESP8266 : public TimerAlarmRepeatingDef {
|
||||
public:
|
||||
|
||||
|
||||
TimerAlarmRepeatingESP8266(){
|
||||
self = this;
|
||||
}
|
||||
|
||||
TimerAlarmRepeatingESP8266(TimerFunction function=DirectTimerCallback, int id=0){
|
||||
self = this;
|
||||
}
|
||||
|
||||
~TimerAlarmRepeatingESP8266(){
|
||||
end();
|
||||
}
|
||||
|
@ -18,8 +18,8 @@ typedef void (* repeating_timer_callback_t )(void* obj);
|
||||
*/
|
||||
class TimerAlarmRepeatingSTM32 : public TimerAlarmRepeatingDef {
|
||||
public:
|
||||
|
||||
TimerAlarmRepeatingSTM32(int timerIdx=1){
|
||||
|
||||
TimerAlarmRepeatingSTM32(TimerFunction function=DirectTimerCallback, int timerIdx=1){
|
||||
this->timer = new HardwareTimer(timers[timerIdx]);
|
||||
timer->pause();
|
||||
}
|
||||
|
@ -28,7 +28,7 @@ class AudioPrint : public Print {
|
||||
return 1;
|
||||
}
|
||||
|
||||
void flush() {
|
||||
void flush() FLUSH_OVERRIDE {
|
||||
write((const uint8_t*)tmp, tmpPos-1);
|
||||
tmpPos=0;
|
||||
}
|
||||
|
@ -8,7 +8,7 @@
|
||||
|
||||
namespace audio_tools {
|
||||
|
||||
#ifndef ESP32
|
||||
#ifndef IRAM_ATTR
|
||||
#define IRAM_ATTR
|
||||
#endif
|
||||
|
||||
@ -68,7 +68,7 @@ class AudioStreamX : public AudioStream {
|
||||
|
||||
virtual int read() override { return not_supported(-1); }
|
||||
virtual int peek() override { return not_supported(-1); }
|
||||
virtual void flush() override {}
|
||||
virtual void flush() FLUSH_OVERRIDE {}
|
||||
virtual void setAudioInfo(audio_tools::AudioBaseInfo) override {}
|
||||
};
|
||||
|
||||
@ -726,7 +726,7 @@ class TimerCallbackAudioStream : public BufferedStream,
|
||||
buffer = new RingBuffer<uint8_t>(cfg.buffer_size);
|
||||
timer = new TimerAlarmRepeating(cfg.timer_function, cfg.timer_id);
|
||||
time = AudioUtils::toTimeUs(cfg.sample_rate);
|
||||
LOGI("sample_rate: %u -> time: %lu milliseconds", cfg.sample_rate, time);
|
||||
LOGI("sample_rate: %u -> time: %u milliseconds", (unsigned int)cfg.sample_rate, (unsigned int)time);
|
||||
timer->setCallbackParameter(this);
|
||||
timer->begin(timerCallback, time, TimeUnit::US);
|
||||
}
|
||||
|
@ -1,7 +1,9 @@
|
||||
#pragma once
|
||||
#include "AudioTools/Converter.h"
|
||||
#include "AudioConfig.h"
|
||||
#ifdef USE_TYPETRAITS
|
||||
#include <type_traits>
|
||||
|
||||
#endif
|
||||
namespace audio_tools {
|
||||
|
||||
/**
|
||||
@ -65,10 +67,15 @@ class FIR : public Filter<T> {
|
||||
if(i_b == lenB)
|
||||
i_b = 0;
|
||||
|
||||
#ifdef USE_TYPETRAITS
|
||||
if (!(std::is_same<T, float>::value || std::is_same<T, double>::value)) {
|
||||
b_terms = b_terms / factor;
|
||||
}
|
||||
|
||||
#else
|
||||
if (factor!=1.0) {
|
||||
b_terms = b_terms / factor;
|
||||
}
|
||||
#endif
|
||||
return b_terms;
|
||||
}
|
||||
private:
|
||||
@ -135,9 +142,15 @@ class IIR : public Filter<T> {
|
||||
i_a++;
|
||||
if (i_a == lenA) i_a = 0;
|
||||
|
||||
#ifdef USE_TYPETRAITS
|
||||
if (!(std::is_same<T, float>::value || std::is_same<T, double>::value)) {
|
||||
filtered = filtered / factor;
|
||||
}
|
||||
#else
|
||||
if (factor!=1.0) {
|
||||
filtered = filtered / factor;
|
||||
}
|
||||
#endif
|
||||
return filtered;
|
||||
}
|
||||
|
||||
|
@ -78,7 +78,7 @@
|
||||
../examples/examples-maximilian/08-Counting4 -> rc=0
|
||||
../examples/examples-maximilian/09-Envelopes -> rc=0
|
||||
../examples/examples-maximilian/10-Filters -> rc=0
|
||||
../examples/examples-maximilian/11-Mixing -> rc=1
|
||||
../examples/examples-maximilian/11-Mixing -> rc=0
|
||||
../examples/examples-maximilian/12-SamplePlayer -> rc=0
|
||||
../examples/examples-maximilian/13-AdvancedFilters -> rc=0
|
||||
../examples/examples-maximilian/14-MonoSynth -> rc=0
|
||||
|
Loading…
Reference in New Issue
Block a user