joebmz98
Member
Hiya,
I'm new to this forums!
I decided to take upon a rather grand project of a small granular sampler with the Teensy 4.0 and its audio shield. Currently, I'm getting used to the whole, having a dev board in front of me as I'm very much used to a Matlab or JUCE environment (I am doing an Arduino course at the same time to help familiarise myself).
Unfortunately, I've had issues just using some of the example pieces of code. For example, the "WavFilePlayer" from Teensyduino, I uploaded to my teensy and after the setup function, the sample I have on my SD card plays once but never again. Here is the attached code:
I tried repeating it in the code as seen above to get it to repeat during the main loop function, to no avail.
I've also attached the audio file just in case that's causing an issue. I've read online a lot about wav files needing to be 16 bit, 44.1kHz PCM. I'm fairly certain the files I am using are but I could be wrong.
I did also try re-formatting my SD card to FAT32 as per many online forums recommendations.
Any advice?
I'm new to this forums!
I decided to take upon a rather grand project of a small granular sampler with the Teensy 4.0 and its audio shield. Currently, I'm getting used to the whole, having a dev board in front of me as I'm very much used to a Matlab or JUCE environment (I am doing an Arduino course at the same time to help familiarise myself).
Unfortunately, I've had issues just using some of the example pieces of code. For example, the "WavFilePlayer" from Teensyduino, I uploaded to my teensy and after the setup function, the sample I have on my SD card plays once but never again. Here is the attached code:
Code:
// Simple WAV file player example
//
// Three types of output may be used, by configuring the code below.
//
// 1: Digital I2S - Normally used with the audio shield:
// http://www.pjrc.com/store/teensy3_audio.html
//
// 2: Digital S/PDIF - Connect pin 22 to a S/PDIF transmitter
// https://www.oshpark.com/shared_projects/KcDBKHta
//
// 3: Analog DAC - Connect the DAC pin to an amplified speaker
// http://www.pjrc.com/teensy/gui/?info=AudioOutputAnalog
//
// To configure the output type, first uncomment one of the three
// output objects. If not using the audio shield, comment out
// the sgtl5000_1 lines in setup(), so it does not wait forever
// trying to configure the SGTL5000 codec chip.
//
// The SD card may connect to different pins, depending on the
// hardware you are using. Uncomment or configure the SD card
// pins to match your hardware.
//
// Data files to put on your SD card can be downloaded here:
// http://www.pjrc.com/teensy/td_libs_AudioDataFiles.html
//
// This example code is in the public domain.
#include <Audio.h>
#include <Wire.h>
#include <SPI.h>
#include <SD.h>
#include <SerialFlash.h>
AudioPlaySdWav playWav1;
// Use one of these 3 output types: Digital I2S, Digital S/PDIF, or Analog DAC
AudioOutputI2S audioOutput;
//AudioOutputSPDIF audioOutput;
//AudioOutputAnalog audioOutput;
//On Teensy LC, use this for the Teensy Audio Shield:
//AudioOutputI2Sslave audioOutput;
AudioConnection patchCord1(playWav1, 0, audioOutput, 0);
AudioConnection patchCord2(playWav1, 1, audioOutput, 1);
AudioControlSGTL5000 sgtl5000_1;
// Use these with the Teensy Audio Shield
#define SDCARD_CS_PIN 10
#define SDCARD_MOSI_PIN 7 // Teensy 4 ignores this, uses pin 11
#define SDCARD_SCK_PIN 14 // Teensy 4 ignores this, uses pin 13
// Use these with the Teensy 3.5 & 3.6 & 4.1 SD card
//#define SDCARD_CS_PIN BUILTIN_SDCARD
//#define SDCARD_MOSI_PIN 11 // not actually used
//#define SDCARD_SCK_PIN 13 // not actually used
// Use these for the SD+Wiz820 or other adaptors
//#define SDCARD_CS_PIN 4
//#define SDCARD_MOSI_PIN 11
//#define SDCARD_SCK_PIN 13
void setup() {
Serial.begin(9600);
// Audio connections require memory to work. For more
// detailed information, see the MemoryAndCpuUsage example
AudioMemory(8);
// Comment these out if not using the audio adaptor board.
// This may wait forever if the SDA & SCL pins lack
// pullup resistors
sgtl5000_1.enable();
sgtl5000_1.volume(0.5);
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);
}
}
}
void playFile(const char *filename)
{
Serial.print("Playing file: ");
Serial.println(filename);
// Start playing the file. This sketch continues to
// run while the file plays.
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 loop() {
playFile("01.wav"); // filenames are always uppercase 8.3 format
delay(1000);
playFile("02.wav"); // filenames are always uppercase 8.3 format
delay(1000);
}
I tried repeating it in the code as seen above to get it to repeat during the main loop function, to no avail.
I've also attached the audio file just in case that's causing an issue. I've read online a lot about wav files needing to be 16 bit, 44.1kHz PCM. I'm fairly certain the files I am using are but I could be wrong.
I did also try re-formatting my SD card to FAT32 as per many online forums recommendations.
Any advice?