PaulStoffregen
Well-known member
Oh, I see. I've updated "tools.teensyloader.cmd.path" just now. It'll be fixed in 1.28-beta2.
Last edited:
I'm applying fixes and updates in preparation for 1.28-beta2. Now's the time to remind me of updates or fixes that ought to go into 1.28.
// Converted from the WavFilePlay from the Teensy release:
// hardware/teensy/avr/libraries/Audio/examples/WavFilePlayer/WavFilePlayer.ino
//
// Simple RAW file player example for the prop shield to use the Analog DAC
// and prop shield amplifier to play mono sounds.
// http://www.pjrc.com/teensy/gui/?info=AudioOutputAnalog
//
// On the prop shield, pin 6 selects the serial flash memory controller,
// and pin 5 enables the amplifier.
//
// This example code is in the public domain.
#include <Audio.h>
#include <Wire.h>
#include <SPI.h>
#include <SD.h>
#include <SerialFlash.h>
// GUItool: begin automatically generated code
AudioPlaySerialflashRaw playFlashRaw1; //xy=149,388
AudioMixer4 mixer1; //xy=445,386
AudioOutputAnalog dac1; //xy=591,379
AudioConnection patchCord1(playFlashRaw1, 0, mixer1, 0);
AudioConnection patchCord2(mixer1, dac1);
// GUItool: end automatically generated code
#define PROP_AMP_ENABLE 5
#define FLASH_CHIP_SELECT 6
#define VOLUME_POT A1
void setup() {
Serial.begin(9600);
// wait up to 3 seconds for the Serial device to become available
long unsigned debug_start = millis ();
while (!Serial && ((millis () - debug_start) <= 3000))
;
Serial.println ("Start prop shield RAW player");
// Enable the amplifier on the prop shield
pinMode(PROP_AMP_ENABLE, OUTPUT);
digitalWrite(PROP_AMP_ENABLE, HIGH);
// Audio connections require memory to work. For more
// detailed information, see the MemoryAndCpuUsage example
AudioMemory(8);
// Set initial volume
mixer1.gain(0, 0.5f);
// uncomment these lines if you have a potentiometer or trimpot
// on the pin A1 to control the volume, and comment out the
// above line
// float vol = analogRead(VOLUME_POT);
// mixer1.gain(0, vol / 1024.0f);
// Start SerialFlash
if (!SerialFlash.begin(FLASH_CHIP_SELECT)) {
while (1)
{
Serial.println ("Cannot access SPI Flash chip");
delay (1000);
}
}
}
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.
playFlashRaw1.play(filename);
// A brief delay for the library read RAW info
delay(5);
// Simply wait for the file to finish playing.
while (playFlashRaw1.isPlaying()) {
// uncomment these lines if you have a potentiometer or trimpot
// on the pin A1 to control the volume
// float vol = analogRead(VOLUME_POT);
// mixer1.gain(0, vol / 1024.0f);
}
}
void loop() {
playFile("SDTEST1.RAW"); // filenames are always uppercase 8.3 format
delay(500);
playFile("SDTEST2.RAW");
delay(500);
playFile("SDTEST3.RAW");
delay(500);
playFile("SDTEST4.RAW");
delay(1500);
}
As I mentioned in the prop shield thread, I think it would be useful to have an example that uses the shield to play recorded sounds. ...
Now that a hex file for TeensyTransfer has been made available, it is simple to go into the Teensy Loader (which continues running after the Teensy IDE stops on my Linux system), select the hex file, and hit the program button on the Teensy to download TeensyTransfer without having to compile it.That is a nice example - just tested to work again as posted - TeensyTransfer was a good way to (erase&list&write) the files on Flash (until my sources got out of sync - and RAW_HID is a pain with IDE changing in all instances and a full recompile on changing). The other way to get files on CopyFromSerial - needs python with serial support. That makes for a complex as a sample - but then again somebody using that stuff would need to do all those steps. Talkie is an easy way to hear working sound - with less utility and has a fixed set of word samples and the path to making new ones is not apparent after searching.
I assume SSD1306
and other Adafruit library fixes will be merged?
on windows i have a folder ".... avr/libraries" where cpp / h 'libraries' reside in their folders... that is where I keep a folder called 'Talkie' ... will that not be overwritten?
As I mentioned in the prop shield thread, I think it would be useful to have an example that uses the shield to play recorded sounds.
Now that a hex file for TeensyTransfer has been made available, it is simple to go into the Teensy Loader (which continues running after the Teensy IDE stops on my Linux system), select the hex file, and hit the program button on the Teensy to download TeensyTransfer without having to compile it.
I merged Frank's MP3 example.
For raw format, I'd really like to include an example which demonstrates playing some of the sounds simultaneously with mixers. The main benefit for raw format is the low CPU overhead which gives you the ability to play several at the same time.
That's fine. Mp3 is much better for just demo-ing playing sounds. I wasn't sure if you were going to include his code.
Fresh install of Arduino 1.6.8 and Teensyduino 1.28 beta #1. El Capitan. Teensy 3.1
Install was normal and I can upload as MIDI with no errors but the Teensy is not being recognized as a MIDI device by any of my software after programming. I’m testing with the MIDI Buttons example.
If I upload from another Mac running Arduino 1.6.7 and Teendsyduino 1.27 everything is fine.