This is Video about 'Arduino Uno Playing 12Chl S3M @ 37KHz'
Video Youtube |
The mixer and interrupt routines are now optimized by hand written assembly code and mixing is done one channel at the time to reduce register pressure, so I was able to increase the playback frequency and number of audio channels from the previous iteration. If I counted the cycles right, the mixer inner loop is now 28 cycles/sample/channel on ATmega328. Writing the routines in asm was a good crash course to AVR assembly language and GCC inline asm (:
I also added support for S3M files to have music files with more audio channels because MOD files usually have only 4 channels. The music in the video is aryx.s3m (from '95 by Karsten Koch) that has 12 channels and was small enough to fit into 32KB of flash in Uno when compressed. The player also supports most audio effects to play wider range of MOD/S3M files correctly.
The source code is available here: http://code.google.com/p/arduino-music-player
Arduino Uno Playing 12Chl S3M @ 37KHz |
No comments:
Post a Comment