Musik und Sound
Wer ein Spielchen programmiert, wird wohl nicht auf Musik oder Sounds verzichten können. Deshalb kümmern wir uns hier darum, wie und wo man Sounds oder Musik einbindet. Zudem gibt es auch gleich ein kleines Tutorial, wie man in das gewünschte Format konvertiert. Vorweg sei aber gesagt, dass so ziemlich jeder Luaplayer andere Befehle für Musik und Sound hat, sowie auch andere Dateiformate unterstützt.
Der "normale" LUAPlayer (hier speziell Luaplayer Mod1-4 von Cools) kann folgende Formate abspielen: UNI, IT, XM, S3M, MOD, MTM, STM, DSM, MED, FAR, ULT oder 669 für Musik. WAV kann nur für Sounds verwendet werden. Die obigen Formate können direkt aus dem MIDI-Format konvertiert werden. Dazu gibt es ein schönes Programm namens MadTracker, erhältlich auf http://www.madtracker.org. Nun zum eigentlichen Code (Achtung, diese Befehle gelten NUR für die Luaplayer Mod1-4 von Cools)
Music.playFile("lied.xm", true) --...spielt Musik ab, true/false aktiviert/deaktiviert den Loop-Modus. Music.pause() --...pausiert ein Lied, also hält es nur an. Music.stop() --...beendet ein Lied. Music.resume() --...setzt die Wiedergabe fort nach der Pausierung. Music.playing() --...ermittelt, ob gerade ein Lied läuft. Music.volume(Zahl) --...legt die Lautstärke fest, Zahl kann einen Wert von 0 bis 128 enthalten.
Soviel zum Abspielen von Musik, wollen wir uns doch nun um Sounds kümmern. Wie schon gesagt, für Sounds eignet sich nur das Format WAV. Ins WAV-Format kann man z.B. mit Audacity konvertieren, dass es auf http://audacity.sourceforge.net gibt.
sound = Sound.load("bing.wav",false) --...lädt eine WAV-Datei, der Loop ist deaktiviert(false!) sound:play() --...spielt eine Sounddatei ab. sound:stop() --...beendet die Wiedergabe der Sounddatei sound:pause() --...pausiert die Soundwiedergabe sound:resume() --...setzt die Soundwiedergabe fort sound:playing() --...ermittelt, ob der Sound gerade wiedergegeben wird.
Speziell beim LUAPlayer Mod 4 kann man aber dann doch MP3 abspielen mit den folgenden Befehlen:
Mp3.load("song.mp3") --...lädt eine MP3-datei Mp3.play() --...spielt den MP3-Song ab Mp3.pause() --...pausiert das Abspielen Mp3.stop() --...stoppt das Abspielen und löscht den Song aus dem RAM Mp3.EndOfStream() --...ermittelt, ob der Song vorüber ist, gibt true oder false zurück Mp3.getTime() --...zeigt die MP3-Spielzeit an, Anzeige mittels einem String (Zeichenkette) Mp3.volume(zahl) --...stellt die MP3-Lautstärke ein
Das waren jetzt spziell die Funktionen des mittlerweile veralteten LuaPlayer Mod4 von Cools. Für neuere Firmwares benötigt man natürlich dann den LuaPlayerHM, ab Version 2 ist dieser auch Audio-tauglich. Version 2 hat zwar Befehle für Mp3, Sounds im .wav-Format können erst ab LuaPlayerHM 7 wieder problemlos benutzt werden.
Mp3/Ogg-Befehle (Standard Mp3-Funktionen) sind:
Mp3.load("datei.mp3") --Achtung, es kann maximal eine Mp3 geladen und zur selben Zeit abgespielt werden Mp3.stop() Mp3.pause() Mp3.play() --braucht keine Parameter, da sowieso nur eine Mp3 abgespielt werden kann Mp3.EndOfStream() Mp3.getTime() Mp3.songTime() Mp3.artist() Mp3.title() Mp3.album() Mp3.genre() Mp3.year() Mp3.trackNumber() Mp3.layer() Mp3.kbit() Mp3.mode() Ogg.load() --Achtung, es kann maximal eine Ogg geladen und zur selben Zeit abgespielt werden Ogg.stop() Ogg.pause() Ogg.play() --braucht keine Parameter, da sowieso nur eine Ogg abgespielt werden kann Ogg.EndOfStream() Ogg.songTime() Ogg.artist() Ogg.title() Ogg.album() Ogg.genre() Ogg.year() Ogg.trackNumber() Ogg.layer() Ogg.kbit() Ogg.mode()
Dazu gibt es noch eine spezielle Mp3-Bibliothek, die um einiges stabiler und schneller läuft und daher bevorzugt zu verwenden ist:
Aa3me.load() --Achtung, es kann maximal eine Aa3 geladen und zur selben Zeit abgespielt werden Aa3me.play() --braucht keine Parameter, da sowieso nur eine Aa3 abgespielt werden kann Aa3me.stop() Aa3me.eos() Aa3me.gettime() Aa3me.percent() Aa3me.pause() Aa3me.songTime() Aa3me.artist() Aa3me.title() Aa3me.album() Aa3me.genre() Aa3me.year() Aa3me.trackNumber() Aa3me.layer() Aa3me.kbit() Aa3me.mode() Aa3me.rawSongTime() Aa3me.instantBitrate() Aa3me.vis() Mp3me.load() --Achtung, es kann maximal eine Mp3 geladen und zur selben Zeit abgespielt werden Mp3me.play() --braucht keine Parameter, da sowieso nur eine Mp3 abgespielt werden kann Mp3me.stop() Mp3me.eos() Mp3me.gettime() Mp3me.percent() Mp3me.pause() Mp3me.songTime() Mp3me.artist() Mp3me.title() Mp3me.album() Mp3me.genre() Mp3me.year() Mp3me.trackNumber() Mp3me.layer() Mp3me.kbit() Mp3me.mode() Mp3me.rawSongTime() Mp3me.instantBitrate() Mp3me.vis()
Für Sounds speziell im .wav-Format muss ersteinmal ein Befehl ausgeführt werden, der das Abspielen aktiviert:
System.oaenable() --Aktiviert die Wiedergabe von Sounds System.oadisable() --Deaktiviert die Wiedergabe von Sounds
Zwischen diesen beiden Befehlen können dann Sounds wiedergegeben werden:
Sound.play(meinsound)
Der "Sound" meinsound muss aber natürlich zuvor geladen werden:
meinsound = Sound.load("achso.wav")
Weitere Befehle wären:
SoundSystem.SFXVolume() SoundSystem.reverb() SoundSystem.panoramicSeparation() sound:gc() sound:tostring()
Im Laufe der Zeit werden immer mehr Sound-Funktionen hinzukommen bzw evt. auch hinzugekommen sein. Für nähere Infos kann man dann einfach in der readme.txt des jeweiligen LuaPlayers nachlesen, oder auch im Entwicklerforum von http://luaplayerhm.xtreemhost.com nachsehen. Selbstverständlich darf auch im Forum auf http://www.bumuckl.com nachgefragt werden.