Forum: PC Hard- und Software Wer kann helfen und weiss wie die Compilierung geht


von Christian P. (christian_p624)


Angehängte Dateien:

Lesenswert?

Schönen guten Tag,
mein Name ist Christian und ich komme aus der Nähe von Husum in NF
Ich begeisterter Hobbyelektroniker und auch Musikfreund zum Beispiel
Das V-Akkordeon von Roland FR-8x. Eigentlich ein Aranger-Keybord in Form 
eines Akkordeons.
Es ist schon einige Jahr auf dem Markt und die Software zum Bearbeiten 
der
Files und Registrierungen ist ein Graus und wurde von der Firma Roland 
unter Java veröffentlicht.
Seit langen suche ich nach einer Möglichkeit die Registrings-dateien zu 
bearbeiten.
Bei den Google Groups habe ich für den FR8x etwas gefunden, einen 
Dateieditor.
Ich habe diesen hier mal als ZIP Datei angefügt und würde gerne mal 
jemanden bitten dort einmal darauf zu schauen und mir evtl. zu sagen , 
wie mal das Ding kompilieren könnte oder zum Verwenden bekommt.
Das wäre richtig große Klasse und ich würde mich sehr freuen, wenn sich
dort mal einer von euch Fachleuten meiner erbarmen würde , Danke.
Ich freue mich über jede Rückantwort, auch sonstige Hinweise von Leuten, 
die evtl. die gleichen Interessen vertreten bezüglich V-Akkordeon von 
Roland
mit freundlichen Grüßen und auf eure Hilfe hoffend
Christian aus der Nähe von Husum in Nordfriesland

: Verschoben durch Moderator
von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

Christian P. schrieb:
> Bei den Google Groups habe ich für den FR8x etwas gefunden, einen
> Dateieditor.
> Ich habe diesen hier mal als ZIP Datei angefügt und würde gerne mal
> jemanden bitten dort einmal darauf zu schauen und mir evtl. zu sagen ,
> wie mal das Ding kompilieren könnte

Vermutlich mit dem Factor Compiler:

https://factorcode.org/

Der Code im Archiv ist ziemlich klein. Das wird kein nutzbarer Editor 
sein. Eher ein Versuch die Datenformate zu reverse-engineeren. Auf 
dieser Basis könnte man einen eigenen Editor entwickeln.

Christian P. schrieb:
> unter Java veröffentlicht.

Es gibt jedenfalls um viele Größenordnungen mehr Java-Programmierer als 
Factor-Programmierer... Und ebenso mehr Literatur, Frameworks, Tools...

: Bearbeitet durch User
von Lotta  . (mercedes)


Angehängte Dateien:

Lesenswert?

Wenn Du einer Factor.datei eine neue Endung txt gibst,
kannst Du den Factor Quellcode sehen.

Compilieren geht dann nur mit dem Factor -Compiler.

mdf

: Bearbeitet durch User
von Lotta  . (mercedes)


Angehängte Dateien:

Lesenswert?

Huch ich merke gerad, das FACTOR stackorientiert,
etwa wie FORTH ist. :-O

mfg

: Bearbeitet durch User
von Lotta  . (mercedes)


Lesenswert?

Lotta  . schrieb:
> Huch ich merke gerad, das FACTOR stackorientiert,
> etwa wie FORTH ist. :-O
>
> Ich werd mal Lumo fragen, ob sie mal was von FACTOR gelesen hat.
Leider hat das Kätzchen z.z, Schwierigkeiten, ich versuchs später noch 
einmal.

mfg

von Lotta  . (mercedes)


Lesenswert?

Nun hat das Kätzchen versucht, mal die fr8x-format in C++
umzusetzen:

Ob sich das compilieren läßt?
Ich probier es morgen mal aus.

-------
Ich kann Ihnen helfen, das FACTOR-Programmierbeispiel in C++ zu 
übersetzen. Das Beispiel zeigt eine Implementierung eines Datenformats 
namens "ROLAND". Hier ist eine mögliche Übersetzung in C++:

