I'm having an issue using the Teensy Audio library as part of a private libraries (under the lib folder of a PlatformIO project, as described in https://github.com/platformio/platform-atmelavr/blob/develop/examples/arduino-blink/lib/README).
I am developing some Teensy code that uses the Audio library, but I would like to eventually break parts of the codebase out into reusable libraries. For now, I'm developing them as private libraries under the `lib` directory. The problem is that whenever I import Audio.h, I get all sorts of compilation errors. In my main codebase, the first one is usually a "uint8_t does not name a type", but there's a series of undefined variable errors.
As a MWE, I've created two PlatformIO projects, one that imports Audio.h in the main.cpp file and one that has a private library that depends on it in the library.json file. The one that imports Audio.h in main.cpp compiles and it looks like:
main.cpp is
and platformio.ini is
The second MWE has a private lib that just requires the Audio library (defined in its library.json) and this fails to compile.
main.cpp is
and platformio.ini is
AudioTestLibrary.h is
and AudioTestLibrary.cpp is
Finally, library.json is
This project, with the Audio library as a dependency of the AudioTestLibrary does not compile. The compilation log re reads:
A couple of things to note:
I have published these two examples on Github in hopes that someone else trying them might be able to figure out what is going on here. The one that compiles (importing Audio.h in main.cpp) is at https://github.com/dkadish/TeensyAudioPlatformIO_main and the one that does not compile (with the audio library as a dependency for a private library) is at https://github.com/dkadish/TeensyAudioPlatformIO_library.
I'd appreciate any insight into what's going wrong!
I am developing some Teensy code that uses the Audio library, but I would like to eventually break parts of the codebase out into reusable libraries. For now, I'm developing them as private libraries under the `lib` directory. The problem is that whenever I import Audio.h, I get all sorts of compilation errors. In my main codebase, the first one is usually a "uint8_t does not name a type", but there's a series of undefined variable errors.
As a MWE, I've created two PlatformIO projects, one that imports Audio.h in the main.cpp file and one that has a private library that depends on it in the library.json file. The one that imports Audio.h in main.cpp compiles and it looks like:
Code:
|-- TeensyAudio_main
| |
| |-- include
| | |-- README
| |-- lib
| | |-- README
| |-- src
| | |-- main.cpp
| |-- test
| | |-- README
| |-- .gitignore
| |-- platformio.ini
main.cpp is
Code:
#include <Arduino.h>
#include <Audio.h> // <------ imports the audio library successfully
void setup() {
}
void loop() {
// put your main code here, to run repeatedly:
}
and platformio.ini is
Code:
; PlatformIO Project Configuration File
;
; Build options: build flags, source filter
; Upload options: custom upload port, speed and extra flags
; Library options: dependencies, extra library storages
; Advanced options: extra scripting
;
; Please visit documentation for the other options and examples
; https://docs.platformio.org/page/projectconf.html
[env:teensymm]
platform = teensy
board = teensymm
framework = arduino
The second MWE has a private lib that just requires the Audio library (defined in its library.json) and this fails to compile.
Code:
|-- TeensyAudio_library
| |
| |-- include
| | |-- README
| |-- lib
| | |-- AudioTestLibrary
| | | |-- include
| | | | |-- AudioTestLibrary.h
| | | |-- src
| | | | |-- AudioTestLibrary.cpp
| | |-- library.json
| |-- src
| | |-- main.cpp
| |-- test
| | |-- README
| |-- .gitignore
| |-- platformio.ini
main.cpp is
Code:
#include <Arduino.h>
#include <AudioTestLibrary.h>
void setup() {
}
void loop() {
// put your main code here, to run repeatedly:
}
and platformio.ini is
Code:
; PlatformIO Project Configuration File
;
; Build options: build flags, source filter
; Upload options: custom upload port, speed and extra flags
; Library options: dependencies, extra library storages
; Advanced options: extra scripting
;
; Please visit documentation for the other options and examples
; https://docs.platformio.org/page/projectconf.html
[env:teensymm]
platform = teensy
board = teensymm
framework = arduino
AudioTestLibrary.h is
Code:
//
// Created by David Kadish on 10/09/2023.
//
#ifndef AUDIOTESTLIBRARY_H
#define AUDIOTESTLIBRARY_H
// These libraries are included because otherwise the compiler complains about missing Serial, Wire, and SPI files (e.g. "fatal error: Wire.h: No such file or directory")
#include <Arduino.h>
#include <Wire.h>
#include <SPI.h>
class AudioTestClass {
public:
void setup();
void loop();
};
#endif //AUDIOTESTLIBRARY_H
and AudioTestLibrary.cpp is
Code:
//
// Created by David Kadish on 10/09/2023.
//
#include "AudioTestLibrary.h"
AudioTestClass::AudioTestClass() {}
void AudioTestClass::loop() {}
void AudioTestClass::setup() {}
Finally, library.json is
Code:
{
"name": "AudioTestLibrary",
"version": "1.0.0",
"description": "A library to test the TeensyAudio library.",
"dependencies": {
"paulstoffregen/Audio": "~1.3.0"
},
"frameworks": "arduino",
"platforms": "teensy"
}
This project, with the Audio library as a dependency of the AudioTestLibrary does not compile. The compilation log re reads:
Code:
* Executing task: platformio run --verbose --environment teensymm
Processing teensymm (platform: teensy; board: teensymm; framework: arduino)
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
CONFIGURATION: https://docs.platformio.org/page/boards/teensy/teensymm.html
PLATFORM: Teensy (4.18.0) > SparkFun MicroMod Teensy
HARDWARE: IMXRT1062 600MHz, 512KB RAM, 7.75MB Flash
DEBUG: Current (jlink) External (jlink)
PACKAGES:
- framework-arduinoteensy @ 1.158.0 (1.58)
- tool-teensy @ 1.158.0 (1.58)
- toolchain-gccarmnoneeabi-teensy @ 1.110301.0 (11.3.1)
LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 94 compatible libraries
Scanning dependencies...
Dependency Graph
|-- AudioTestLibrary @ 1.0.0 (License: Unknown, Path: /Users/ca492/Documents/PlatformIO/Projects/TeensyAudio_library/lib/AudioTestLibrary)
| |-- Audio @ 1.3.0 (License: Unknown, Path: /Users/ca492/Documents/PlatformIO/Projects/TeensyAudio_library/.pio/libdeps/teensymm/Audio)
| | |-- Wire @ 1.0 (License: Unknown, Path: /Users/ca492/.platformio/packages/framework-arduinoteensy/libraries/Wire)
| | |-- SPI @ 1.0 (License: Unknown, Path: /Users/ca492/.platformio/packages/framework-arduinoteensy/libraries/SPI)
| |-- SPI @ 1.0 (License: Unknown, Path: /Users/ca492/.platformio/packages/framework-arduinoteensy/libraries/SPI)
| |-- Wire @ 1.0 (License: Unknown, Path: /Users/ca492/.platformio/packages/framework-arduinoteensy/libraries/Wire)
Building in release mode
arm-none-eabi-g++ -o .pio/build/teensymm/lib729/Audio/analyze_print.cpp.o -c -fno-exceptions -felide-constructors -fno-rtti -std=gnu++14 -Wno-error=narrowing -fpermissive -fno-threadsafe-statics -Wall -ffunction-sections -fdata-sections -mthumb -mcpu=cortex-m7 -nostdlib -mfloat-abi=hard -mfpu=fpv5-d16 -O2 -DPLATFORMIO=60111 -D__IMXRT1062__ -DARDUINO_TEENSY_MICROMOD -DUSB_SERIAL -DARDUINO=10805 -DTEENSYDUINO=158 -DCORE_TEENSY -DF_CPU=600000000 -DLAYOUT_US_ENGLISH -I.pio/libdeps/teensymm/Audio -I.pio/libdeps/teensymm/Audio/utility -I/Users/ca492/.platformio/packages/framework-arduinoteensy/libraries/SPI -I/Users/ca492/.platformio/packages/framework-arduinoteensy/libraries/Wire -I/Users/ca492/.platformio/packages/framework-arduinoteensy/libraries/Wire/utility -I/Users/ca492/.platformio/packages/framework-arduinoteensy/cores/teensy4 .pio/libdeps/teensymm/Audio/analyze_print.cpp
arm-none-eabi-g++ -o .pio/build/teensymm/lib729/Audio/analyze_tonedetect.cpp.o -c -fno-exceptions -felide-constructors -fno-rtti -std=gnu++14 -Wno-error=narrowing -fpermissive -fno-threadsafe-statics -Wall -ffunction-sections -fdata-sections -mthumb -mcpu=cortex-m7 -nostdlib -mfloat-abi=hard -mfpu=fpv5-d16 -O2 -DPLATFORMIO=60111 -D__IMXRT1062__ -DARDUINO_TEENSY_MICROMOD -DUSB_SERIAL -DARDUINO=10805 -DTEENSYDUINO=158 -DCORE_TEENSY -DF_CPU=600000000 -DLAYOUT_US_ENGLISH -I.pio/libdeps/teensymm/Audio -I.pio/libdeps/teensymm/Audio/utility -I/Users/ca492/.platformio/packages/framework-arduinoteensy/libraries/SPI -I/Users/ca492/.platformio/packages/framework-arduinoteensy/libraries/Wire -I/Users/ca492/.platformio/packages/framework-arduinoteensy/libraries/Wire/utility -I/Users/ca492/.platformio/packages/framework-arduinoteensy/cores/teensy4 .pio/libdeps/teensymm/Audio/analyze_tonedetect.cpp
arm-none-eabi-g++ -o .pio/build/teensymm/lib729/Audio/effect_chorus.cpp.o -c -fno-exceptions -felide-constructors -fno-rtti -std=gnu++14 -Wno-error=narrowing -fpermissive -fno-threadsafe-statics -Wall -ffunction-sections -fdata-sections -mthumb -mcpu=cortex-m7 -nostdlib -mfloat-abi=hard -mfpu=fpv5-d16 -O2 -DPLATFORMIO=60111 -D__IMXRT1062__ -DARDUINO_TEENSY_MICROMOD -DUSB_SERIAL -DARDUINO=10805 -DTEENSYDUINO=158 -DCORE_TEENSY -DF_CPU=600000000 -DLAYOUT_US_ENGLISH -I.pio/libdeps/teensymm/Audio -I.pio/libdeps/teensymm/Audio/utility -I/Users/ca492/.platformio/packages/framework-arduinoteensy/libraries/SPI -I/Users/ca492/.platformio/packages/framework-arduinoteensy/libraries/Wire -I/Users/ca492/.platformio/packages/framework-arduinoteensy/libraries/Wire/utility -I/Users/ca492/.platformio/packages/framework-arduinoteensy/cores/teensy4 .pio/libdeps/teensymm/Audio/effect_chorus.cpp
arm-none-eabi-g++ -o .pio/build/teensymm/lib729/Audio/effect_flange.cpp.o -c -fno-exceptions -felide-constructors -fno-rtti -std=gnu++14 -Wno-error=narrowing -fpermissive -fno-threadsafe-statics -Wall -ffunction-sections -fdata-sections -mthumb -mcpu=cortex-m7 -nostdlib -mfloat-abi=hard -mfpu=fpv5-d16 -O2 -DPLATFORMIO=60111 -D__IMXRT1062__ -DARDUINO_TEENSY_MICROMOD -DUSB_SERIAL -DARDUINO=10805 -DTEENSYDUINO=158 -DCORE_TEENSY -DF_CPU=600000000 -DLAYOUT_US_ENGLISH -I.pio/libdeps/teensymm/Audio -I.pio/libdeps/teensymm/Audio/utility -I/Users/ca492/.platformio/packages/framework-arduinoteensy/libraries/SPI -I/Users/ca492/.platformio/packages/framework-arduinoteensy/libraries/Wire -I/Users/ca492/.platformio/packages/framework-arduinoteensy/libraries/Wire/utility -I/Users/ca492/.platformio/packages/framework-arduinoteensy/cores/teensy4 .pio/libdeps/teensymm/Audio/effect_flange.cpp
arm-none-eabi-g++ -o .pio/build/teensymm/lib729/Audio/filter_biquad.cpp.o -c -fno-exceptions -felide-constructors -fno-rtti -std=gnu++14 -Wno-error=narrowing -fpermissive -fno-threadsafe-statics -Wall -ffunction-sections -fdata-sections -mthumb -mcpu=cortex-m7 -nostdlib -mfloat-abi=hard -mfpu=fpv5-d16 -O2 -DPLATFORMIO=60111 -D__IMXRT1062__ -DARDUINO_TEENSY_MICROMOD -DUSB_SERIAL -DARDUINO=10805 -DTEENSYDUINO=158 -DCORE_TEENSY -DF_CPU=600000000 -DLAYOUT_US_ENGLISH -I.pio/libdeps/teensymm/Audio -I.pio/libdeps/teensymm/Audio/utility -I/Users/ca492/.platformio/packages/framework-arduinoteensy/libraries/SPI -I/Users/ca492/.platformio/packages/framework-arduinoteensy/libraries/Wire -I/Users/ca492/.platformio/packages/framework-arduinoteensy/libraries/Wire/utility -I/Users/ca492/.platformio/packages/framework-arduinoteensy/cores/teensy4 .pio/libdeps/teensymm/Audio/filter_biquad.cpp
arm-none-eabi-g++ -o .pio/build/teensymm/lib729/Audio/filter_variable.cpp.o -c -fno-exceptions -felide-constructors -fno-rtti -std=gnu++14 -Wno-error=narrowing -fpermissive -fno-threadsafe-statics -Wall -ffunction-sections -fdata-sections -mthumb -mcpu=cortex-m7 -nostdlib -mfloat-abi=hard -mfpu=fpv5-d16 -O2 -DPLATFORMIO=60111 -D__IMXRT1062__ -DARDUINO_TEENSY_MICROMOD -DUSB_SERIAL -DARDUINO=10805 -DTEENSYDUINO=158 -DCORE_TEENSY -DF_CPU=600000000 -DLAYOUT_US_ENGLISH -I.pio/libdeps/teensymm/Audio -I.pio/libdeps/teensymm/Audio/utility -I/Users/ca492/.platformio/packages/framework-arduinoteensy/libraries/SPI -I/Users/ca492/.platformio/packages/framework-arduinoteensy/libraries/Wire -I/Users/ca492/.platformio/packages/framework-arduinoteensy/libraries/Wire/utility -I/Users/ca492/.platformio/packages/framework-arduinoteensy/cores/teensy4 .pio/libdeps/teensymm/Audio/filter_variable.cpp
arm-none-eabi-g++ -o .pio/build/teensymm/lib729/Audio/input_adc.cpp.o -c -fno-exceptions -felide-constructors -fno-rtti -std=gnu++14 -Wno-error=narrowing -fpermissive -fno-threadsafe-statics -Wall -ffunction-sections -fdata-sections -mthumb -mcpu=cortex-m7 -nostdlib -mfloat-abi=hard -mfpu=fpv5-d16 -O2 -DPLATFORMIO=60111 -D__IMXRT1062__ -DARDUINO_TEENSY_MICROMOD -DUSB_SERIAL -DARDUINO=10805 -DTEENSYDUINO=158 -DCORE_TEENSY -DF_CPU=600000000 -DLAYOUT_US_ENGLISH -I.pio/libdeps/teensymm/Audio -I.pio/libdeps/teensymm/Audio/utility -I/Users/ca492/.platformio/packages/framework-arduinoteensy/libraries/SPI -I/Users/ca492/.platformio/packages/framework-arduinoteensy/libraries/Wire -I/Users/ca492/.platformio/packages/framework-arduinoteensy/libraries/Wire/utility -I/Users/ca492/.platformio/packages/framework-arduinoteensy/cores/teensy4 .pio/libdeps/teensymm/Audio/input_adc.cpp
arm-none-eabi-g++ -o .pio/build/teensymm/lib729/Audio/input_i2s.cpp.o -c -fno-exceptions -felide-constructors -fno-rtti -std=gnu++14 -Wno-error=narrowing -fpermissive -fno-threadsafe-statics -Wall -ffunction-sections -fdata-sections -mthumb -mcpu=cortex-m7 -nostdlib -mfloat-abi=hard -mfpu=fpv5-d16 -O2 -DPLATFORMIO=60111 -D__IMXRT1062__ -DARDUINO_TEENSY_MICROMOD -DUSB_SERIAL -DARDUINO=10805 -DTEENSYDUINO=158 -DCORE_TEENSY -DF_CPU=600000000 -DLAYOUT_US_ENGLISH -I.pio/libdeps/teensymm/Audio -I.pio/libdeps/teensymm/Audio/utility -I/Users/ca492/.platformio/packages/framework-arduinoteensy/libraries/SPI -I/Users/ca492/.platformio/packages/framework-arduinoteensy/libraries/Wire -I/Users/ca492/.platformio/packages/framework-arduinoteensy/libraries/Wire/utility -I/Users/ca492/.platformio/packages/framework-arduinoteensy/cores/teensy4 .pio/libdeps/teensymm/Audio/input_i2s.cpp
.pio/libdeps/teensymm/Audio/analyze_print.cpp: In member function 'virtual void AudioAnalyzePrint::update()':
.pio/libdeps/teensymm/Audio/analyze_print.cpp:68:33: error: 'Serial' was not declared in this scope; did you mean 'SerialUSB'?
68 | Serial.println(block->data[offset++]);
| ^~~~~~
| SerialUSB
.pio/libdeps/teensymm/Audio/analyze_print.cpp: In member function 'void AudioAnalyzePrint::trigger()':
.pio/libdeps/teensymm/Audio/analyze_print.cpp:87:17: error: 'Serial' was not declared in this scope; did you mean 'SerialUSB'?
87 | Serial.print("trigger ");
| ^~~~~~
| SerialUSB
.pio/libdeps/teensymm/Audio/analyze_print.cpp:94:17: error: 'Serial' was not declared in this scope; did you mean 'SerialUSB'?
94 | Serial.print("trigger ");
| ^~~~~~
| SerialUSB
In file included from .pio/libdeps/teensymm/Audio/effect_chorus.cpp:23:
.pio/libdeps/teensymm/Audio/effect_chorus.h:44:3: error: 'boolean' does not name a type; did you mean 'bool'?
44 | boolean begin(short *delayline,int delay_length,int n_chorus);
| ^~~~~~~
| bool
.pio/libdeps/teensymm/Audio/effect_chorus.cpp:32:1: error: 'boolean' does not name a type; did you mean 'bool'?
32 | boolean AudioEffectChorus::begin(short *delayline,int d_length,int n_chorus)
| ^~~~~~~
| bool
In file included from .pio/libdeps/teensymm/Audio/analyze_tonedetect.cpp:27:
.pio/libdeps/teensymm/Audio/analyze_tonedetect.h: In member function 'void AudioAnalyzeToneDetect::frequency(float, uint16_t)':
.pio/libdeps/teensymm/Audio/analyze_tonedetect.h:38:38: error: 'cos' was not declared in this scope
38 | set_params((int32_t)(cos((double)freq
| ^~~
*** [.pio/build/teensymm/lib729/Audio/analyze_print.cpp.o] Error 1
In file included from .pio/libdeps/teensymm/Audio/analyze_tonedetect.cpp:28:
.pio/libdeps/teensymm/Audio/utility/dspinst.h: In function 'int32_t signed_saturate_rshift(int32_t, int, int)':
.pio/libdeps/teensymm/Audio/utility/dspinst.h:51:1: warning: no return statement in function returning non-void [-Wreturn-type]
51 | }
| ^
.pio/libdeps/teensymm/Audio/utility/dspinst.h: In function 'int32_t signed_multiply_32x16b(int32_t, uint32_t)':
.pio/libdeps/teensymm/Audio/utility/dspinst.h:64:1: warning: no return statement in function returning non-void [-Wreturn-type]
64 | }
| ^
.pio/libdeps/teensymm/Audio/utility/dspinst.h: In function 'int32_t signed_multiply_32x16t(int32_t, uint32_t)':
.pio/libdeps/teensymm/Audio/utility/dspinst.h:77:1: warning: no return statement in function returning non-void [-Wreturn-type]
77 | }
| ^
In file included from .pio/libdeps/teensymm/Audio/analyze_tonedetect.cpp:28:
.pio/libdeps/teensymm/Audio/utility/dspinst.h: In function 'uint32_t pack_16t_16t(int32_t, int32_t)':
.pio/libdeps/teensymm/Audio/utility/dspinst.h:127:1: warning: no return statement in function returning non-void [-Wreturn-type]
127 | }
| ^
.pio/libdeps/teensymm/Audio/utility/dspinst.h: In function 'uint32_t pack_16t_16b(int32_t, int32_t)':
.pio/libdeps/teensymm/Audio/utility/dspinst.h:140:1: warning: no return statement in function returning non-void [-Wreturn-type]
140 | }
| ^
.pio/libdeps/teensymm/Audio/utility/dspinst.h: In function 'uint32_t pack_16b_16b(int32_t, int32_t)':
.pio/libdeps/teensymm/Audio/utility/dspinst.h:153:1: warning: no return statement in function returning non-void [-Wreturn-type]
153 | }
| ^
*** [.pio/build/teensymm/lib729/Audio/analyze_tonedetect.cpp.o] Error 1
*** [.pio/build/teensymm/lib729/Audio/effect_chorus.cpp.o] Error 1
In file included from .pio/libdeps/teensymm/Audio/input_adc.cpp:28:
.pio/libdeps/teensymm/Audio/utility/pdb.h:30:10: fatal error: kinetis.h: No such file or directory
*****************************************************************
* Looking for kinetis.h dependency? Check our library registry!
*
* CLI > platformio lib search "header:kinetis.h"
* Web > https://registry.platformio.org/search?q=header:kinetis.h
*
*****************************************************************
30 | #include "kinetis.h"
| ^~~~~~~~~~~
compilation terminated.
In file included from .pio/libdeps/teensymm/Audio/effect_flange.cpp:23:
.pio/libdeps/teensymm/Audio/effect_flange.h:43:3: error: 'boolean' does not name a type; did you mean 'bool'?
43 | boolean begin(short *delayline,int d_length,int delay_offset,int d_depth,float delay_rate);
| ^~~~~~~
| bool
In file included from .pio/libdeps/teensymm/Audio/filter_biquad.cpp:27:
.pio/libdeps/teensymm/Audio/filter_biquad.h: In member function 'void AudioFilterBiquad::setLowpass(uint32_t, float, float)':
.pio/libdeps/teensymm/Audio/filter_biquad.h:58:32: error: 'sin' was not declared in this scope
58 | double sinW0 = sin(w0);
| ^~~
*** [.pio/build/teensymm/lib729/Audio/input_adc.cpp.o] Error 1
.pio/libdeps/teensymm/Audio/effect_flange.h:44:3: error: 'boolean' does not name a type; did you mean 'bool'?
44 | boolean voices(int delay_offset,int d_depth,float delay_rate);
| ^~~~~~~
| bool
.pio/libdeps/teensymm/Audio/filter_biquad.h:60:32: error: 'cos' was not declared in this scope
60 | double cosW0 = cos(w0);
| ^~~
.pio/libdeps/teensymm/Audio/filter_biquad.h: In member function 'void AudioFilterBiquad::setHighpass(uint32_t, float, float)':
.pio/libdeps/teensymm/Audio/filter_biquad.h:72:32: error: 'sin' was not declared in this scope
72 | double sinW0 = sin(w0);
| ^~~
.pio/libdeps/teensymm/Audio/filter_biquad.h:74:32: error: 'cos' was not declared in this scope
74 | double cosW0 = cos(w0);
| ^~~
.pio/libdeps/teensymm/Audio/filter_biquad.h: In member function 'void AudioFilterBiquad::setBandpass(uint32_t, float, float)':
.pio/libdeps/teensymm/Audio/filter_biquad.h:86:32: error: 'sin' was not declared in this scope
86 | double sinW0 = sin(w0);
| ^~~
In file included from .pio/libdeps/teensymm/Audio/filter_variable.cpp:27:
.pio/libdeps/teensymm/Audio/filter_variable.h: In member function 'void AudioFilterStateVariable::frequency(float)':
.pio/libdeps/teensymm/Audio/filter_variable.h:50:33: error: 'sinf' was not declared in this scope
50 | setting_fmult = sinf(freq * (3.141592654/(AUDIO_SAMPLE_RATE_EXACT*2.0)))
| ^~~~
In file included from .pio/libdeps/teensymm/Audio/filter_variable.cpp:28:
.pio/libdeps/teensymm/Audio/utility/dspinst.h: In function 'int32_t signed_saturate_rshift(int32_t, int, int)':
.pio/libdeps/teensymm/Audio/utility/dspinst.h:51:1: warning: no return statement in function returning non-void [-Wreturn-type]
51 | }
| ^
.pio/libdeps/teensymm/Audio/utility/dspinst.h: In function 'int32_t signed_multiply_32x16b(int32_t, uint32_t)':
.pio/libdeps/teensymm/Audio/utility/dspinst.h:64:1: warning: no return statement in function returning non-void [-Wreturn-type]
64 | }
| ^
.pio/libdeps/teensymm/Audio/utility/dspinst.h: In function 'int32_t signed_multiply_32x16t(int32_t, uint32_t)':
.pio/libdeps/teensymm/Audio/utility/dspinst.h:77:1: warning: no return statement in function returning non-void [-Wreturn-type]
77 | }
| ^
.pio/libdeps/teensymm/Audio/filter_biquad.h:88:32: error: 'cos' was not declared in this scope
88 | double cosW0 = cos(w0);
| ^~~
In file included from .pio/libdeps/teensymm/Audio/filter_variable.cpp:28:
.pio/libdeps/teensymm/Audio/utility/dspinst.h: In function 'uint32_t pack_16t_16t(int32_t, int32_t)':
.pio/libdeps/teensymm/Audio/utility/dspinst.h:127:1: warning: no return statement in function returning non-void [-Wreturn-type]
127 | }
| ^
.pio/libdeps/teensymm/Audio/utility/dspinst.h: In function 'uint32_t pack_16t_16b(int32_t, int32_t)':
.pio/libdeps/teensymm/Audio/utility/dspinst.h:140:1: warning: no return statement in function returning non-void [-Wreturn-type]
140 | }
| ^
.pio/libdeps/teensymm/Audio/utility/dspinst.h: In function 'uint32_t pack_16b_16b(int32_t, int32_t)':
.pio/libdeps/teensymm/Audio/utility/dspinst.h:153:1: warning: no return statement in function returning non-void [-Wreturn-type]
153 | }
| ^
.pio/libdeps/teensymm/Audio/filter_biquad.h: In member function 'void AudioFilterBiquad::setNotch(uint32_t, float, float)':
.pio/libdeps/teensymm/Audio/filter_biquad.h:100:32: error: 'sin' was not declared in this scope
100 | double sinW0 = sin(w0);
| ^~~
*** [.pio/build/teensymm/lib729/Audio/filter_variable.cpp.o] Error 1
.pio/libdeps/teensymm/Audio/filter_biquad.h:102:32: error: 'cos' was not declared in this scope
102 | double cosW0 = cos(w0);
| ^~~
In file included from .pio/libdeps/teensymm/Audio/filter_biquad.cpp:28:
.pio/libdeps/teensymm/Audio/utility/dspinst.h: In function 'int32_t signed_saturate_rshift(int32_t, int, int)':
.pio/libdeps/teensymm/Audio/utility/dspinst.h:51:1: warning: no return statement in function returning non-void [-Wreturn-type]
51 | }
| ^
.pio/libdeps/teensymm/Audio/utility/dspinst.h: In function 'int32_t signed_multiply_32x16b(int32_t, uint32_t)':
.pio/libdeps/teensymm/Audio/utility/dspinst.h:64:1: warning: no return statement in function returning non-void [-Wreturn-type]
64 | }
| ^
.pio/libdeps/teensymm/Audio/utility/dspinst.h: In function 'int32_t signed_multiply_32x16t(int32_t, uint32_t)':
.pio/libdeps/teensymm/Audio/utility/dspinst.h:77:1: warning: no return statement in function returning non-void [-Wreturn-type]
77 | }
| ^
In file included from .pio/libdeps/teensymm/Audio/filter_biquad.cpp:28:
.pio/libdeps/teensymm/Audio/utility/dspinst.h: In function 'uint32_t pack_16t_16t(int32_t, int32_t)':
.pio/libdeps/teensymm/Audio/utility/dspinst.h:127:1: warning: no return statement in function returning non-void [-Wreturn-type]
127 | }
| ^
.pio/libdeps/teensymm/Audio/utility/dspinst.h: In function 'uint32_t pack_16t_16b(int32_t, int32_t)':
.pio/libdeps/teensymm/Audio/utility/dspinst.h:140:1: warning: no return statement in function returning non-void [-Wreturn-type]
140 | }
| ^
.pio/libdeps/teensymm/Audio/utility/dspinst.h: In function 'uint32_t pack_16b_16b(int32_t, int32_t)':
.pio/libdeps/teensymm/Audio/utility/dspinst.h:153:1: warning: no return statement in function returning non-void [-Wreturn-type]
153 | }
| ^
*** [.pio/build/teensymm/lib729/Audio/filter_biquad.cpp.o] Error 1
.pio/libdeps/teensymm/Audio/effect_flange.cpp:58:1: error: 'boolean' does not name a type; did you mean 'bool'?
58 | boolean AudioEffectFlange::begin(short *delayline,int d_length,int delay_offset,int d_depth,float delay_rate)
| ^~~~~~~
| bool
.pio/libdeps/teensymm/Audio/effect_flange.cpp:97:1: error: 'boolean' does not name a type; did you mean 'bool'?
97 | boolean AudioEffectFlange::voices(int delay_offset,int d_depth,float delay_rate)
| ^~~~~~~
| bool
*** [.pio/build/teensymm/lib729/Audio/effect_flange.cpp.o] Error 1
.pio/libdeps/teensymm/Audio/input_i2s.cpp:30:1: error: 'DMAMEM' does not name a type; did you mean 'DMA_ES'?
30 | DMAMEM static uint32_t i2s_rx_buffer[AUDIO_BLOCK_SAMPLES];
| ^~~~~~
| DMA_ES
.pio/libdeps/teensymm/Audio/input_i2s.cpp: In member function 'void AudioInputI2S::begin()':
.pio/libdeps/teensymm/Audio/input_i2s.cpp:48:29: error: 'PORT_PCR_MUX' was not declared in this scope
48 | CORE_PIN13_CONFIG = PORT_PCR_MUX(4); // pin 13, PTC5, I2S0_RXD0
| ^~~~~~~~~~~~
.pio/libdeps/teensymm/Audio/input_i2s.cpp:62:36: error: 'DMAMUX_SOURCE_I2S0_RX' was not declared in this scope; did you mean 'DMAMUX_SOURCE_SAI1_RX'?
62 | dma.triggerAtHardwareEvent(DMAMUX_SOURCE_I2S0_RX);
| ^~~~~~~~~~~~~~~~~~~~~
| DMAMUX_SOURCE_SAI1_RX
.pio/libdeps/teensymm/Audio/input_i2s.cpp:66:9: error: 'I2S0_RCSR' was not declared in this scope; did you mean 'I2S3_RCSR'?
66 | I2S0_RCSR |= I2S_RCSR_RE | I2S_RCSR_BCE | I2S_RCSR_FRDE | I2S_RCSR_FR;
| ^~~~~~~~~
| I2S3_RCSR
.pio/libdeps/teensymm/Audio/input_i2s.cpp:67:9: error: 'I2S0_TCSR' was not declared in this scope; did you mean 'I2S2_TCSR'?
67 | I2S0_TCSR |= I2S_TCSR_TE | I2S_TCSR_BCE; // TX clock enable, because sync'd to TX
| ^~~~~~~~~
| I2S2_TCSR
.pio/libdeps/teensymm/Audio/input_i2s.cpp: In static member function 'static void AudioInputI2S::isr()':
.pio/libdeps/teensymm/Audio/input_i2s.cpp:84:31: error: 'i2s_rx_buffer' was not declared in this scope
84 | if (daddr < (uint32_t)i2s_rx_buffer + sizeof(i2s_rx_buffer) / 2) {
| ^~~~~~~~~~~~~
.pio/libdeps/teensymm/Audio/input_i2s.cpp: In member function 'void AudioInputI2Sslave::begin()':
.pio/libdeps/teensymm/Audio/input_i2s.cpp:183:29: error: 'PORT_PCR_MUX' was not declared in this scope
183 | CORE_PIN13_CONFIG = PORT_PCR_MUX(4); // pin 13, PTC5, I2S0_RXD0
| ^~~~~~~~~~~~
.pio/libdeps/teensymm/Audio/input_i2s.cpp:197:36: error: 'DMAMUX_SOURCE_I2S0_RX' was not declared in this scope; did you mean 'DMAMUX_SOURCE_SAI1_RX'?
197 | dma.triggerAtHardwareEvent(DMAMUX_SOURCE_I2S0_RX);
| ^~~~~~~~~~~~~~~~~~~~~
| DMAMUX_SOURCE_SAI1_RX
.pio/libdeps/teensymm/Audio/input_i2s.cpp:201:9: error: 'I2S0_RCSR' was not declared in this scope; did you mean 'I2S3_RCSR'?
201 | I2S0_RCSR |= I2S_RCSR_RE | I2S_RCSR_BCE | I2S_RCSR_FRDE | I2S_RCSR_FR;
| ^~~~~~~~~
| I2S3_RCSR
.pio/libdeps/teensymm/Audio/input_i2s.cpp:202:9: error: 'I2S0_TCSR' was not declared in this scope; did you mean 'I2S2_TCSR'?
202 | I2S0_TCSR |= I2S_TCSR_TE | I2S_TCSR_BCE; // TX clock enable, because sync'd to TX
| ^~~~~~~~~
| I2S2_TCSR
*** [.pio/build/teensymm/lib729/Audio/input_i2s.cpp.o] Error 1
================================================================================================= [FAILED] Took 1.19 seconds =================================================================================================
* The terminal process "platformio 'run', '--verbose', '--environment', 'teensymm'" terminated with exit code: 1.
* Terminal will be reused by tasks, press any key to close it.
A couple of things to note:
- I have tried this with different Teensy versions (teensymm, teensy40, teensy31) and the builds all fail in the same way, so it is not a MicroMod issue.
- I suspect the problem is that PlatformIO is missing some of the board-specific files/flags when compiling the private libraries, which is causing the problem here.
- I haven't tested this with proper PlatformIO libraries, so I'm not sure if this problem persists there.
I have published these two examples on Github in hopes that someone else trying them might be able to figure out what is going on here. The one that compiles (importing Audio.h in main.cpp) is at https://github.com/dkadish/TeensyAudioPlatformIO_main and the one that does not compile (with the audio library as a dependency for a private library) is at https://github.com/dkadish/TeensyAudioPlatformIO_library.
I'd appreciate any insight into what's going wrong!