Hello,
i have a problem with building my project in VSCode and PlattformIO. I am using the Teensy Audio.h library to play a sound after some time. This code works under the Arduino IDE, but under VSCode i get some errors about multible definitions from the Audio.h library.
Here is my Code:
#include <TimeAlarms.h>
#include <Audio.h>
// Timer
#include <TimeLib.h>
#include <TimeAlarms.h>
const int chipSelect = BUILTIN_SDCARD;
static AudioPlaySdWav playWav1;
static AudioOutputI2S audioOutput;
static AudioConnection patchCord1(playWav1, 0, audioOutput, 0);
static AudioConnection patchCord2(playWav1, 1, audioOutput, 1);
IntervalTimer timer;
AlarmId id;
// Use these with the Teensy 3.5 & 3.6 SD card
#define SDCARD_CS_PIN BUILTIN_SDCARD
#define SDCARD_MOSI_PIN 11 // not actually used
#define SDCARD_SCK_PIN 13  // not actually used
void playFile(const char *filename)
{
  Serial.print("Playing file: ");
  Serial.println(filename);
  if (SD.exists("alert.wav"))
  {
    Serial.println("alert.wav exists.");
  }
  else
  {
    Serial.println("alert.wav doesn't exist.");
  }
  playWav1.play(filename);
  // A brief delay for the library read WAV info
  delay(25);
  // Simply wait for the file to finish playing.
  while (playWav1.isPlaying())
  {
    // uncomment these lines if you audio shield
    // has the optional volume pot soldered
    //float vol = analogRead(15);
    //vol = vol / 1024;
    // sgtl5000_1.volume(vol);
  }
}
void initAudio()
{
  // Audio connections require memory to work.  For more
  // detailed information, see the MemoryAndCpuUsage example
  AudioMemory(10);
  SPI.setMOSI(SDCARD_MOSI_PIN);
  SPI.setSCK(SDCARD_SCK_PIN);
  if (!(SD.begin(SDCARD_CS_PIN)))
  {
    // stop here, but print a message repetitively
    while (1)
    {
      Serial.println("Unable to access the SD card");
      delay(500);
    }
  }
  Serial.println("SD card ready");
  if (SD.exists("alert.wav"))
  {
    Serial.println("alert.wav exists.");
  }
  else
  {
    Serial.println("alert.wav doesn't exist.");
  }
}
void printDigits(int digits)
{
  Serial.print(":");
  if (digits < 10)
    Serial.print('0');
  Serial.print(digits);
}
void alarm()
{
  Serial.println("Alarm: alert.wav");
  playFile("alert.wav"); // filenames are always uppercase 8.3 format
}
void digitalClockDisplay()
{
  // digital clock display of the time
  Serial.print(hour());
  printDigits(minute());
  printDigits(second());
  Serial.println();
}
void initTimer()
{
  Serial.println("initTimer");
  timer.begin(digitalClockDisplay, 100000 * 10);
}
void initAlarm()
{
  Serial.println("initAlarm");
  setTime(8, 29, 0, 1, 1, 11);        // set time to Saturday 8:29:00am Jan 1 2011
  Alarm.alarmRepeat(8, 30, 0, alarm); // 5:45pm every day
  Alarm.timerRepeat(15, alarm);       // timer for every 15 seconds
}
void loop()
{
  Alarm.delay(1); // wait one second between clock display
}
void setup()
{
  Serial.begin(9600);
  while (!Serial)
    ; // wait for Arduino Serial Monitor
  initAudio();
  initAlarm();
  initTimer();
}
The Env:
[env:teensy41]
platform = teensy
board = teensy41
framework = arduino
lib_deps = 
The Build Log:
Processing teensy41 (platform: teensy; board: teensy41; framework: arduino)
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/teensy/teensy41.html
PLATFORM: Teensy (4.13.1) > Teensy 4.1
HARDWARE: IMXRT1062 600MHz, 512KB RAM, 7.75MB Flash
DEBUG: Current (jlink) External (jlink)
PACKAGES:
 - framework-arduinoteensy 1.154.0 (1.54)
 - tool-teensy 1.154.210805 (1.54)
 - toolchain-gccarmnoneeabi 1.50401.190816 (5.4.1)