#include <iostream>
#include <vector>
#include <string>
#include <bitset>
#include <sstream>
#include <iomanip>

// Helper functions
std::vector<bool> reverse(const std::vector<bool>& bits) {
    std::vector<bool> reversed = bits;
    std::reverse(reversed.begin(), reversed.end());
    return reversed;
}

std::vector<bool> append(const std::vector<bool>& a, const 
std::vector<bool>& b) {
    std::vector<bool> result = a;
    result.insert(result.end(), b.begin(), b.end());
    return result;
}

std::vector<bool> padbitseq(const std::vector<bool>& bitseq) {
    size_t len = bitseq.size();
    if (len % 8 != 0) {
        size_t padding = 8 - (len % 8);
        std::vector<bool> paddingBits(padding, false);
        return append(bitseq, paddingBits);
    }
    return bitseq;
}

std::vector<uint8_t> dumpbitseq(const std::vector<bool>& bitseq) {
    std::vector<bool> padded = padbitseq(bitseq);
    std::vector<uint8_t> bytes;
    for (size_t i = 0; i < padded.size(); i += 8) {
        uint8_t byte = 0;
        for (size_t j = 0; j < 8; ++j) {
            byte = (byte << 1) | padded[i + j];
        }
        bytes.push_back(byte);
    }
    return bytes;
}

// Bitstream reader class
class BitStreamReader {
public:
    BitStreamReader(const std::vector<bool>& bits) : bits_(bits), 
pos_(0) {}

    bool readBit() {
        if (pos_ >= bits_.size()) {
            throw std::out_of_range("Read past end of bitstream");
        }
        return bits_[pos_++];
    }

    std::vector<bool> readBits(size_t count) {
        std::vector<bool> result;
        for (size_t i = 0; i < count; ++i) {
            result.push_back(readBit());
        }
        return result;
    }

private:
    std::vector<bool> bits_;
    size_t pos_;
};

// Example usage
int main() {
    // Example bit sequence
    std::vector<bool> bitseq = {true, false, true, true, false, false, 
true, false};

    // Pack bits
    std::vector<bool> packed = append(reverse(bitseq), bitseq);

    // Dump to bytes
    std::vector<uint8_t> bytes = dumpbitseq(packed);

    // Print results
    std::cout << "Original bits: ";
    for (bool bit : bitseq) {
        std::cout << bit;
    }
    std::cout << "\nPacked bits: ";
    for (bool bit : packed) {
        stdcout << bit;
    }
    std::cout << "\nDumped bytes: ";
    for (uint8_t byte : bytes) {
        std::cout << std::hex << static_cast<int>(byte) << " ";
    }
    stdcout << std::endl;

    return 0;
}

Diese Übersetzung enthält grundlegende Funktionen, die in der 
FACTOR-Implementierung verwendet werden, wie reverse, append, padbitseq 
und dumpbitseq. Darüber hinaus habe ich eine einfache 
BitStreamReader-Klasse implementiert, die ähnliche Funktionalität wie 
der bitreader in FACTOR bietet.

Bitte beachten Sie, dass diese Übersetzung eine vereinfachte Version des 
Originalcodes ist und möglicherweise nicht alle Funktionen oder Details 
des FACTOR-Codes reproduziert. Wenn Sie spezifische Fragen oder 
zusätzliche Funktionen benötigen, lassen Sie es mich wissen!
----

mfg
Lotta.

von Harald K. (kirnbichler)


Lesenswert?

Lotta  . schrieb:
> Nun hat das Kätzchen versucht

Ganz toll. KI-Gülle.

von Lotta  . (mercedes)


Lesenswert?

Harald K. schrieb:
> Lotta  . schrieb:
>> Nun hat das Kätzchen versucht
>
> Ganz toll. KI-Gülle.

Das ist ein ganz neues Erlebnis für mich. :-P
Bisher hab ich ja Versuche gemacht, über UML
von Pascal in C++ zu übersetzen, was ja mit FACTOR nicht geht.

