Varying playback speed sounds simple but really isn't, and while I've never used the audio library, I would be 99.9% sure this wasn't built in because it's not something a user would be likely to want.
Consider a vinyl, if you want to slow that down you just turn the motor speed down a notch - easy.
Now consider your DAC board, firing out 44k conversions per second, and you want to slow this down. You're options are
- change the clock rate
- do maths on the samples
changing clock rates is a bit of a field, but at relatively slows clocks like 44kHz you can get away with a lot more than at higher speeds. Any clock must either be generated by an oscilator, or generated by dividing down another clock (or multiplying, but I dont think teensy has PLL's built in
). So you could take a 100kHz clock, and get a 50kHz clock by halving it, then 25k by halving it again and so on, but you'll notice this would be non-linear.
Teensy has hardware timers built-in that can trigger reliably down to microseconds. Ignoring a few other details, lets say you use a 1 us timer, and you use it to toggle your clock every X number of counts to get a varible clock rate. Toggling every 11 uS is a clock rate of 45kHz - close enough right? Your next clock is once every 12uS at 41.6kHz, then 38.4k and so on. These steps wouldn't sound smooth at all. Depending on how good someone's ear is you probably need 10x the resolution. Finally, we're also assuming the DAC is happy with it's clock rate being changed on the fly, and that it expects this clock to be the sample rate, two assumptions big enough to choke on. This method isn't impossible, but unlikely to be practical with this hardware.
FFT is the better method, and to my understanding the one used en mass. DJ software like serato and Ableton merrily allows the user to change the speed of tracks (even without changing pitch). We're starting to get towards the edge of my knowledge, but you can operate on the track's frequency components rather than it's discrete value at a given time. You can then use these altered frequency components to convert back into a discrete value over time but crucially you can make a slight change that still gets played out at 44kHz. It's probably possible to code this into teensy, particularly a T4 now that that monster is out. But it's not a trivial project!