LDF: Library Dependency Finder -> http://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 92 compatible libraries
Scanning dependencies...
Dependency Graph
|-- <Audio> 1.3
|   |-- <SerialFlash>
|   |   |-- <SPI> 1.0
|   |-- <SPI> 1.0
|   |-- <Wire> 1.0
|   |-- <SD> 2.0.0
|   |   |-- <SdFat> 2.0.5-beta.1
|   |   |   |-- <SPI> 1.0
|-- <TimeAlarms>
|   |-- <Time> 1.6.1
|-- <Time> 1.6.1
Building in release mode
Compiling .pio\build\teensy41\src\main.cpp.o
Linking .pio\build\teensy41\firmware.elf
.pio\build\teensy41\lib88d\libAudio.a(output_i2s.cpp.o): In function `set_arm_clock(unsigned long)':
output_i2s.cpp:(.text._Z13set_arm_clockm+0x0): multiple definition of `set_arm_clock(unsigned long)'
.pio\build\teensy41\src\main.cpp.o:main.cpp:(.text._Z13set_arm_clockm+0x0): first defined here
c:/users/n3ur0/.platformio/packages/toolchain-gccarmnoneeabi@1.50401.190816/bin/../lib/gcc/arm-none-eabi/5.4.1/../../../../arm-none-eabi/bin/ld.exe: Disabling relaxation: it will not work with multiple definitions  
.pio\build\teensy41\lib88d\libAudio.a(output_i2s.cpp.o):(.data.F_BUS_ACTUAL+0x0): multiple definition of `F_BUS_ACTUAL'
.pio\build\teensy41\src\main.cpp.o:(.data.F_BUS_ACTUAL+0x0): first defined here
.pio\build\teensy41\lib88d\libAudio.a(output_i2s.cpp.o):(.data.F_CPU_ACTUAL+0x0): multiple definition of `F_CPU_ACTUAL'
.pio\build\teensy41\src\main.cpp.o:(.data.F_CPU_ACTUAL+0x0): first defined here
.pio\build\teensy41\lib88d\libAudio.a(play_sd_wav.cpp.o): In function `set_arm_clock(unsigned long)':
play_sd_wav.cpp:(.text._Z13set_arm_clockm+0x0): multiple definition of `set_arm_clock(unsigned long)'
.pio\build\teensy41\src\main.cpp.o:main.cpp:(.text._Z13set_arm_clockm+0x0): first defined here
.pio\build\teensy41\lib88d\libAudio.a(play_sd_wav.cpp.o):(.data.F_BUS_ACTUAL+0x0): multiple definition of `F_BUS_ACTUAL'
.pio\build\teensy41\src\main.cpp.o:(.data.F_BUS_ACTUAL+0x0): first defined here
.pio\build\teensy41\lib88d\libAudio.a(play_sd_wav.cpp.o):(.data.F_CPU_ACTUAL+0x0): multiple definition of `F_CPU_ACTUAL'
.pio\build\teensy41\src\main.cpp.o:(.data.F_CPU_ACTUAL+0x0): first defined here
.pio\build\teensy41\libFrameworkArduino.a(AudioStream.cpp.o): In function `set_arm_clock(unsigned long)':
AudioStream.cpp:(.text._Z13set_arm_clockm+0x0): multiple definition of `set_arm_clock(unsigned long)'
.pio\build\teensy41\src\main.cpp.o:main.cpp:(.text._Z13set_arm_clockm+0x0): first defined here
.pio\build\teensy41\libFrameworkArduino.a(AudioStream.cpp.o):(.data.F_BUS_ACTUAL+0x0): multiple definition of `F_BUS_ACTUAL'
.pio\build\teensy41\src\main.cpp.o:(.data.F_BUS_ACTUAL+0x0): first defined here
.pio\build\teensy41\libFrameworkArduino.a(AudioStream.cpp.o):(.data.F_CPU_ACTUAL+0x0): multiple definition of `F_CPU_ACTUAL'
.pio\build\teensy41\src\main.cpp.o:(.data.F_CPU_ACTUAL+0x0): first defined here
.pio\build\teensy41\libFrameworkArduino.a(clockspeed.c.o):(.data.F_BUS_ACTUAL+0x0): multiple definition of `F_BUS_ACTUAL'
.pio\build\teensy41\src\main.cpp.o:(.data.F_BUS_ACTUAL+0x0): first defined here
.pio\build\teensy41\libFrameworkArduino.a(clockspeed.c.o):(.data.F_CPU_ACTUAL+0x0): multiple definition of `F_CPU_ACTUAL'
.pio\build\teensy41\src\main.cpp.o:(.data.F_CPU_ACTUAL+0x0): first defined here
collect2.exe: error: ld returned 1 exit status
*** [.pio\build\teensy41\firmware.elf] Error 1
Does anyone had a similar problem? Is there a possibility to fix this issue without editing the 3rd Party package?
Greetings