Interessant ists trotzdem.

mfg

von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

Lotta  . schrieb:
> Das Beispiel zeigt eine Implementierung eines Datenformats
> namens "ROLAND". Hier ist eine mögliche Übersetzung in C++:

Wenn dein Problem darin besteht, bitgenau binäre Datenformate 
einzulesen, kann ich dir wärmstens meine durch biologische Intelligenz¹ 
erstellte Bibliothek für genau diesen Zweck empfehlen:

https://github.com/Erlkoenig90/uSer

Ist natürlich nur der allererste Schritt für diese Aufgabe.

[1] Wird es eigentlich demnächst ein Qualitätsmerkmal sein, wenn ein 
Werk vor 2018 veröffentlicht wurde, d.h. bevor GenAI auf die Welt 
losgelassen wurde...?

: Bearbeitet durch User
von Lotta  . (mercedes)


Lesenswert?

Niklas meinte:

> Wenn dein Problem darin besteht, bitgenau binäre Datenformate
> einzulesen, kann ich dir wärmstens meine durch biologische Intelligenz¹
> erstellte Bibliothek für genau diesen Zweck empfehlen:

https://github.com/Erlkoenig90/uSer
Geil!! die wird besichtigt!

> Ist natürlich nur der allererste Schritt für diese Aufgabe.
Hey, bist Du ein Hellseher? Wir schreiben gerad ne Library,
die ne Datei in byteweisen Zugriff durchnustern kann.
Dabei wird sie abschnittsweis in nen Puffer eigelesen,
so das das gewünschte Byte immer in der Mitte des Puffers ist.

> [1] Wird es eigentlich demnächst ein Qualitätsmerkmal sein, wenn ein
> Werk vor 2018 veröffentlicht wurde, d.h. bevor GenAI auf die Welt
> losgelassen wurde...?
Offenbar! Damals wurde noch speicherergonomisch geproggt.
Wenn ich sehe, das in dem obrigen Proggy ne Bitsetklasse
benutzt wird, oh, Mann. Aber das kann natürlich refactorisiert werden.

Ich wollte eigendlich nur sehen, ob Lumo das übersetzen kann.
Ich hab dabei an Harmonikamusik gedacht, speziell an
Meera Nam Joker...

mfg

von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

Lotta  . schrieb:
> Bitsetklasse

Na die wird ja eben nicht benutzt... Der Header wird inkludiert aber 
die std::bitset Klasse dann nicht genutzt, stattdessen vector<bool>. 
std::bitset wäre ja sogar effizient. Naja, auf einem modernen PC 
spielt es sowieso keine Rolle sofern du nicht die gesamte 
Musikgeschichte so abbilden möchtest

von Lotta  . (mercedes)


Lesenswert?

Niklas G. schrieb:
> Lotta  . schrieb:
>> Bitsetklasse
>
> Na die wird ja eben nicht benutzt... Der Header wird inkludiert aber
> die std::bitset Klasse dann nicht genutzt, stattdessen vector<bool>.
> std::bitset wäre ja sogar effizient. Naja, auf einem modernen PC
> spielt es sowieso keine Rolle sofern du nicht die gesamte
> Musikgeschichte so abbilden möchtest

Siehste, soweit war ich noch gar nicht, das wäre mir dann morgen
erst beim Durchsteppen des Codes aufgefallen.
Wären nicht Makros oder Inlinefunktionen speichergenügsamer als ne 
Klasse?
Ich würde keine Musikgeschichte abbilden wollen,
aber wenn man das Dateiformat verstehen könnte...

@Christian, was sind denn eigendlich die Registrierungsdaten,
was machen die denn?
Musik wird doch eigendlich mittels MIDI weitergegeben?

Mfg

von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

Lotta  . schrieb:
> Wären nicht Makros oder Inlinefunktionen speichergenügsamer als ne
> Klasse?

