Mit dieser Library können Modul-Files vom Typ “.MOD” und “.S3M” aus dem Flash der CPU abgespielt werden.
Die Quelle vom Player sind von “Ronan K.”
(hier zu finden : http://mobile4dev.blogspot.co.il)
Mod-Files findet man im Netz z.B. unter “http://modarchive.org/”
Im “Global.h” File kann eingestellt werden, ob die Ausgabe per DAC oder per PWM
gemacht werden soll (beide Librarys sind dabei). RC-Glied am Ausgang nicht vergessen !!
Das abspielen von MOD-Files funktioniert ohne Probleme aber bei S3M-Files
muss die Samplefrq auf 20kHz runtergestellt werden.
Das File kann entweder nur einmal oder Endlos abgespielt werden. Funktionen für STOP, PAUSE, RESUME gibt es auch.
Zum umwandeln der Mod-Files in ein C-File kann mein Konverter benutzt werden.
Benutzte Pins :
1 2 | bei DAC-Out : PA4 (left) , PA5 (right) bei PWM-Out : PB11 (left), PA1 (right) |
Voraussetzungen :
1 2 | Benutzte Module der CooCox-IDE : TIM, MISC Benutzte Librarys : STM32_UB_DAC, STM32_UB_PWM |
Enumerationen :
1 2 3 4 5 6 7 | typedef enum { MODPLAYER_NO_INIT = 0, // noch nicht initialisiert MODPLAYER_INIT_OK, // init ok MODPLAYER_PLAY, // PLAY MODPLAYER_PAUSE, // PAUSE MODPLAYER_STOP // STOP }MODPLAYER_STATUS_t; |
Funktionen :
1 2 3 4 5 6 7 | void UB_Modplayer_Init(void); // zum init vom Player MOD_FILE_t UB_Modplayer_PlaySingle(UB_MOD_File *modfile); // spielt einen Song einmal ab MOD_FILE_t UB_Modplayer_PlayLoop(UB_MOD_File *modfile); // spielt einen Song in Dauerloop ab MODPLAYER_STATUS_t UB_Modplayer_PlayDo(void); // muss zyklisch aufgerufen werden void UB_Modplayer_Pause(void); // pause void UB_Modplayer_Resume(void); // resume void UB_Modplayer_Stop(void); // stop |
Beispiel :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | //-------------------------------------------------------------- // File : main.c // Datum : 05.06.2014 // Version : 1.0 // Autor : UB // EMail : mc-4u(@)t-online.de // Web : www.mikrocontroller-4u.de // CPU : STM32F4 // IDE : CooCox CoIDE 1.7.4 // GCC : 4.7 2012q4 // Module : CMSIS_BOOT, M4_CMSIS_CORE // Funktion : Demo vom Mod-Player // Hinweis : Diese zwei Files muessen auf 8MHz stehen // "cmsis_boot/stm32f4xx.h" // "cmsis_boot/system_stm32f4xx.c" //-------------------------------------------------------------- #include "main.h" #include "stm32_ub_modplayer.h" int main(void) { SystemInit(); // Quarz Einstellungen aktivieren // init vom Modplayer UB_Modplayer_Init(); // Modfile in Dauerloop laden UB_Modplayer_PlayLoop(&MOD_File_Aurora); while(1) { // Modfile abspielen UB_Modplayer_PlayDo(); } } |
Hier die Library zum Download :
Hier der komplette CooCox-Projektordner zum Download :
Gruesse! Ich moechte ankuendigen, dass ich diesen Post ueber dem 85-Modplayer Library fuer STM32F4 zum r/stm32f4 Subreddit zugetan habe. Den findet man auf http://reddit.com/r/stm32f4.
Uebrigends, noch weitere Auskunft ueber dem STM32F4 bzw. Muzik findet man auf meiner Seite: http://diydsp.com/livesite/pages/stm32f4
Great work!