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
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
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
Huch ich merke gerad, das FACTOR stackorientiert, etwa wie FORTH ist. :-O mfg
:
Bearbeitet durch User
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
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.
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
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
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
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
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
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
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
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
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. :-)
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
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
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
Das Ding wurde unter Jave erstellt... gruß Christian
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
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
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.
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
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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.