Background: I love eBay "mini clip MP3 players", the ones with no display. Dirt cheap, simple, and effective... and if you use them right (it's not hard) they actually have a few advantages over the 2nd Gen iPod Shuffle that they're knockoffs of. But there's a few features I'd like to add, that aren't there.
I also love my Rio500 player, being a retrotech kinda guy, but keeping a 20y/o device of that sort running is at this point a bit of a challenge...
The Project: I also have a Teensy LC. I got it for use with the QMK keyboard firmware but AFAICT that particular featureset no longer works. I really don't have funds right now for additional hardware but I've got passives and a few eBay Arduino Pro Micros lying around... and a few other bits and bobs. I'd like to make a player if I can.
Here's the featuresrt I'm looking for off-the-bat...
- SD/MicroSD support via SPI, for -HC cards (-XC can wait)
- Support for FAT32 filesystem, tracks play in alphabetical order by filename - symbols then numerals then A-Z; ID3 tags and non-MP3-format files ignored
- On-Teensy MP3 Decoding. That's the doozy, I bet!
- Simple PWM output. If it's genuinely easier to offload PWM gen to a 32u4 I don't mind, I have that.
- Output via simple amp, something like an "LM386 + single big cap + trim pot" type circuit
- The usual buttons for media control, a repeat-current-track mode, and a shuffle mode... playback automatically loops endlessly
- Drives standard amplified speakers and standard headphones
- Power via 3xAAA batteries, with a low-batt detection (I tend to buy Dollar Tree 'Sunbeam' cells for everything that doesn't have a motor in it somewhere... they aren't alkaline*)
- Simple LEDs for power (blink for playback, maybe bicolor for power/playback/error, eg steady green for on-but-paused, blinking green for playing, steady red for no/unreadable/blank card, blinking red for all files corrupt/unreadable/non-MP3) and for a Low Batt alert.
Future Expansion Ideas: I'd ultimately like to add a character LCD -- or one of those tiny SPI TFT things -- and folder support, along with corresponding new playback modes (repeat within folder, play through folder then stop, etc) and eventually folder-within-folder support for eg "Disc 1" "Disc 2" within albums. The aforementioned hint about SDXC support would go here as well USB drive support would be nice at some point as well. TBH, that's actually about it.
Concerns and such: I generally have a fairly poor idea of what a given uC is capable of... and I'm uhm pretty bad with programming. The concepts I generally understand, abstractly, if the person talking uses the right words (most of the jargon lands me in r/whoosh!) but doing the actual coding... well... imagine someone learned BASIC on a C64C around the time Monkey Island first came out, and although they learned it pretty well and remember most of it (supposedly), they haven't written a line of code since. That's basically where I am. I can sort of read bash scripts and Arduino Sketches well enough to get a vaguely reasonable idea of what does what where, but so far I'm really barely half-decent at cobbling together disparate bits of code to do something (think Lego set) and writing something from scratch has me instantly lost. I'm better with hardware; I can kind of think in glue logic.
I'm not saying "I can't" -- I'm saying, "I want you guys and gals to collectively hold my hand while I cannonball into the deep end, because I know I can do this (hardware willing lol) if I have a motivating and challenging, big, rewarding project and a bunch of community support -- and *only* then -- and this is a thing that's been bugging me about myself for literally years."
Besides, I've done this sort of thing before. When I was ten, Mom handed me a textbook Cambridge University had published in the 1970s (this was about 1997 or so) for a one-semester introductory Latin course, immersion-style... I hit the back cover three weeks later and was quite capable at that point of writing decent one-page short stories.
The $6,000,000.00 Question: Can I do this with the Teensy LC, and can you folks help me do it?
* TBH if I had to guess what's inside... sawdust, spit, and bits of rust. The metal they use for the housing can is so thin it dents when you squeeze it! They *do* put electrons in there, the things are great for eg LED flashlights, but the one time I dropped a pair in my electric toothbrush to see how they'd do (Crest Spinbrush, just FTR) it just all went kind of sad.
I also love my Rio500 player, being a retrotech kinda guy, but keeping a 20y/o device of that sort running is at this point a bit of a challenge...
The Project: I also have a Teensy LC. I got it for use with the QMK keyboard firmware but AFAICT that particular featureset no longer works. I really don't have funds right now for additional hardware but I've got passives and a few eBay Arduino Pro Micros lying around... and a few other bits and bobs. I'd like to make a player if I can.
Here's the featuresrt I'm looking for off-the-bat...
- SD/MicroSD support via SPI, for -HC cards (-XC can wait)
- Support for FAT32 filesystem, tracks play in alphabetical order by filename - symbols then numerals then A-Z; ID3 tags and non-MP3-format files ignored
- On-Teensy MP3 Decoding. That's the doozy, I bet!
- Simple PWM output. If it's genuinely easier to offload PWM gen to a 32u4 I don't mind, I have that.
- Output via simple amp, something like an "LM386 + single big cap + trim pot" type circuit
- The usual buttons for media control, a repeat-current-track mode, and a shuffle mode... playback automatically loops endlessly
- Drives standard amplified speakers and standard headphones
- Power via 3xAAA batteries, with a low-batt detection (I tend to buy Dollar Tree 'Sunbeam' cells for everything that doesn't have a motor in it somewhere... they aren't alkaline*)
- Simple LEDs for power (blink for playback, maybe bicolor for power/playback/error, eg steady green for on-but-paused, blinking green for playing, steady red for no/unreadable/blank card, blinking red for all files corrupt/unreadable/non-MP3) and for a Low Batt alert.
Future Expansion Ideas: I'd ultimately like to add a character LCD -- or one of those tiny SPI TFT things -- and folder support, along with corresponding new playback modes (repeat within folder, play through folder then stop, etc) and eventually folder-within-folder support for eg "Disc 1" "Disc 2" within albums. The aforementioned hint about SDXC support would go here as well USB drive support would be nice at some point as well. TBH, that's actually about it.
Concerns and such: I generally have a fairly poor idea of what a given uC is capable of... and I'm uhm pretty bad with programming. The concepts I generally understand, abstractly, if the person talking uses the right words (most of the jargon lands me in r/whoosh!) but doing the actual coding... well... imagine someone learned BASIC on a C64C around the time Monkey Island first came out, and although they learned it pretty well and remember most of it (supposedly), they haven't written a line of code since. That's basically where I am. I can sort of read bash scripts and Arduino Sketches well enough to get a vaguely reasonable idea of what does what where, but so far I'm really barely half-decent at cobbling together disparate bits of code to do something (think Lego set) and writing something from scratch has me instantly lost. I'm better with hardware; I can kind of think in glue logic.
I'm not saying "I can't" -- I'm saying, "I want you guys and gals to collectively hold my hand while I cannonball into the deep end, because I know I can do this (hardware willing lol) if I have a motivating and challenging, big, rewarding project and a bunch of community support -- and *only* then -- and this is a thing that's been bugging me about myself for literally years."
Besides, I've done this sort of thing before. When I was ten, Mom handed me a textbook Cambridge University had published in the 1970s (this was about 1997 or so) for a one-semester introductory Latin course, immersion-style... I hit the back cover three weeks later and was quite capable at that point of writing decent one-page short stories.
The $6,000,000.00 Question: Can I do this with the Teensy LC, and can you folks help me do it?
* TBH if I had to guess what's inside... sawdust, spit, and bits of rust. The metal they use for the housing can is so thin it dents when you squeeze it! They *do* put electrons in there, the things are great for eg LED flashlights, but the one time I dropped a pair in my electric toothbrush to see how they'd do (Crest Spinbrush, just FTR) it just all went kind of sad.