2
2
#include " AudioConfig.h"
3
3
#include " maximilian.h"
4
4
#include " libs/maxiClock.h"
5
+ #ifdef ESP32
6
+ #include " esp_heap_caps.h"
7
+ #endif
5
8
6
9
// Maximilian play function - return an array of 2 channels
7
10
void play (maxi_float_t *channels);// run dac!
@@ -19,18 +22,17 @@ class Maximilian : public VolumeSupport {
19
22
20
23
Maximilian (Print &out, int bufferSize=DEFAULT_BUFFER_SIZE, void (*callback)(maxi_float_t *channels)=play){
21
24
buffer_size = bufferSize;
22
- p_buffer = new uint8_t [bufferSize];
23
25
p_sink = &out;
24
26
this ->callback = callback;
25
27
}
26
28
27
29
~Maximilian () {
28
- delete[] p_buffer;
29
30
}
30
31
31
32
// / Setup Maximilian with audio parameters
32
33
void begin (AudioInfo cfg){
33
34
this ->cfg = cfg;
35
+ buffer.resize (buffer_size);
34
36
maxiSettings::setup (cfg.sample_rate , cfg.channels , DEFAULT_BUFFER_SIZE);
35
37
}
36
38
@@ -53,7 +55,7 @@ class Maximilian : public VolumeSupport {
53
55
// fill buffer with data
54
56
maxi_float_t out[cfg.channels ];
55
57
uint16_t samples = buffer_size / sizeof (uint16_t );
56
- int16_t *p_samples = (int16_t *)p_buffer ;
58
+ int16_t *p_samples = (int16_t *) buffer. data () ;
57
59
for (uint16_t j=0 ;j<samples;j+=cfg.channels ){
58
60
callback (out);
59
61
// convert all channels to int16
@@ -62,12 +64,12 @@ class Maximilian : public VolumeSupport {
62
64
}
63
65
}
64
66
// write buffer to audio sink
65
- unsigned int result = p_sink->write (p_buffer , buffer_size);
67
+ unsigned int result = p_sink->write (buffer. data () , buffer_size);
66
68
LOGI (" bytes written %u" , result)
67
69
}
68
70
69
71
protected:
70
- uint8_t *p_buffer= nullptr ;
72
+ Vector< uint8_t > buffer ;
71
73
int buffer_size=256 ;
72
74
Print *p_sink=nullptr ;
73
75
AudioInfo cfg;
0 commit comments