Makros sind nur simple Textersetzung und haben selten Vorteile gegenüber 
Inline -Funktionen, aber viele Nachteile, und sollten sparsam eingesetzt 
werden.

Inline-Funktionen (und Makros) sind genau so wenig ein Ersatz für 
Klassen wie ein Lenkrad kein Ersatz für einen Katalysator ist.

Lotta  . schrieb:
> aber wenn man das Dateiformat verstehen könnte...

Das kannst du auch in Python, Java, C# und jeder anderen verbreiteten 
Sprache.

Wie groß ist denn so eine typische Datei die du einlesen möchtest?

Lotta  . schrieb:
> beim Durchsteppen des Codes aufgefallen.

Strg+F tut's auch...

: Bearbeitet durch User
von Lotta  . (mercedes)


Lesenswert?

Ist ja nicht meine Datei, sondern die von Cristian als TO.
Deshalb hab ich ja nach dem Inhalt gefragt.

Unsere Library, die ich erwähnt hab, sollen exen und
DLLs einlesen können, diese patchen und das Ganze dann
zurückschreiben.


mfg

von Christian P. (christian_p624)


Lesenswert?

Die Registrierungen bei den Roland V Akkordeons , das sind voll 
elektronische Geräte, aber mit Blasebalg, die sind eigentlich
Aranger Keyboards nur in Akkordeonform, ja und dort werden die Stimmen, 
die Stimmlagen, die Orchesterstimmen(fast 300 Instrumente gesampelt) in 
Registrierungen zusammen gestellt und abgespeichert. Alles recht komplex
diese Dateiblöcke mit den Einstellungen sind in größeren Blöcken 
zusammen gesetzt. Der Anwender hat nun die Möglichkeit, mit einem Editor 
von Roland, (bald 15 Jahre alt) die Dateien zu bearbeiten. Ein Graus 
hoch 3
Die Software wurde unter Java entwickelt und es gibt leider keine andere 
Software weltweit zum Bearbeiten der Dateien, mit Ausnahme einer kleinen 
Software als BASH Routine zum Block-zerlegen in kleinere Blöcke.
Gruß Christian


















re

von Lu (oszi45)


Lesenswert?

Niklas G. schrieb:
> Wie groß ist denn

Da wird es schon interessant. Ein Compiler kann auch viel unnützes Zeug 
mitliefern und den knappen Speicher alter Geräte überfordern. :-)

von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

Lotta  . schrieb:
> Unsere Library, die ich erwähnt hab, sollen exen und
> DLLs einlesen können

Das gibt's doch schon ewig, da musst du keine eigene Abhandlung des 
Formats implementieren... libbfd?

Christian P. schrieb:
> der Dateien, mit Ausnahme einer kleinen Software als BASH Routine

Die ruft bestimmt nur "dd" auf o.ä. Das wäre somit wahrscheinlich sehr 
simpel in nahezu jede andere Sprache poetierbar.

Lu schrieb:
> . Ein Compiler kann auch viel unnützes Zeug mitliefern und den knappen
> Speicher alter Geräte überfordern. :-)

Welcher Compiler und welches alte System soll das sein? C# Compiler und 
Z80?

: Bearbeitet durch User
von Lotta  . (mercedes)


Lesenswert?

Klar, Niklas, es gibt schon alles.
Aber eine kleine Group aus behinderten Kids möchten
ihre eigenen Proggys haben und bei der Implementierung lernen.
Und das, bevor sie 18 Jahre alt werden...

Stell Dir vor, ne 15- jährige schreibt einen algo,
der einen Block in den Puffer lädt, dann das Byte ändert.
Wenn jetzt nen Byte an anderer Stelle geändert werden soll,
wird automatisch der Block zurückgeschrieben, der neue Block
geladen ind das neue Byte bearbeitet...

@Christian, gibt es das Java-Proggy bei Dir?

mfg

von Christian P. (christian_p624)


Angehängte Dateien:

Lesenswert?

