Radio

    • GM 8

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • Radio
      von HHDS

      Guten Abend,
      in diesem Tutorial wollte ich euch mal ein einfaches Radio mit Usertrack-funktion zeigen. Vorweg sei gesagt, dass ihr euch schon mit Listen und vorallem den file_find_ -Funktionen beschäftigt haben solltet, da ich auf einzelne Dinge nicht eingehen werde.

      So, dann wollen wir mal!


      Das erste, dass wir machen, ist eine Tracklist zu erstellen. dazu erstellen wir ein Object und nennen es mal obj_radio. In das Create-Event schreiben wir:

      GML-Quellcode

      1. // Create a list
      2. track_list = ds_list_create();
      3. i = 0; // Set user_track-value to 0
      4. n = 0;
      5. //search for files
      6. path = working_directory+"\user\"
      7. user_track = file_find_first(path+"*.mp3",0);
      8. if (user_track != "")
      9. {
      10. ds_list_add(track_list,user_track);
      11. usr_track[i] = sound_add(path+user_track,3,true); // Falls diese Zeile einen Fehler auslöst, einfach usr_track[i] durch user_track[i] ersetzen
      12. i+=1;
      13. while(1)
      14. {
      15. user_track = file_find_next();
      16. if (user_track != "")
      17. {
      18. ds_list_add(track_list,user_track);
      19. usr_track[i] = sound_add(path+user_track,3,true); // hier ebenso
      20. i += 1;
      21. }
      22. else
      23. { break;}
      24. }
      25. }
      26. value = floor(random(i));
      27. _value = value;
      28. sound_play(usr_track[value]); // user_track[value]
      29. alarm[0] = 60;
      Alles anzeigen

      Nach diesem Code wird eine Tracklist erstellt, im Ordner "user" nach MP3-Dateien geschaut und ggf. in die List geaddet. Statt MP3s kann man auch andere Formate nehmen. Ich beschränke mich hier allerdings auf MP3.

      So, damit wäre der erste Teil geschafft.

      Der nächste Teil ist die Soundauswahl.
      Da wir schon dem alarm[0]-event den Wert 60 gegeben haben, schreiben wir nun ins Alarm[0] folgendes:

      GML-Quellcode

      1. if !(sound_isplaying(usr_track[value]))
      2. {
      3. value = floor(random(i));
      4. while (value == _value)
      5. {
      6. value = floor(random(i));
      7. if (value != _value)
      8. { break;}
      9. }
      10. sound_play(usr_track[value]); // auch user_track[value]
      11. _value = value;
      12. }
      13. alarm[0] = 10; // rücksetzung des Alarm-Events
      Alles anzeigen

      Dieser Teil ist etwas kompliziert:
      Zunächst wird abgefragt, ob keiner der usertracks abgespielt wird. Ist dies der Fall, wird der Variable value einen zufälligen Wert aus der Anzahl der usertracks zugewiesen.
      Dann folgt eine Schleife, die solange ausgefürt wird, bis value einen anderen Wert als den vorigen zugewiesen bekommen hat. Somit wird ein mehrfaches Abspielen eines Tracks hintereinander vermieden.
      Zum Schluss wird der neue Track abgespielt und das Alarm-Event zuück gesetzt.


      So, das wars fürs erste. Im Anhang findet ihr das Example dazu. Einfach in den Ordner "user" eure MP3s reinkopieren und ausprobieren.
      Zum Schluss möchte ich noch copyboy für seine Hilfe bei den file_find_ -Funktionen danken.
      Viel Spaß und Erfolg bei euren Projekten. ;)

      radio_example.zip GM 8
      example_radio_gm7.zip GM 7

      HHDS

      Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von _HHDS_ ()

    • Hoppala, danke, dass du mich darauf hingewiesen hast. Werde ich gleich korrigieren. Zudem wird noch eine gm7-gmk folgen ;)

      EDIT: Nein, da muss nichts korrigiert werden. Zuerst sucht er im Ordner (!) nach einer Datei. Ist der Suchvorgang positiv, speichert er den Wert in die Variable. Was dann folgt ist der weitere Suchlauf.
      In diesem werden die Dateien solange in die Liste geaddet, bis keine Datei mehr vorhanden ist, die geaddet werden muss. Diese Werte werden dann in der Variable usr_track gespeichert.
      GM7-gmk im ersten Post.

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von _HHDS_ ()

    • Kann auch nicht. Ich habe nochmals die obigen Codes 1:1 in den GM7 kopiert und es funktionierte ohne Probleme.
      Vllt. ist bei dir etwas anderes Schief gelaufen. Ich habe nämlich das Radio ursprünglich im GM7 gecodet und diese beiden Codes da original rauskopiert habe ohne jegliche Änderungen. Kopier mal die obigen Codes 1:1, erstell nen user-Ordner auf dem Desktop und speicher die test-gmk außerdem auf dem Desktop. Dann packst du in den Ordner noch ein paar MP3s und dann sollte es ohne Probleme funktionieren.

      EDIT: Bzw. lad dir mal das gm7-example runter.