Sourcecode von GrandOrgue, Strukturierung und Programmierung

    • Offizieller Beitrag

    Hier soll es primär um den Sourcecode von GrandOrgue gehen. Darum, wie man ihn in der jetzigen Form verstehen kann. Wie man versuchen kann, die bereits programmierte Logik nachzuvollziehen und zu verbessern. Den Code ggf. mit Kommentaren ergänzen kann und evtl. eine verbesserte Struktur erzielen kann.
    Sinn soll es sein, weiteren Interessenten mit Programmierkenntnissen den Zugang zum Code zu erleichtern und auf lang Sicht die Weiterentwicklung von GrandOrgue dadurch zu sichern.

    Die ersten 11 Kommentare wurden dazu aus einem anderen Thema hier her kopiert:

    Jetzt habe ich mal etwas auf der neuen GitHub Seite herumgelesen und auch die neueste GO-Version ausprobiert. Inzwischen muss ich sagen, bin ich ein wenig verhalten euphorisch. Ich habe die Sorge, dass über kurz oder lang in GO nichts mehr so richtig funktionieren könnte. An der Skalierung der Bildschirmausgabe wurde rumgefummelt und ASIO wurde reaktiviert. Beides funktioniert für mich nicht zufriedenstellend und gleichzeitig sind an mind. einem Dutzend anderen Stellen Fehler hinzu gekommen. Da bekomme ich Angst, wie es wird, wenn noch größere zusätzliche Funktionen integriert werden sollen. Möglicherweise ist der Sourcecode mittlerweile so verworren und schlecht kommentiert, dass jede Änderung zum Glücksspiel wird. Die Kommunikation auf Englisch scheint teilweise auch nicht ganz trivial zu sein, bei einer so internationalen Entwicklergemeinschaft.


    Aber gönnen wir den neuen Akteuren erst mal Zeit, sich in alle Details reinzudenken und hoffen auf Durchhaltevermögen und gutes Gelingen. Schon schade, dass Martin - aus welchen Gründen auch immer - nicht mehr aktiv mitwirkt.

  • Da bekomme ich Angst, wie es wird, wenn noch größere zusätzliche Funktionen integriert werden sollen.

    Sofern es kein Hobbyprojekt wird, dann wird es sicher auf einen Stable und Testing Zweig hinauslaufen. Also eine Version die immer stabil und getestet ist und für mutige eine Testversion die neue Dinge beinhaltet die nicht immer rund laufen müssen.

    Möglicherweise ist der Sourcecode mittlerweile so verworren und schlecht kommentiert, dass jede Änderung zum Glücksspiel wird.

    Nicht nur möglicherweise sondern definitiv. Ich habe selbst schon einmal einen Fehler gesucht un habe es nach einigen Stunden aufgegeben. Die Stellen die überhaupt kommentiert sind, da sind die Kommentare eher nicht hilfreich und dann hat man Stellenweise wirklich mehrere hundert Zeilen Code ohne einen einzigen Kommentar. Wenn du also nicht genau weißt was der Code macht und welche Variablennamen und Funktionen was genau tun, dann hast du entweder verloren oder bist ein Genie...

    pasted-from-clipboard.png

    Melodeum.de - Wissenswertes zu Harmonium

  • Da hast Du eine "nette" Stelle gefunden :D viele "magic numbers" - eine Unart vieler Software-Entwickler.

    Ich habe über die Jahre immer mal wieder in den Source geschaut und habe leider keine gute Meinung vom Projekt. Das kann fatal sein, wenn der Hauptentwickler sich aus dem Projekt zurückzieht. Oleg wird vielleicht 2-3 Jahre brauchen, um dann Neuerungen so einbauen zu können, dass bestehende Funktionalitäten nicht kaputt gemacht wird. Wenn er dann irgendwann keine Lust mehr hat, dann fängt das Spielchen von vorne an.

    Da kann man berechtigt die Frage stellen was sinnvoller ist. Den vorhandenen Code aufräumen und sauber dokumentieren, oder neu anfangen mit dem Projekt auf komplett neuer sauberer Codebasis. Tendenziell wäre der komplette Neuanfang wohl die bessere Wahl. Aber als Hobbyprojekt wohl unmöglich machbar. Ich bin mir nicht einmal sicher ob es überhaupt für jeden Bereich jemanden gibt der mit den Funktionen und Code zurecht kommt.

    Melodeum.de - Wissenswertes zu Harmonium

    • Offizieller Beitrag

    Mhh - sowas dachte ich mir. Ist schon lange her, dass ich mal einen Blick in den Code geworfen habe. C-Programmierung war mal ein Bestandteil meines Studiums, aber das ist nun auch schon lange her und mein beruflicher Werdegang ging in eine andere Richtung. Vor etlichen Jahren hatte ich mal angeboten, dass ich mich in die Programmierung von GO mit einbringen könnte. Für mein Angebot bestand aber angeblich eher weniger Bedarf. So befasste ich mich mehr mit der Erstellung von GO ODF und Umsetzung größerer HW-Sets, um die Verbreitung von GO sinnvoll zu unterstützen.

    Spontan hätte ich jetzt die Vision, ob es nicht denkbar wäre, dass sich hier im Forum eine handvoll Leute zusammenschließen und wir uns in den Sourcecode gemeinsam reindenken, Kommentare ergänzen, neu strukturieren usw. und die Ergebnisse dann auf GitHub mit einbringen. Mir sind hier auf unserer Seite schon mehrere Mitglieder über den Weg gelaufen, die sich Programmierer nennen. Vielleicht wäre das hier in einem Diskussionsfaden auf kleinem Dienstweg und in Muttersprache einfacher zu bewerkstelligen. Was denkt ihr?

  • Ich stimme da @vpo-organist zu. So ein Vorhaben ist nicht so leicht wie es sich theoretisch durchdenken lässt. Ich denke selbst ein 50 Mann/Frau starkes Team aus Profis würden bei einer 40 Stunden Woche viele Monate brauchen um eine Struktur zu erarbeiten und zu Anfang auch den Code zu verstehen. Erst wenn man den Code versteht was er überhaupt an welcher Stelle tut, dann kann man über die Struktur nachdenken. Und auch wenn der Code jetzt nicht gut ist, er funktioniert ja zumindest.

    Ein normaler Programmierer wie ich zum Beispiel könnte wohl auch wenig beitragen. Auch wenn ich meine Ausbildung mit 1,0 bestanden habe und mich selbst als Fähig bezeichnen würde (ich bin natürlich voreingenommen 8o), ich habe keine Ahnung von dem Thema Audio verarbeitung/manipulation/modulation und so weiter. Auch wenn ich den Code vom Syntax verstehe, ich verstehe dann noch immer nicht die Funktionsweise der Sache die dort passiert.

    Gibt es eigentlich noch eine Fassung des originalen Code von Hauptwerk? Ich könnte mir durchaus vorstellen das dort schon der Hund begraben liegt. Da Hauptwerk ja Opensource war, man aber vermutlich schon länger plante diesen Pfad zu verlassen, da kann es durchaus sein das der Code vorher schon verkompliziert wurde. Ganz einfach aus dem Grund sich selbst einen Vorteil zu verschaffen. Da könnte es sich lohnen die alten Hauptwerk Basis in den letzten Monaten mal zu vergleichen ob dort verständliche Dinge für den öffentlichen Zweig verändert wurden oder Kommentare verschwunden sind.

    Melodeum.de - Wissenswertes zu Harmonium

    • Offizieller Beitrag

    Da schaut man nach ein paar Jahren in den Code, schüttelt den Kopf und die Programmierer sagen achselzuckend dazu: "ist halt historisch gewachsen"

    Kommt mir gut bekannt vor. Ich habe mal ein paar Jahre als Applikationsingenieur gearbeitet und u. a. Programme für Steuerungen im Sondermaschinenbau geschrieben. Da war fast alles Bisherige "historisch gewachsen" und damit wollten sich die Programmierer wohl unentbehrlich in der Firma machen. Nachdem ich überall Struktur, Modularität und dokumentierte Funktionsbibliotheken eingeführt hatte, konnten neue Applikationen in einem Bruchteil der bisherigen Zeit programmiert werden und dem Chef war dann doch plötzlich der eine oder andere Programmierer "entbehrlich".

    Dein Urteil klingt schon fast vernichtend. Ich werde die nächste Zeit auch mal wieder den Sourcecode sichten, obgleich ich auch nicht unendlich viel Zeit da reinstecken kann. Bin jetzt aber nicht mehr so viel unterwegs wie die letzten zwei drei Jahre.
    Es wäre schade, wenn GrandOrgue wirklich zu ende gehen sollte. Ich kann mir nur schwer vorstellen, so eine komplexe Software nochmal komplett von vorne auf Basis einer freien Lizenz zu entwickeln. Wer würde sich das aufhalsen, nachdem es ja GO schon gibt und es durchaus brauchbar ist? Und ob es für eine kommerzielle Entwicklung jetzt wirklich noch eine Markt gibt, halte ich auch für fraglich. Da müsste einer wirklich alles richtig machen und das ist bisher noch keinem gelungen.

    • Offizieller Beitrag

    Gibt es eigentlich noch eine Fassung des originalen Code von Hauptwerk? Ich könnte mir durchaus vorstellen das dort schon der Hund begraben liegt. Da Hauptwerk ja Opensource war,

    Hauptwerk war nie Opensource. Beim Übergang von HW1 auf HW 2 oder 3 hatte Brett Milan wohl mal einen schwachen Moment und hat HW1 oder zumindest Teile davon freigegeben. Ich glaube, das hat er später bitterlich bereut. :D

    Der erste open source Nachfolger hieß dann MyOrgan. Da könnte man vielleicht mal nachsehen. Daraus hat sich später GrandOrgue entwickelt.

  • Hauptwerk war nie Opensource. Beim Übergang von HW1 auf HW 2 oder 3 hatte Brett Milan wohl mal einen schwachen Moment und hat HW1 oder zumindest Teile davon freigegeben. Ich glaube, das hat er später bitterlich bereu

    Ich kann mir durchaus vorstellen das er genau wusste was er tat. Mit der Roadmap der neuen Versionen und dem Wissen dass es eine winzige Nische ist, da ist es clever möglichst vielen eine alte Fassung zugänglich zu machen. Wenn sie mehr wollen, dann bietet er gleich eine neuere Fassung an die sehr viel besser ist. Den Parameter das GO dann zeitweise auf einer ähnlichen Liga spielen wird, hat er vermutlich nicht bedenken können. Diese Auffassung kann ja jeder selber bei sich überprüfen, war die erste Software für eine Orgel ein 400 Euro Hauptwerk oder etwas kostenloses und wurde später wegen anderer Ansprüche erst ersetzt?

    Melodeum.de - Wissenswertes zu Harmonium

    • Offizieller Beitrag

    Ich bleibe aber auf GitHub mal am Ball, um zu demonstrieren, dass wir sehr an der Weiterentwicklung von GrandOrgue interessiert sind. Den Source Code habe ich mir inzwischen auch mal angesehen und denke, dass es sooo schlimm vielleicht gar nicht aussieht. Bin auch dabei, mich wieder etwas in die C-Programmierung einzuarbeiten. Vielleicht versuche ich mal selbst, Änderungen in GrandOrgue einzubauen.

    Meine Idee wäre, hier im Forum mal ein neues Thema aufzumachen, bei dem es speziell um den Sourcecode von GrandOrgue, Strukturierung und Programmierung geht. Vielleicht hat ja der eine oder andere dann doch mal Lust oder Zeit sich ab und zu mit Beiträgen einzubringen.

    Das ist hiermit nun geschehen.
    Ende der aus einem anderen Thema nach hier kopierten 11 Beiträge.

    Es kann weiter gehen.
    :)

    • Offizieller Beitrag

    Der 12. Beitrag soll dazu dienen, die grundsätzlichen Eigenschaften der Programmierung von GrandOrgue und des Sourcecode Paketes zu beschreiben. Hier will ich alles zusammentragen, was als Ausgangspunkt für einen zukünftigen Programmier-Interessenten wichtig und nützlich sein kann. Das heißt, dieser Beitrag wird fortlaufend erweitert werden.

    1. Quellen für den offiziellen Sourcecode:

    • Sourceforge (alt) - Link folgt
    • GitHub (aktuell) - Link folgt

    2. Programmiersprachen:

    • C
    • C++

    3. Weitere verwendete Libraries / Pakete:

    • wxWidgets - Tool zur Entwicklung grafischer Benutzeroberflächen (GUI)

    4. Sourcecode Paket und dessen Inhalt:

    • folgt


    usw.

    • Offizieller Beitrag

    Oh - jetzt habe ich mal ein paar Tage hier nicht hier reingeschaut und Du hast Erstaunliches entdeckt. Das gibt einem natürlich schwer zu denken. Es scheint da wohl durchaus um gewisse Machtspielchen zu gehen. Das ist natürlich sehr unschön. Ob das vielleicht auch etwas mit Martins plötzlicher Inaktivität als bisheriger Hauptentwickler zu tun haben könnte? Vielleicht wäre es dann doch besser gewesen, GrandOrgue als Fork weiterzuentwickeln.

    Es könnte doch sein, dass es noch ältere Sourcen gibt, bei denen die Kommentare noch nicht systematisch weggelöscht wurden. Damit könnte man vielleicht wenigstens einen Teil der Kommentare wiederherstellen. Das müsste ja gerade den Kern (Core?) von GrandOrgue betreffen, wo es um die ganze Klangverarbeitung geht. Außerdem müsste ja irgendwo ein Punkt sein, wo der Code von Hauptwerk 1 übernommen wurde. Wahrscheinlich ja bereits damals in MyOrgan. Vielleicht lässt sich darüber auch noch etwas ausfindig machen.

    Und dann die Frage, wer evtl. den letzten Code mit noch vollständig enthaltenen Kommentaren unter Verschluss hält? Wahrscheinlich Lars? Die Frage stellt sich mir dann, inwieweit so eine Vorgehensweise nicht gegen die Lizenz von GO verstößt. Meiner Meinung nach muss der Sourcecode nicht nur grundsätzlich zugänglich sein, sondern vollständig! Die Kommentare sind ebenso Allgemeingut und gehören m. E. zum Sourcecode.

  • Ich verstehe die Argumentation mit den Kommentaren nicht. Diese würden wie schon festgestellt jedem helfen sich einzuarbeiten und wenn einer der "Profis" die meinen auf einer höheren Ebene zu sein die Kommentare stören, dann können diese doch mit einem simplen regulären Ausdruck für die eigene Kopie entfernt werden...

    Melodeum.de - Wissenswertes zu Harmonium

    • Offizieller Beitrag

    Wenn ich wenigstens unter Windows debuggen könnte, oder die Code-Navigation in VisualStudio funktionieren würde, dann wäre alles halb so schlimm.

    Aber so ist es gerade, als hätte man viele Textdateien, deren Abhängigkeiten sich einem nicht ohne Weiteres erschließen. Naja so ist es halt. LarsPalo will damit offenswichtlich verhindern, dass zu viele Leute am Projekt mitarbeiten. Wenn ich mich immer wieder beschwere, dann nimmt es bitte mit Geduld zur Kenntnis. Es ärgert mich halt jedes mal.

    Martin hat das alles mit Suse-Linux gemacht. Ist es denn schwer, so ein Projekt in eine andere Entwicklungsumgebung zu übertragen? Und welche könnte das dann sein? VisualStudio wird es ja als MS Produkt nicht gerade für Linux geben. Ideal wäre eine einfache, intuitive open source Umgebung, die es im Idealfall für Windows und Linux gleichermaßen gibt.

    https://blog.desdelinux.net/de/4-de-los-me…ins%20erweitern.

    • Offizieller Beitrag

    Ein sehr interessanter Beitrag von Lars Palo über die Entwicklung von GrandOrgue und seinen Werdegang als Profimusiker und autodidaktischer Programmierkünstler.

    Eine Beteiligung von weiteren Programmierern an diesem "verrückten" Projekt scheint nicht angestrebt.

    https://github.com/GrandOrgue/grandorgue/discussions/938

  • C# mit .NET ist im Vergleich genial.

    Ja, eine nette Sprache und mit Mono sind die Programme quasi auch Plattform unabhängig. Im Grunde wenn jemand fähig ist und die Zeit dazu hat, dann könnte man den Kern von GO der die Tonberechnungen ausführt ja portieren und den Rest am besten neuschreiben was nicht im Kern wichtig und komplex ist. Es gibt so viele Dinge die man eigentlich nicht brauchen würde,

    Melodeum.de - Wissenswertes zu Harmonium

    • Offizieller Beitrag

    Naja, das Einzige was mich programmiertechnisch reizen würde wäre, an einem Orgelsampler herumzubauen. Ansonsten hatte ich der Programmiererei eigentlich schon lange lebwohl gesagt. Einen neuen Sampler von Null aufzubauen wäre Wahnsinn. An GrandOrgue mitzubauen offenbar aussichtslos. Insofern ist halt GO eine bereits funktionierende Basis, die man sich greifen und als "Schwellwerk" wachküssen könnte. ;)

  • Insofern ist halt GO eine bereits funktionierende Basis, die man sich greifen und als "Schwellwerk" wachküssen könnte.

    Oder man macht eine Orgel Gui für Linux Sampler und baut aus vorhandenen Ressourcen ein anständige Orgel GIG. Linux Sampler hat die Leistungsfähigkeit für so was.

    http://download.linuxsampler.org/doc/gigedit/qu….html#tech_bank

    Melodeum.de - Wissenswertes zu Harmonium