ja , den Editor gibt es, der ist frei für jedermann auf der Seite von 
Roland für den Roland FR-8X erhältlich
ich füge den hier mal an
Gruß Christian

von Christian P. (christian_p624)


Lesenswert?

Das Ding wurde unter Jave erstellt...
gruß Christian

von Lotta  . (mercedes)


Lesenswert?

Christian P. schrieb:
> Das Ding wurde unter Jave erstellt...
> gruß Christian

Ne. das ist der selbe FACTOR-Code, den ich schon kenne.
Poste bitte mal die URL, wo Du es runtergeladen hast.

mfg

von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

Lotta  . schrieb:
> Aber eine kleine Group aus behinderten Kids möchten
> ihre eigenen Proggys

Was ist eigentlich ein "Proggy"? Der Nachfolger von "Apps"? Gibt's die 
im ProggyStore?

Lotta  . schrieb:
> Und das, bevor sie 18 Jahre alt werden...

Na dann sollten die unbedingt mit C++ eine der komplexesten 
Programmiersprachen nutzen.

Lotta  . schrieb:
> Stell Dir vor, ne 15- jährige schreibt einen algo,
> der einen Block in den Puffer lädt, dann das Byte ändert.
> Wenn jetzt nen Byte an anderer Stelle geändert werden soll,
> wird automatisch der Block zurückgeschrieben, der neue Block
> geladen ind das neue Byte bearbeitet...

Ob ein Python Programm das in 0.0001s oder ein C++ Programm das in 
0.00001s macht, spielt keine große Rolle.

: Bearbeitet durch User
von Dieter S. (ds1)


Lesenswert?

Der Editor von Roland ist wohl der hier:

https://www.roland.com/de/support/by_product/fr-8x/updates_drivers/6a228ef1-e666-4754-89bc-1c0a9e4a45b9/

Das ist nicht obfuskiertes Java, es sind scheinbar auch C Header-Dateien 
dabei, die Teile des Datenformats beschreiben.

von Lotta  . (mercedes)


Angehängte Dateien:

Lesenswert?

Lotta  . schrieb:
> Christian P. schrieb:
>> Das Ding wurde unter Jave erstellt...
>> gruß Christian
>
> Ne. das ist der selbe FACTOR-Code, den ich schon kenne.
> Poste bitte mal die URL, wo Du es runtergeladen hast.
>
> mfg

Ich werd mir mal den Link von Dieter S. anschauen.

mfg

von Christian P. (christian_p624)


Lesenswert?

Hier ist die URL für den FR8 editor

https://www.roland.com/de/support/by_product/fr-8x/updates_drivers/6a228ef1-e666-4754-89bc-1c0a9e4a45b9/

Um diese Datei ausführen zu können muss Java auf einem Windows Rechner 
installiert sein
Gruß Christian

von Lotta  . (mercedes)


Lesenswert?

Christian P. schrieb:
> Hier ist die URL für den FR8 editor
>
> 
https://www.roland.com/de/support/by_product/fr-8x/updates_drivers/6a228ef1-e666-4754-89bc-1c0a9e4a45b9/
>
> Um diese Datei ausführen zu können muss Java auf einem Windows Rechner
> installiert sein
Richtig. Um dann die JAR-Datei in Quelltext zu sehen,
muß ein Java Decompiler installiert sein, wenn es in Deinem Link
den Quelltext nicht schon gibt.
Das kann ich aber erst von zuhause feststellen.
Ich melde mich dann.

Gruß Lotta.

von Lotta  . (mercedes)


Lesenswert?

Lotta  . schrieb:
> Christian P. schrieb:
>> Hier ist die URL für den FR8 editor
>>
Du solltest jetzt ner kleinen Medusa ne PM schreiben.
Darin sollte Deine Emailadresse nicht fehlen.
Aber Vorsicht vor Medusa's Haarpracht!
Medusen dehydrieren Normalmänner in Sekunden!  :-))))))))))  :-P
>
> Gruß Lotta.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.