Moin, vielleicht interessiert sich jemand dafür. Ich habe Erfahrung in der Programmierung und kenne mich gut mit XML aus. Aber ich habe eine Abneigung gegen Skriptsprachen. Statt die Skripte in Python zu schreiben, bearbeite ich lieber die capx-Datei mit C# und .Net. Ich habe jetzt einen Weg gefunden, wie man Skripte in C# erstellen kann, die dann von einem simplen Skript, also einem Capella-Plugin, aufgerufen werden. Falls es jemand interessiert, bitte melden.
Moin, HenningF, herzlich willkommen im Forum. Leider sind Deine Angaben (C#, .Net) für mich böhmische Dörfer. Was lässt sich damit anstellen, was nicht auch mit Skripten möglich ist, bzw. was ist der Vorteil? Danke für die Erhellung eines Dummies. Viele Grüße, asterdos
BS: Windows 11 Pro-64bit; GK: Intel(R) UHD Grafics 730 PC (2023-07-21): 12th Gen Intel(R) Core(TM) i5-12400 2,50 GHz; RAM 16,0 GB Programme: jeweils neueste Versionen von capella 10, capellaScan, capellaReader, sowie capriccio und tonica fugata 15; capella-Nutzer seit DOS-Zeiten, als das Programm noch "allegro" hieß Instrument: Bassposaune (hauptsächlich sinfonische Musik, sowie Blechquart-, quint- und sonstige -ette), Violine, Gitarre, Gesang
Was soll denn eine "Scriptsprache" sein? Python ist eine Programmiersprache wie jede andere auch. Python steht auf allen bekannten OS zur Verfügung.
C# ist ein Microsoft Produkt, eigentlich konzipiert füt Windows Entwicklung und läuft auch nur unter Windows und dem .NET Framework. Das sind für mich schwerwiegende Gründe, die gegen C# sprechen. Vorteile sehe ich gar keine.
Ich denke mit "Skriptprachen" sind Programmiersprachen gemeint, die einen Interpreter verwenden, d.h. der Quellcode wird nicht "kompiliert" und steht dann binär zur Verfügung, sondern bleibt im Quelltext vorhanden und wird zur Laufzeit (jedesmal) interpretiert (JIT) (wie z.B. auch JavaScript, PHP). Vorteile von "Skriptsprachen" in diesem Sinne - das Plugin funktioniert auf jedem OS, für das der entspr. Interpreter existiert Ansonsten mögen "andere" Prorammiersprachen Vorteile haben, die v.a. "im Auge des Betrachters" liegen. So bin ich z.B. normalerweise C++-Programmierer und schreibe darin auch flotter als in manch anderer (Skript-)Sprache, auch z.B. bei der Bearbeitung von XML...
Ich hatte folgendes Problem: ich habe Lehrmaterial in dem kurze Phrasen stehen (in C-dur) und der Schüler soll sie dann in allen Tonarten üben. Da wäre es doch schön, wenn man das mit 2 Klicks in Capella erledigen könnte (11 mal kopieren, transponieren, enharmonisch verwechseln, wo notwendig). Capella bietet dafür Python zur Erzeugung eines Plugin an. Dafür müsste ich mich erstmal mit Python beschäftigen. Dann müsste ich das Capella-Objektmodell studieren. Ob das dann so einfach möglich ist, weiss ich dann noch nicht. Also habe mir eine Capella-Datei angeschaut. Da ich XML lesen kann, habe ich gesehen, dass sie sehr einfach zu lesen und zu bearbeiten ist (besser als MusicXml). Also habe ich ein C#-Programm geschrieben, dass die Capella-Datei liest und das Kopieren und Transponieren erledigt hat. Aber es war ein externes Programm. Von Python kann man Funktionen in C++ (unmanaged code) einfach aufrufen. Bei C# (managed code) geht das nicht so einfach. Ich habe aber eine Lösung dafür gefunden (gefunden im Sinne von googeln).
"JIT" ist allerdings kein Interpreter, sondern ein "Just In Time" Compiler (verhält sich deswegen anscheinend wie ein Interpreter, ist es aber nicht). PHP ist seit Version 6.0 vom Interpretermodell auf das JIT Compilermodell umgestiegen.
Für den Programmierer bedeutet das allerdings überhaupt nichts, das ist ein rein infrastrukturelles Problem, ob man einen Maschinencode erzeugt (Compiler) und diesen ausführt, oder ob man den Quellcode direkt interpretiert und ausführt. Das hat einzig Konsequenzen zur Performance.
Zu Python gibt es auch eine Compilerversion (u.a. Cython) und es gibt auch C-Interpreter. Das hat mit der Sprachsyntax nichts zu tun.
Zitat von HenningF im Beitrag #5Dafür müsste ich mich erstmal mit Python beschäftigen
Das ist bei allen Sprachen so. Dafür müßten andere sich mit C# beschäftigen und ebenso XML lernen und ebenso die Bibliotheken kennenlernen, die XML Funktionen bereitstellen. Wenn Capella die XML Syntax ändert, hat man aber das Problem, dass die C# Plugins alle nicht mehr funktionieren. Da würde ich lieber die definierte API benutzen, auch wenn man dafür Python programmieren soll, es ist aber die sauberere Lösung. Auf nicht dokumentierte Dateiformate Dritter würde ich mich niemals verlassen. Die Python API basiert auf der internen Speicherdarstellung und nicht auf der externen gespeicherten Darstellung. Das ist "risky", sich darauf zu verlassen.
Und wie läuft Dein C#-Plugin auf MacOS? (Ich rate mal: gar nicht).
@Nobbie Ich mache hier nur ein kostenloses Angebot für Leute, die sich mit C# und XML auskennen. Sie gehören nicht dazu. Damit habe ich kein Problem, aber ist es hier im Forum üblich, dass alle, wenn sie etwas nicht interessiert, dies entsprechend durch eine Kommentar kundtun?
Und ich mache darauf aufmerksam, was für Probleme man sich einhandelt, wenn man so einen Weg beschreitet. Das halte ich für fair. Bevor jemand sich dazu entschließt, so etwas zu benutzen, sollte er sicherlich wissen, mit welchen Nachteilen das behaftet ist. Oder nicht?
@Nobbie Ich hatte geschrieben: "Wen es interessiert, bitte melden." Ich hatte nicht um Ratschläge gebeten. Es geht hier um Capella-Plugins. Wenn das Plugin nicht mehr funktioniert, dann muss man eben wieder mit den eingebauten Funktionen arbeiten. Na und? Ich warte bis zum Ende des Monats ab, ob jemand Interesse hat und danach mach ich mich wieder aus dem Staub und belästige Sie nicht mehr.
- Ich finde ein weiteres Angebot ist toll, wer es nicht nutzen mag, möge es lassen - Diskussionen über Vor- und Nachteile verschiedener Techniken finde ich jederzeit prima und lehrreich, auch wenn um die Diskussion nicht explizit gebeten wurde