mirror of
https://github.com/esp8266/Arduino.git
synced 2025-06-17 22:23:10 +03:00
Refactored prepare() method in Audio library
This commit is contained in:
committed by
Cristian Maglie
parent
43cf5b0ed6
commit
c97e3623a4
@ -33,6 +33,17 @@ void AudioClass::end() {
|
|||||||
free( buffer);
|
free( buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void AudioClass::prepare(int16_t *buffer, int S, int volume){
|
||||||
|
uint16_t *ubuffer = (uint16_t*) buffer;
|
||||||
|
for (int i=0; i<S; i++) {
|
||||||
|
// set volume amplitude (signed multiply)
|
||||||
|
buffer[i] = buffer[i] * volume / 1024;
|
||||||
|
// convert from signed 16 bit to unsigned 12 bit for DAC.
|
||||||
|
ubuffer[i] += 0x8000;
|
||||||
|
ubuffer[i] >>= 4;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
size_t AudioClass::write(const uint32_t *data, size_t size) {
|
size_t AudioClass::write(const uint32_t *data, size_t size) {
|
||||||
const uint32_t TAG = 0x10000000;
|
const uint32_t TAG = 0x10000000;
|
||||||
int i;
|
int i;
|
||||||
|
@ -18,6 +18,7 @@
|
|||||||
class AudioClass : public Print {
|
class AudioClass : public Print {
|
||||||
public:
|
public:
|
||||||
AudioClass(DACClass &_dac) : dac(&_dac) { };
|
AudioClass(DACClass &_dac) : dac(&_dac) { };
|
||||||
|
void prepare(int16_t *buffer, int S, int volume);
|
||||||
void begin(uint32_t sampleRate, uint32_t msPreBuffer);
|
void begin(uint32_t sampleRate, uint32_t msPreBuffer);
|
||||||
void end();
|
void end();
|
||||||
|
|
||||||
|
@ -44,8 +44,8 @@ void loop()
|
|||||||
myFile.read(buffer, sizeof(buffer));
|
myFile.read(buffer, sizeof(buffer));
|
||||||
|
|
||||||
// Prepare samples
|
// Prepare samples
|
||||||
int volume = analogRead(2);
|
int volume = 1024;
|
||||||
prepare(buffer, S, volume);
|
Audio.prepare(buffer, S, volume);
|
||||||
// Feed samples to audio
|
// Feed samples to audio
|
||||||
Audio.write(buffer, S);
|
Audio.write(buffer, S);
|
||||||
|
|
||||||
@ -58,20 +58,7 @@ void loop()
|
|||||||
}
|
}
|
||||||
myFile.close();
|
myFile.close();
|
||||||
|
|
||||||
|
|
||||||
Serial.println("End of file. Thank you for listening!");
|
Serial.println("End of file. Thank you for listening!");
|
||||||
while (true) ;
|
while (true) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void prepare(int16_t *buffer, int S, int volume) {
|
|
||||||
uint16_t *ubuffer = (uint16_t*) buffer;
|
|
||||||
for (int i=0; i<S; i++) {
|
|
||||||
// set volume amplitude (signed multiply)
|
|
||||||
buffer[i] = buffer[i] * volume / 1024;
|
|
||||||
// convert from signed 16 bit to unsigned 12 bit for DAC.
|
|
||||||
ubuffer[i] += 0x8000;
|
|
||||||
ubuffer[i] >>= 4;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user