| |
|
|
 H.Brill | Hallo, liebe Mitleser Ich habe eine binäre Datei (von einem elektronischen Akkordeon ROLAND FRX8), in der überwiegend Steuerbefehle für das Akkordeon drin stehen. Irgendwo, in dieser Datei (angeblich an Offset $39B) soll ein 20 Bytes langer gepackter 7 Bit ASCII- String stehen, der den Musiktitel einer solchen Registrierung enthält, den ich auslesen möchte. Leider finde ich nichts an besagter Position (Offset). Kann auch sein, daß der Offset nur für das kleinere Akkordeon gilt und dieser String auch an anderer Stelle steht.
Wie könnte man einen solchen ASCII - String lokalisieren ? Die besagte Datei habe ich in einen Bereich# geladen. Leider haben meine Versuche mit Char$(..), OemToAnsi$() keinen Erfolg gebracht.
Ich habe mal 2 Dateien unten angehängt. Vielleicht hat ja jemand eine Idee ?
Achja, so hat es mal jemand in einem Elektronikforum beschrieben :
Diese Dateien sind ein Bitstream, in dem die ASCII Zeichen für den Namen aber nur 7 Bits belegen.
Man muss halt an der passenden Stelle im Bitstream nach den 7-Bit ASCII Zeichen suchen.
Beispiel Datei "kneipe_2.UPG" von weiter oben ab Offset 0x39B:
0000039B 65 CE 8B 26 ¦ 84 54 08 10 ¦ 20 40 81 02 ¦ 04 08 10 20 000003AB 40 82 01 80 ¦ AD 52 BA 04 ¦ 08 10 20 40 ¦ 81 02 00 00
65 CE 8B 26 84 54 08
01100101 11001110 10001011 00100110 10000100 01010100 00001000
01 1001011 1001110 1000101 1001001 1010000 1000101 0100000
01001011 01001110 01000101 01001001 01010000 01000101 00100000
0x4B 0x4E 0x45 0x49 0x50 0x45 0x20 K N E I P E <SPACE>
|
 |
|
| Benutze XPROFAN X3 + FREEPROFAN Wir sind die XProfaner. Sie werden von uns assimiliert. Widerstand ist zwecklos! Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.
Was die Borg können, können wir schon lange. | 02.09.2025 ▲ |
|
|
|
|
 Georg Teles | Hi,
hast Du eine Datei, bei der der Titel bekannt ist ? dann könnte man zumindest über den Hex Editor diesen suchen.
Meta Daten sollten normalerweise am Dateianfang stehen, ich habe zu UPG Dateityp kein Datenblatt gefunden, dürfte ein Programmeigenes Format sein, da kann der Titel natürlich überall stehen.
H.Brill (02.09.2025)
Diese Dateien sind ein Bitstream, in dem die ASCII Zeichen für den Namen aber nur 7 Bits belegen.
H.Brill (02.09.2025)
Man muss halt an der passenden Stelle im Bitstream nach den 7-Bit ASCII Zeichen suchen.
Da war sicherlich 7 Byte gemint 1 Byte = 8 Bit = 1 Zeichen, Bit hat mich jetzt verwirrt, warum sollte man Zeichen nur in 7 Bit speichern, da fällt ja was weg ...
Grüße Georg |
|
|
| |
|
|
|
 H.Brill | Hallo, mittlerweile habe ich von dem Freund ein Kommandozeilen-Tool (DOS) geschickt bekommen. Also bräuchte ich das Rad ja nicht mehr neu zu erfinden, indem ich dieses Tool dann nutze bzw. aufrufe.
Die Dateien stammen aus einer .upa Datei von einem elektronischen Arkordeon (ROLAND FRX8) . Aus einer .upa Datei werden da 1400 Registrierungen (Einzeldateien .upg) gemacht. Die .upa Datei teilt sich folgendermaßen auf. Es gibt für das FRX8 100 Bänke mit je 14 Registrierungen. Die Registrierungen enthalten u. a. die Musiktitel. Hintergrund ist der, daß ich für jemanden ein kleines Programm machen will, das halt das Kommandozeilentool aufruft. Da die Zerteilung ohne Ausgabe auf der Kommandozeile erfolgt, möchte ich das mit einer Progressbar etwas verschönern. Der Feund soll dann diese Registrierungen selber schön in meinem Programm verwalten können. Die Musiktitel sollen da auch später (mit Option -l) dazu kommen.Da kann er bequem einzelne Stücke (Titel) zusammenstellen und wieder die .upg Dateien über USB zurückspielen oder auch wieder Freunden zur Verfügung stellen. Das Problem ist, daß man den per Kommandozeile übergebenen Ordner (in den das Tool die zerstückelten Dateien hineinschreibt) überwachen muß, um halt die Progressbar entsprechend zu steuern Es dauert schon ein paar Minuten, bis alle Dateien vom Tool geschrieben worden sind.
Ich wollte zuerst die .upa Datei selber zerstückeln, habe es aber nicht geschafft, da ich den Offset nicht genau weiß und ein XML-Vorspann vorhanden ist. Deshalb hatte ich unten angehängtes Konsolenprogramm (von jemandem in C geschrieben) benutzt.
Das mit dem 7Bit ASCII ist wahrscheinlich noch ein Relikt aus den DOS- Zeiten. Die Beschreibung findet man auch im Netz.
Ach ja, das Tool wird folgendermaßen aufgerufen : zum Extrahieren der 1400 upg-Dateien :
wobei ordner halt der Ordner ist, in den die ganzen .upg-Dateien geschrieben werden. zum Auflisten der Titel:
wobei man ja mit einer Umleitung z.b. >Test.txt hinten dran die Titel auch in eine Datei schreiben lassen kann. Auch bei der ersten Option mit -d schreibt das Tool eine .csv Datei. Insofern ist dieses Tool ja ganz interessant, um halt ein Windowprogramm drum herum zu schreiben.
Ist halt nur die Frage, wie lange MS noch die Ausführung solcher Kommandozeilen-Programme unterstützt.
Und was mein Fragesteller noch sagte: Sicherlich kann das Arkordeon das Zusammenstellen über Knöpfe auch. Aber es ist eine riesige Qual, mit den einzelnen Knöpfen zu hantieren. Deshalb wäre eine Verarbeitung (Extrahieren und neu zusammenstellen) über PC wesentlich einfacher. |
 |
