Ich habe nicht etwas wie den ODF Creator vom Wolfgang gemacht.
Wenn man meinen Code genauer anschaut, sieht man, das ich einen gemischten, sehr einfachen Ansatz verfolge - ich gleiche nur Groß/Kleinschreibung automatisch ab. Die Anzahl der Release, Attacks, usw. wird im ODF Generator fix eingetragen - ähnlich wie es wahrscheinlich in deinen Generator-Skripts passiert.
Die PHP Funktionen habe ich auf das hIngetrimmt, was für das ODF gebraucht wurde. Für ein anderes ODF wird man sie wahrscheinlich erweitern/anpassen müssen. Meiner Ansicht nach macht ein fixes Set von universal PHP Funktionen für alle ODFs diese nur unnötig kompliziert.
Für das Konzept ist es egal, ob man die Pipe-Definitionen innerhalb von Ranks oder Stops stehen hat. Das Drumherum (inkl. Rank/Stop-Header) wird händisch gemacht und an der erwünschten Stelle der PHP-Code zum Generieren der Definitionen eingefügt.
Für das Multi-Mode wäre mein Vorschlag die Nutzung von Parametern:
[Stop001]
<?php
if ($_SERVER["argv"][1] == "nopipes" || $_SERVER["argv"][1] == "demo") {
?>
NumberOfLogicalPipes=1
NumberOfAccessiblePipes=1
Pipe001=dummy.wav
<?php } else { ?>
NumberOfLogicalPipes=29
NumberOfAccessiblePipes=29
; Generator-Code für Pipe001 bis ---
<?php } ?>
[Stop002]
<?php
if ($_SERVER["argv"][1] == "nopipes" ) {
?>
NumberOfLogicalPipes=1
NumberOfAccessiblePipes=1
Pipe001=dummy.wav
<?php } else { ?>
NumberOfLogicalPipes=29
NumberOfAccessiblePipes=29
; Generator-Code für Pipe001 bis ---
<?php } ?>
Alles anzeigen
Dann kannst du mit
php organ.php nopipes > organtest.organ
php organ.php demo > organdemo.organ
php organ.php full > organfull.organ
die unterscheidlichen Varianten in einer Quelldatei haben.
Includes sind auch kein Problem. Speicher den Teil (auch inkl. PHP Code) in einer extra Datei ab.
<?php include("datei.inc"); ?>