PlayMusic() Trackermodule wiederholen

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
xperience2003
Beiträge: 965
Registriert: 04.10.2004 18:42
Computerausstattung: Amiga, LinuxMint, Windows7
Wohnort: gotha
Kontaktdaten:

PlayMusic() Trackermodule wiederholen

Beitrag von xperience2003 »

Wie man ein Musikmodul loopbar macht:

Der PlayMusic-Befehl in PB kann
verschiedene SoundTracker Musikstücke abspielen.

Leider hat dieser Befehl keinen autoloop, wie bei Playsound,
dh. bei vielen Musikstücken hört die Musik eben auf.

Natürlich könnte man mit GetMusicPosition und SetMusicPosition
auslesen, wo die Abspielroutine gerade ist und das Abspielen
wieder auf Track 0, den Start setzen.

Allerdings ist das ziemlich ungenau und auch diese Abfrage
im Gameloop kann man sich sparen.


Alles was man braucht ist ein Musiktracker, keine Angst, man muss keinen Amiga-Emulator
starten und sich nen alten ProTracker raussuchen ;)
in der Demoscene wird freudig weiterentwickelt und auch alte Tracker
wurden zu Linux und Windows portiert.

Die Funktionsweise ist kurz erklärt, im Musikeditor kann man nicht nur
die Samples und ihre Noten setzen sondern auch Steuerzeichen.
zb wurde sowas mal zur Syncronität von Intros oder Demos verwendet.
unter anderem auch Sprünge zu Positionen im aktuellem Pattern und/oder
im ganzen Musikstück.

Hier im Beispiel benutzen wir ein XM-modul, diese sind am meisten verbreitet
und auch verschiedene alte Modul-Typen wurden zu XM konvertiert.

xm kann man zb mit dem Milky-Tracker bearbeiten.

https://milkytracker.org/

und dieser sieht so aus:

Bild

Wir laden einfach unser Musikstück
links oben sehen wir "Length 18", also unser Musikstück
ist 18 Pattern lang.
Darüber kann man die Tracks aussuchen , wir scrollen bis zum letzten
Track und im Hauptfenster bis zur letzten Note.

Bild

wenn uns auffällt, das in dem letzten Pattern garkeine Noten
im Haupteditor-Fenster mehr angezeigt werden, dann
hat der Komponist einfach 1,2 Tracks leergelassen,
wir gehen zum letzten Pattern mit Noten
In unserem Fall die 13

Bild

hier sehen wir die letzte Note das Musikstücks, das c

nun Scrollen wir bis ganz runter im Haupteditor
und setzen unsere Sprungmarke in der letzten Zeile

der Befehl für Springen zum Pattern ist "B" in unserem Fall
"B00" springe zu position 0, der Start des Musikstücks.

Wir gehen also zur letzten Zeile, drücken Space für
den Editiermodus (ein Relikt aus alten Tagen, ging fast in jedem Editor mir Space)

Bild

und setzen an der Position für die Steuerzeichen unser "B00".
im Grunde reicht es in einer Spalte.
Und eben wieder Abspeichern.

Damit haben wir unser Musikstück geloopt, also wenn die Abspielroutiene
diese Position erreicht, springt sie sofort zum Start des Songs.

Jetzt brauchen wir nur noch ein PlayMusic(xxx) vor unserem
Gameloop und brauchen uns um die Hintergrundmusik nicht
weiter kümmern.


viel spass
amiga rulez...
Rebirth Software
Benubi
Beiträge: 186
Registriert: 22.10.2004 17:51
Wohnort: Berlin, Wedding

Re: PlayMusic() Trackermodule wiederholen

Beitrag von Benubi »

:allright:
Wie ich gerade festgestellt habe, lässt sich der MilkyTracker problemlos per sudo-apt-install auf dem Raspberry installieren (sowie AudaCity). :)

Mit dem letzten Steuerzeichen wird vermutlich zu Block #00 gesprungen. Ich glaube es reicht aber es nur 1x in eine Spalte zu schreiben. Man kann auch zu anderen Blöcken springen (Blocknummer in Hex angeben, wie angezeigt). Es gibt auch Steuerzeichen um einen Block mehrmals zu loopen, bevor zum nächsten gesprungen wird. Man kann so damit seine Spielchen treiben.

Die PB "Music" Library hat auch einen Befehl um zu einem Block zu springen während die Musik spielt. Man kann theoretisch hierduch mehrere Stücke/Themen in einem "Music" Module unterbringen, und diese im Spiel ansteuern. "Gefahr", "Kampf", "Ruhig", "Sehr ruhig", "Game over" etc. . Man kann auch mehrere Stücke haben, die geloopt werden, und mehrere die zum letzten Block springen um dort zu enden. Der Voteil ist dass man nur 1 Musik Stück lädt, und alle Themen die selben Instrumente benutzen, wodurch auch alles im Stil einheitlich klingen sollte.

Es lassen sich mit den Steuerzeichen eine Reihe von Effekten produzieren, wie z.B. Lautstärke (Echo/Ein&Ausblenden), Tempo Änderungen, Tonhöhe, Vibrato, Slide etc. mit einfachsten Mitteln. Aber ich habe das schon seit Ende der 90er / Anfang der 2000er fast alles verlernt, und wusste auch nur einen Bruchteil von dem was möglich ist, damals unter OctaMed. Neuere Tracker haben oft Unterstützung für moderne Soundkarten und Effekte, MIDI, VST Instrumente uVM...
Antworten