1. Visualizer that uses the stellaris launchpad RGB (uses red and blue - left and right cahnnels)
2. S3M and MOD formats supported (detected by extension)
3. SD card support (using SPI mode on SSI0)
Limitations:
1. Because of the memory constraints the player only support up-to 14 channels mods
2. Some mod/s3m will not be able to played smoothly because our far buffers are quite small.
3. There are only 1100 bytes of free RAM left.
4. Put all the mods in a folder called "mods" in the root of the sd card
I'm not sure fat32 is supported....
I've added a small LC filter to the output to limit the high frequency signals.
Here is a site that is help-full link , you don't have to use it but it gives a better sound.
(My cutoff frequency is 10Khz)
Schematics:
Audio:
Left PB1
Right PB0
SD card:
SCK (clock) - PA2
CS (Chip select) - PA3
MOSI (Master out slave in - DI) - PA5
MISO (Master in slave out - DO) - PA4
Usage:
Right button next song, Left button previous song.
Added SD Card, S3M and visualizer support see here link.
Recently I got myself a Stellaris Launchpad board by TI and thought what I could do with it.
I decided to create a simple MOD player with the bear minimum of extra parts and so here is the
result:
The video recording was done using PC LINE IN and in stereo and because of that there is a faint whine in the background but the sound that comes directly from the board is much better.
The board supports only 4 channel MODs technically you can put a MOD with more channels but there is no memory allocated for them, so the results are unpredictable.
There is enough space on the device for 213Kb of MODs.
Right now the code is set to take up-to 6 MODS, you can change it if you want (as long as you keep below the 213Kb limit)
Because I did not have an SD card breakout board I had to load the files from somewhere
so I've created VFS (Virtual File System) which helped a lot during development, the files reside inside the
flash of the MCU.
It should be fairly easy to switch to FatFs since I've used the same prototype functions.
SD support will probably come in the future (when I get a SD breakout board)
Technical difficulties:
While porting this I've encountered several difficulties:
1. The amount of RAM on the pic32 device was 3 times what we had (96K vs our 32K)
had to shrink the buffers a lot, will see how it affects while reading from SD card.
2. PWM code completely different, had to understand both architectures and settings to rewrite
it correctly.
3. Timing for the sampler interrupt is CRITICAL even a small difference in invocation
would cause popping and beeping in sound.
4. Interrupt priorities, after adding the buttons handling (which are polled using the systick interrupt) I've noticed that the sound would be distorted, which I've concluded was due to the sampler interrupt not getting enough time to run or was itself was being interrupted, a code to set priorities to interrupts was added.
Hardware:
1 x Stellaris Launchpad
1 x Audio Jack
Schematics:
Take the audio jack connect the GND pin to the GND pin on the board J3.2
LEFT channel is J1.7 (PB4)
RIGHT channel is J2.7 (PB6)
Usage:
Right button next song
Left button previous song.
If connected to computer the serial terminal writes some info about the song that is playing.
File:
Attached is the whole project, source, binary and convert tool for mods. Download project.
To use the convert tool: after extracting the project to Stellarisware directory. NOTICE: My Stellarisware directory is called Stellarisware2 so some adjustments might be necessary in order to compile the sources, the project should be placed next to the other projects: C:\StellarisWare2\boards\ek-lm4f120xl\modplayer
go into the tools directory copy all your wanted MODS to that dir and run "runconvert.bat"