|
| Benutze XPROFAN X3 + FREEPROFAN Wir sind die XProfaner. Sie werden von uns assimiliert. Widerstand ist zwecklos! Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.
Was die Borg können, können wir schon lange. | vor 19 Tagen ▲ |
|
|
|
|
 H.Brill | Hallo Georg, vielleicht noch eine Beschreibung der .upa Dateien aus dem Mikrocontroller - Forum :
Die richtigen Angaben zu den Datenstrukturen holt man sich am besten direkt aus den UPA Dateien und nicht aus der Skript Datei.
Der Aufbau einer UPA Datei ist relativ einfach:
EF BB BF : Magic 4 Bytes : Länge des XML Header (Big-Endian) XML Header : XML mit weiteren Angaben zu den Daten die einzelnen Sets : Anzahl und Größe entsprechend dem XML Header "UPLIST" : Bedeutung unklar, für die Sets wohl nicht relevant
Die einzelnen Sets fangen also ab Offset "7 + Länge des XML Header" an, die Anzahl und Größe ergibt sich aus dem XML Header.
Zum XML Header, der ist eigentlich selbsterklärend, es wird der Aufbau der Daten beschrieben, die relevanten Teile:
für den Fr: <SET size="26038" number="98" offset="0"> -> 98 Sets mit je 26038 Bytes für den Fr-8x: <SET size="25752" number="1400" offset="0"> -> 1400 Sets mit je 25752 Bytes
Der Unterschied in der Setgröße zwischen Fr und Fr-8x ergibt sich aus dem fehlenden "SC2" Eintrag beim Fr-8x.
Der Aufbau eines Sets wird ebenfalls im XML Header beschrieben, hier für den Fr:
<SC size="128" number="1" offset="0"/> <O_R size="86" number="26" offset="128"/> <OB_R size="66" number="7" offset="2364"/> <OBC_R size="72" number="8" offset="2826"/> <OFB_R size="72" number="8" offset="3402"/> <TR size="304" number="16" offset="3978"/> <BR size="84" number="16" offset="8842"/> <BCR size="96" number="16" offset="10186"/> <ORR size="64" number="26" offset="11722"/> <OBR size="42" number="7" offset="13386"/> <OBCR size="124" number="8" offset="13680"/> <OFBR size="118" number="8" offset="14672"/> <ORCH1 size="210" number="28" offset="15616"/> <ORCH2 size="152" number="28" offset="21496"/> <SC2 size="286" number="1" offset="25752"/>
Der Offset ergibt sich aus der Länge der davor liegenden Daten, der Aufbau des Sets ist aber wohl für das Zerlegen der UPA Dateien nicht relevant.
Inwieweit der fehlende "SC2" Eintrag beim Fr-8x wichtig ist und eventuell beim Zerlegen neu erzeugt werden muss ist unklar.
Und dann gibt es am Ende der UPA Dateien noch die "UPLIST", die steht auch im XML Header, hier wieder für den Fr:
<UPLIST size="131072" number="1" offset="2551724"/>
Der Offset ergibt sich aus den davor liegenden Sets.
In der Beispiel Datei "UPG_ALL.UPA" steht dort nichts, in der Datei "vom_8_UPG_ALL.UPA" für den Fr-8x steht dort etwas, die Bedeutung ist unklar.
Hilft evtl. noch etwas zum Verstehen der Dateien. Da habe ich auch schon mit BlockRead() und BlockWrite versucht, die .upg Dateien selber zu extrahieren. Bisher aber ohne Erfolg. Die erzeugten Dateien sahen am Anfang immer anders aus, als die von dem Konsolenprogramm erzeugten. |
|
|
| Benutze XPROFAN X3 + FREEPROFAN Wir sind die XProfaner. Sie werden von uns assimiliert. Widerstand ist zwecklos! Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.
Was die Borg können, können wir schon lange. | vor 17 Tagen ▲ |
|
|
|