Lua Skript um Akkorde zu vervielfachen

TGTools, Patterson Plug-Ins, Forza! und andere Plug-Ins von Drittanbietern
Antworten
mas82
Beiträge: 38
Registriert: Mo Mai 08, 2017 10:00 pm

Lua Skript um Akkorde zu vervielfachen

Beitrag von mas82 » Sa Nov 03, 2018 9:57 pm

Hallo Zusammen!

Ich habe ein Lua-Skript geschrieben, stecke aber leider trotz mehrmaligem Umschreiben fest und brauche Hilfe.

Ziel ist, dass Akkord-Symbole aus angewählten Takten des ersten Systems auf alle anderen kopiert werden für eine weitere Verarbeitung (die immerhin schon funktioniert).

Manuelles Beispiel: Erstes System mit Akkordsymbolen komplett anwählen, kopieren, nächstes System (ohne Akkordsymbole) anwählen, einfügen bis inklusive letztem System (nun sind in allen Systemen der Partitur Akkordsymbole).

Der Fehler ist, dass die gesamte Quelle auf alle einzelnen Takte kopiert wird und nicht nach einander vertikal.

Das Problem liegt an "chordsregion" in Zeile 17: Hab es mit weiteren loops probiert aber ich bekomm es einfach nicht hin :cry:

Hier der Code in seinem letzten, ausführbaren Zustand wenn auch mit falschem Ergebnis:

Code: Alles auswählen

stavescollection = finale.FCStaves()
stavescollection:LoadAll()
measurescollection = finale.FCMeasures()
measurescollection:LoadAll()
region = finale.FCMusicRegion()
region:SetCurrentSelection()
chordsregion = finale.FCChords()
chordsregion:LoadAllForRegion(finenv.Region())

for staves in each(stavescollection) do
	stavesindex = stavescollection:GetIndexOf(staves)
	if stavesindex ~= 0 then
		for measures in each(measurescollection) do
			measuresindex = measurescollection:GetIndexOf(measures)
				cell = finale.FCCell(measuresindex, stavesindex)
				print(cell)
				for chord in each(chordsregion) do	
					chord:ConnectCell(cell)
					chord.ChordVisible = true
					chord:SaveNew()
				end
		end
    end
 end
Danke für jede Hilfe!
Hallo! Mein PC:
Windows 10 64bit
Finale 25.5.0.290

mas82
Beiträge: 38
Registriert: Mo Mai 08, 2017 10:00 pm

Re: Lua Skript um Akkorde zu vervielfachen

Beitrag von mas82 » Sa Nov 03, 2018 11:38 pm

Ich konnte das Skript verbessern und jetzt funktioniert es!!! … fast... :roll:

Das Skript funktioniert nur, wenn man das erste System komplett anwählt. Das Problem liegt daran, dass ich die Indizes der Takte (FCMeasures:GetIndexOf),
die ich für die Zellendefinition brauche nicht mit den Indizies der Akkorde (FCChords.Measure), die ich für die Akkorderstellung brauche, in Einklang bringen kann:

Code: Alles auswählen

region = finale.FCMusicRegion()
region:SetCurrentSelection()

stavescollection = finale.FCStaves()
stavescollection:LoadAll()

measurescollection = finale.FCMeasures()
measurescollection:LoadRegion(region)

chordsregion = finale.FCChords()
chordsregion:LoadAllForRegion(region) 

chord = finale.FCChords()

for measures in each(measurescollection) do
	measureindex = measurescollection:GetIndexOf(measures)
	measureindex = measureindex + 1
	for staves in each(stavescollection) do
		staveindex = stavescollection:GetIndexOf(staves)
		if staveindex > 0 then
			sindex = staveindex + 1
			cell = finale.FCCell(measureindex, sindex)
			for chord in each(chordsregion) do
				if chord.Measure == measureindex then
					chord:ConnectCell(cell)
					chord.ChordVisible = true
					chord:SaveNew()
				end
			end
		end
	end
end
Der Code hat also Bugs, aber für meine Zwecke reicht es fürs Erste. Gerne nehme ich Verbesserungsvorschläge entgegen! :D
Die nächsten Schritte werden sein (nicht mehr heute...gähn...):

-) Akkorde in der Schlagzeugspur um -2 transponieren (Korrektur)
-) Folgende Systeme einer Gruppe überspingen (Klavier: Akkorde nur im obersten System)
-) Mehrtaktige Pausen in den Einzelstimmen überspingen
-) Alle Akkorde in den Einzelstimmen verstecken (geht bereits)

Danke für jedwede Verbesserungen und Anregungen!
Hallo! Mein PC:
Windows 10 64bit
Finale 25.5.0.290

Benutzeravatar
Harald
Beiträge: 153
Registriert: Sa Aug 30, 2003 6:43 pm

Re: Lua Skript um Akkorde zu vervielfachen

Beitrag von Harald » So Nov 04, 2018 12:44 am

Hallo Michael,
mas82 hat geschrieben:
Sa Nov 03, 2018 9:57 pm
Manuelles Beispiel: Erstes System mit Akkordsymbolen komplett anwählen, kopieren, nächstes System (ohne Akkordsymbole) anwählen, einfügen bis inklusive letztem System (nun sind in allen Systemen der Partitur Akkordsymbole).

Der Fehler ist, dass die gesamte Quelle auf alle einzelnen Takte kopiert wird und nicht nach einander vertikal.
Ich würde mich ja bei diesem beschriebenen Ziel möglichst gar nicht um einzelne Takte und Notensysteme kümmern, wenn möglich, sondern direkt um die Akkordsymbole bzw. die FCCells, denen sie zugeordnet sind. Ich verstehe dein Ziel aus dem manuellen Beispiel so, dass alle Akkorde eines angewählten Notensystems z.b. ein Notensystem tiefer kopiert werden sollen. Das würde ich folgendermaßen erledigen:

Code: Alles auswählen

local chords = finale.FCChords()
chords:LoadAllForRegion(finenv.Region())
for c in each(chords) do
    local newchord = c
    local targetcell = finale.FCCell(c.Measure, c.Staff+1)
    newchord:ConnectCell(targetcell)
    newchord:SaveNew()
end
Ich vermute mal, du willst Akkordsymbole in ein einzelnes Notensytem von Hand schreiben, und das Skript kopiert sie dann in alle anderen Notensysteme, wo sie gebraucht werden. Dann könntest du - als Abänderung des obigen Codes - erstmal den Quell-FCStaff suchen, der die Akkordsymbole enthält und dann die Ziel-FCStaffs in einer Liste sammeln, in die sie kopiert werden sollen. Dann braucht es eigentlich auch keine Anwahl einer Region mehr, weil das Skript sowieso die gesamte Partitur bearbeitet. Der Mechanismus zum Akkordsymbol-kopieren bleibt aber im Kern der gleiche.

Harald
Finale 3.0-25.5 / Windows 7

mas82
Beiträge: 38
Registriert: Mo Mai 08, 2017 10:00 pm

Re: Lua Skript um Akkorde zu vervielfachen

Beitrag von mas82 » Mo Nov 05, 2018 9:51 pm

Ja genau! Ich schreibe immer wieder Partituren für eine Bandbesetzung und schreibe die Chords in das erste System (Vocals), brauche sie aber auch in den Einzelstimmen. Manuell dauert das, besonders das Verstecken der kopierten Chords in der Partitur. Die Verlinkung lösen und verstecken geht nur mit den Handhabungsmarkern und die kann man nicht komplett anwählen, auch nicht mit STRG+A (so ein Quatsch...). Daher die Idee zu diesem Script.

Danke für den Code! Ich hab mal wieder hundert Mal um die Ecke gedacht... :D
Er funktioniert sehr gut! Ich versuche nun, auch deinen Tipp mit der FCStaff für alle Systeme und dann auch noch das Verstecken.
Mal sehen, wie weit ich komme... :wink:
Hallo! Mein PC:
Windows 10 64bit
Finale 25.5.0.290

mas82
Beiträge: 38
Registriert: Mo Mai 08, 2017 10:00 pm

Re: Lua Skript um Akkorde zu vervielfachen

Beitrag von mas82 » Mo Nov 05, 2018 11:15 pm

Das Vervielfältigen in alle Systeme klappt jetzt schon sehr gut, aber das Verstecken der Akkorde funktioniert nicht obwohl alles richtig zu sein schein:

Code: Alles auswählen

region = finale.FCMusicRegion()
region:SetFullDocument()

stavescollection = finale.FCStaves()
stavescollection:LoadAll()

chords = finale.FCChords()
chords:LoadAllForRegion(region)

allparts = finale.FCParts()
allparts:LoadAll()

for staves in each(stavescollection) do
staveindex = stavescollection:GetIndexOf(staves)
	if staveindex ~= 0 then
		for c in each(chords) do
			local newchord = c
			local targetcell = finale.FCCell(c.Measure, c.Staff+1)
			newchord:ConnectCell(targetcell)
			for part in each(allparts) do
				newchord:SetChordVisible(part:IsPart())
				print("PartID: ", part.ID, "Is Part?: ", part:IsPart(), "Chord visible: ", newchord.ChordVisible)		
				part:SwitchTo()
				newchord:SaveNew()
				part:SwitchBack()
			end
		end
	end
end
In Zeile 22 gibt mir der print-Befehl ja auch unmissverständlich aus, dass die Chords in der Partitur auf "false" gesetzt sind aber man sieht sie immer noch....hab es auch mit einer if-else-loop probiert und part.ChordVisible manuell auf true oder false gesetzt - macht kein Unterschied...
Hallo! Mein PC:
Windows 10 64bit
Finale 25.5.0.290

mas82
Beiträge: 38
Registriert: Mo Mai 08, 2017 10:00 pm

Re: Lua Skript um Akkorde zu vervielfachen

Beitrag von mas82 » Di Nov 06, 2018 12:09 am

Zusatz:

Merkwürdigerweise funktioniert es auf einmal, wenn man den Code als eigens, unabhängiges Script ausführt:

Code: Alles auswählen

allparts = finale.FCParts()
allparts:LoadAll()

region = finale.FCMusicRegion()
region:SetFullDocument()

chords = finale.FCChords()
chords:LoadAllForRegion(region)

for part in each(allparts) do
	for c in each(chords) do
		if c.Staff ~= 1 then
			for part in each(allparts) do
				c:SetChordVisible(part:IsPart())
				part:SwitchTo()
				c:Save()
				part:SwitchBack()
			end
		end
	end
end
Ich könnte also mehrere Scripts schreiben und diese dann als Group-Scripts ausführen. Nicht sehr elegant, aber es würde gehen...
Hallo! Mein PC:
Windows 10 64bit
Finale 25.5.0.290

Benutzeravatar
Harald
Beiträge: 153
Registriert: Sa Aug 30, 2003 6:43 pm

Re: Lua Skript um Akkorde zu vervielfachen

Beitrag von Harald » Di Nov 06, 2018 1:17 pm

Hallo Michael,

was ich bei deinem Code nicht ganz nachvollziehen kann ist, warum du FCParts bearbeitest. Sollte das Skript nicht sinnvollerweise in der Partitur aufgerufen werden und alle Notensysteme einer Partitur bearbeiten? Mit FCParts kannst du Stimmenauszüge bearbeiten, aber darum geht es doch bei deinem Ziel gar nicht - falls ich das richtig verstanden habe.

Außerdem sollten Akkordsymbole doch nicht in leere Takte hineinkopiert werden, oder? Die werden nämlich im Stimmenauszug nicht in Sammelpausen zusammengefasst, sondern bleiben als Pausentakte mit Akkordsymbolen in der Einzelstimme stehen. Dann werden sich deine Musiker vermutlich doch fragen, ob sie etwas spielen sollen oder nicht. So eine Situation sähe für mich etwas widersprüchlich aus - ich würde sowas vermeiden, da es nur Probenzeit zur Klarstellung kostet. Es wäre daher vermutlich besser, vorher zu prüfen, ob überhaupt Entries im Takt vorhanden sind.

Ich würde das so regeln:

Code: Alles auswählen

-- function to copy chord symbols from a source staff to a target staff
-- spanning the whole document
function CopyChords( SourceStaff, TargetStaff)
    local r = finale.FCMusicRegion()
    r.StartStaff = SourceStaff
    r.EndStaff = SourceStaff
    r.StartMeasure = 1
    local measures = finale.FCMeasures()
    measures:LoadAll()
    r.EndMeasure = measures.Count

    local chords = finale.FCChords()
    chords:LoadAllForRegion( r )
    for c in each(chords) do
        local newchord = c
        local targetcell = finale.FCCell(c.Measure, TargetStaff)
        if (targetcell:CalcEntryDuration(-1) > 0) then newchord:ConnectCell(targetcell) end
        newchord:SaveNew()
    end
end


-- main program starts here

-- array which contain the UUIDs of the instruments from where to get chord symbols
local sourceUUID = { finale.FFUUID_VOCALS, finale.FFUUID_VOICE, finale.FFUUID_VOICENONAME }
-- array of all instruments which get the chord symbols
local targetUUID = { finale.FFUUID_PIANO , finale.FFUUID_GUITAR, finale.FFUUID_ACOUSTICBASS, finale.FFUUID_ELECTRICBASS }

-- load all staves
local staves = finale.FCStaves()
staves:LoadAll()

-- find first source staff: first staff which matches one of the sourceUUIDs
local source = 0
--loop backwards through staves so that the last occurence is the topmost staff
for staff in eachbackwards(staves) do
        for index,value in ipairs(sourceUUID) do
            if ( staff.InstrumentUUID == sourceUUID[ index ]) then source = staff.ItemNo end
       end
end

-- find target staves based on their UUID, call CopyChords for each staff found
-- only the first found piano staff (=right hand) gets the chord symbols, no other piano staves get them
local PianoRightHandStaffFound = false
for staff in each(staves) do
    for index,value in ipairs(targetUUID) do
        if staff:InstrumentMatchesUUID(value) and not PianoRightHandStaffFound then
            CopyChords( source, staff.ItemNo)
        end
        if staff:InstrumentMatchesUUID(finale.FFUUID_PIANO) then PianoRightHandStaffFound = true end
    end
end
Es ist keine Anwahl einer Region mehr nötig, das ganze Dokument wird bearbeitet.

Erst wird der Quell-Staff für die Akkordsymbole gesucht, hier der höchste Staff, der ein Gesangsnotensystem ist (du schriebst ja, alle Akkordsymbole tauchen im Gesang auf). Dann werden alle Notensysteme geprüft, ob sie Akkordsymbole bekommen sollen (anhand ihrer Instrumentendefinition) und wenn ja, werden die Akkordsymbole hineinkopiert (sofern der jeweilige Zieltakt nicht leer ist). Bei Klaviersystemen ist es so, dass nur das oberste Klaviersystem in der Partitur die Symbole bekommt (i.d.R. hat man ja nur ein Klavier im Ensemble).
Insgesamt werden FCParts gar nicht gebraucht, FCStaves dafür aber dauernd.

Harald
Finale 3.0-25.5 / Windows 7

mas82
Beiträge: 38
Registriert: Mo Mai 08, 2017 10:00 pm

Re: Lua Skript um Akkorde zu vervielfachen

Beitrag von mas82 » Di Nov 06, 2018 9:35 pm

was ich bei deinem Code nicht ganz nachvollziehen kann ist, warum du FCParts bearbeitest. Sollte das Skript nicht sinnvollerweise in der Partitur aufgerufen werden und alle Notensysteme einer Partitur bearbeiten? Mit FCParts kannst du Stimmenauszüge bearbeiten, aber darum geht es doch bei deinem Ziel gar nicht - falls ich das richtig verstanden habe.
Ja, das stimmt schon. Aber ich muss ja die kopierten Akkorde in der Partitur verstecken. Ich will sie ja nicht in jedem System haben sondern nur im obersten. Daher FCParts, sonst verschwinden die eben kopierten Akkorde ja auch in den Einzelstimmen und nicht nur in der Partitur oder?
Händisch hab ich es immer so gemacht:
- Partitur: Im obersten System (Vocals) die Akkorde eingeben
- anwählen, kopieren und in alle anderen Systeme (Keyboard, Gitarre, Bass, Drums) einfügen.
- auf das komplette Dokument hinauszoomen.
-alle eben kopierten Akkorde anwählen
-mit Rechtsklick Verlinkung entfernen und verstecken (sie verschiwnden in der Partitur bleiben aber in den Einzelstimmen).
Außerdem sollten Akkordsymbole doch nicht in leere Takte hineinkopiert werden, oder? Die werden nämlich im Stimmenauszug nicht in Sammelpausen zusammengefasst, sondern bleiben als Pausentakte mit Akkordsymbolen in der Einzelstimme stehen.
Tja, sehr fein wäre es, wenn das Skript vor dem Kopieren die Takte der Einzelstimmen auf Sammelpausen überprüfen könnte um diese nicht zu zerstören. Ist aber jetzt nebensächlich.
Deine Bedenken über Chords in leeren Takten kann ich nicht ganz nachvollziehen. In meinen Keyboardparts der letzten Jahre standen immer und überall Chords, auch bei Leertakten, was mir zur Orientierung bei längeren Pausen sehr geholfen hat. Und ich denke, bei Pausen ist kein großer Interpretationsspielraum - jedenfalls hatten meine Kollegen bis jetzt keine Missverständnisse.

Jedenfalls danke nochmals für den Code - ist sehr interessant und lehrreich zu lesen, auch nicht zuletzt dank deiner Kommentare - besonders der Teil mit den enums und der Befehl ipairs. Sehr erhellend! :wink:
Nur leider passiert nichts, wenn ich ihn ausführe.
Hallo! Mein PC:
Windows 10 64bit
Finale 25.5.0.290

Benutzeravatar
Harald
Beiträge: 153
Registriert: Sa Aug 30, 2003 6:43 pm

Re: Lua Skript um Akkorde zu vervielfachen

Beitrag von Harald » Di Nov 06, 2018 11:02 pm

mas82 hat geschrieben:
Di Nov 06, 2018 9:35 pm
Ja, das stimmt schon. Aber ich muss ja die kopierten Akkorde in der Partitur verstecken. Ich will sie ja nicht in jedem System haben sondern nur im obersten. Daher FCParts, sonst verschwinden die eben kopierten Akkorde ja auch in den Einzelstimmen und nicht nur in der Partitur oder?
Das hatten wir doch hier besprochen...das sollte doch mit der dort beschriebenen Notensystemstil-Lösung funktionieren. Oder geht das nicht?
mas82 hat geschrieben:
Di Nov 06, 2018 9:35 pm
Tja, sehr fein wäre es, wenn das Skript vor dem Kopieren die Takte der Einzelstimmen auf Sammelpausen überprüfen könnte um diese nicht zu zerstören. Ist aber jetzt nebensächlich.
Die Sammelpausen werden ja erst beim Erstellen der Stimmenauszüge angelegt (Dokument->Stimmenauszüge verwalten->Stimmenauszüge erstellen). Hast du die Stimmenauszüge bereits angelegt und änderst dann noch den Inhalt von Takten? Das kann man natürlich machen, aber meine Arbeitsweise ist da anders: das Erstellen der Auszüge kommt erst, wenn alle Inhalte in der Partitur fertig eingegeben sind. Erst dann hat Finale ja alle Infos, um ordentliche Stimmen zu erstellen.
mas82 hat geschrieben:
Di Nov 06, 2018 9:35 pm
Nur leider passiert nichts, wenn ich ihn ausführe.
:shock: :lol:
Da habe ich ja auch die notwendigen Voraussetzungen nachlässigerweise geschickt verschwiegen 8) ...ein geöffnetes Dokument mit folgenden Eigenschaften wird vorausgesetzt:
  • mindestens ein Gesangs-Notensystem, das Akkordsymbole enthält
  • ein oder mehrere Notensysteme für Gitarre, Akustik-Bass oder E-Bass oder Klavier (bzw. Gruppe aus zwei Notensystemen). In diese Notensysteme werden die Akkordsymbole hineinkopiert
  • die Notensysteme müssen mit Finales Partiturverwaltung->Instrumentenliste hinzugefügt sein oder mit dem Dokument-Assistent (damit die UUIDs richtig gesetzt sind). Falls du andere oder zusätzliche Instrumente in der Band hast, kannst du die UUIDs von deren Notensystemen von hier in das targetUUID-Array einfügen
Wenn ein solches Dokument offen ist, sollte das Skript beim Aufruf die Akkordsymbole vom Gesang in alle anderen Notensysteme kopieren.

Harald
Finale 3.0-25.5 / Windows 7

mas82
Beiträge: 38
Registriert: Mo Mai 08, 2017 10:00 pm

Re: Lua Skript um Akkorde zu vervielfachen

Beitrag von mas82 » Mi Nov 07, 2018 1:19 am

Das hatten wir doch hier besprochen...das sollte doch mit der dort beschriebenen Notensystemstil-Lösung funktionieren. Oder geht das nicht?
Doch, klar! Das funktioniert natürlich! Sorry, war noch im "alten Muster"... :oops: Ich wollte nur diesen Arbeitsschritt ebenfalls in das Script hinzufügen da der Arbeitsablauf immer derselbe ist.
Die Sammelpausen werden ja erst beim Erstellen der Stimmenauszüge angelegt (Dokument->Stimmenauszüge verwalten->Stimmenauszüge erstellen). Hast du die Stimmenauszüge bereits angelegt und änderst dann noch den Inhalt von Takten? Das kann man natürlich machen, aber meine Arbeitsweise ist da anders: das Erstellen der Auszüge kommt erst, wenn alle Inhalte in der Partitur fertig eingegeben sind. Erst dann hat Finale ja alle Infos, um ordentliche Stimmen zu erstellen.
Aha...? :? Ich hab bis jetzt immer den Dokument-Assistent beim Start eines neuen Projekts verwendet und da werden alle Einzelstimmen automatisch angelegt. Also: Neben der Partitur sind alle Einzelstimmen seit Projektbeginn da und Mehrtaktpausen gibt es mittlerweile auch.
Natürlich kann ich ohne Assistenten mit dem Startdokument begingen und dann händisch alle Instrumente und dann die Einzelstimmen hinzufügen aber ist das nicht deutlich zeitaufwändiger?
Da habe ich ja auch die notwendigen Voraussetzungen nachlässigerweise geschickt verschwiegen
Leider... daran liegt's wohl nicht. Ich verwende immer den Dokument-Assistenten (siehe oben).
Blöde Frage: Mit dem ersten, kurzen Skript, das du anfangs gepostet hast, funktioniert es ja schon ganz prima. Was genau ist der Vorteil von dem zweiten, längeren Skript mit den UUIDs, den ich dem ersten Skript vorziehen soll? Oder meintest du, dass man mit dem zweiten Skript beim Einfügen selektiv vorgehen kann (also beispielsweise die Bass-Zeile des Klaviers auslassen kann)?
Hallo! Mein PC:
Windows 10 64bit
Finale 25.5.0.290

Benutzeravatar
Harald
Beiträge: 153
Registriert: Sa Aug 30, 2003 6:43 pm

Re: Lua Skript um Akkorde zu vervielfachen

Beitrag von Harald » Mi Nov 07, 2018 1:38 pm

mas82 hat geschrieben:
Mi Nov 07, 2018 1:19 am
Natürlich kann ich ohne Assistenten mit dem Startdokument begingen und dann händisch alle Instrumente und dann die Einzelstimmen hinzufügen aber ist das nicht deutlich zeitaufwändiger?
Möglicherweise kostet es etwas mehr Zeit, aber dann habe ich auch alles so eingestellt, wie ich es brauche. Z.B. brauche ich immer die Schreibweise "Trompete 1 in Bb" und nicht "Trompete in B 1", wie mir der Assistent vorgibt. Dieses und andere Dinge stelle ich lieber von Hand ein. Ich bin da auch immer noch etwas in den Gewohnheiten von Finale 3.0 gefangen :wink: , als es keine Assistenten gab. Schon die Partiturverwaltung zu verwenden, statt Notensysteme durch Doppelklick hinzuzufügen kostet manchmal Überwindung :) (naja, mittlerweile geht es).
mas82 hat geschrieben:
Mi Nov 07, 2018 1:19 am
Was genau ist der Vorteil von dem zweiten, längeren Skript mit den UUIDs, den ich dem ersten Skript vorziehen soll? Oder meintest du, dass man mit dem zweiten Skript beim Einfügen selektiv vorgehen kann (also beispielsweise die Bass-Zeile des Klaviers auslassen kann)?
  • Das erste Skript erfordert die Anwahl des Quell-Notensystems und kopiert dann alle Akkordsymbole lediglich in das nächste Notensystem drunter.
  • Das zweite Skript erfordert dagegen keine Anwahl, sondern sucht selbsttätig das Quell-Notensystem und sucht selbsttätig alle Ziel-Notensysteme. Darüberhinaus kopiert es die Akkordsymbole von der Quelle zum Ziel nur dann, wenn am Ziel auch eingegebene Noten oder Pausen stehen und wenn das Ziel keine rechte Hand eines Klaviersystems ist. Insofern werden hier die musikalischen Inhalte besser berücksichtigt als beim ersten Skript, wo das gar nicht passiert.
Es ist aber immer auch eine grundsätzliche Frage, wieviel "musikalische Intelligenz" so ein Skript mitbringen soll. Darüber gehen mit gutem Grund die Meinungen auseinander.
Finale 3.0-25.5 / Windows 7

mas82
Beiträge: 38
Registriert: Mo Mai 08, 2017 10:00 pm

Re: Lua Skript um Akkorde zu vervielfachen

Beitrag von mas82 » Mi Nov 07, 2018 11:34 pm

Okay, dann hab ich es eh richtig verstanden! Alles klar! Danke nochmals für beide Skripte! Vielleicht braucht man sie nicht ständig aber es ist doch eine sehr angenehme Beschleunigung und außerdem macht es ja auch Spaß, an so ein Skript ranzugehen, wie ich finde ;-)

Gestern bin ich noch bis 3 Uhr in der Früh gesessen mit dem Versuch, das erste Skript mit der Fähigkeit zu erweitern, Mehrtaktpausen automatisch aufzuspüren und bei der Chord-Platzierung zu ignorieren. Rausgekommen ist ein hochkomplexes if-not-and-then-Monstrum mit Tabellen, das leider aus mir unerfindlichen Gründen nicht funktioniert obwohl ich die logische Abfolge und alle Eventualitäten genau berücksichtigt habe. Das Problem war, dass das ganze Konstrukt völlig ignoriert wurde obwohl ich alles mit prints mehrfach gegengecheckt habe. Irgendwann hab ich aufgegeben und ich werde dieses Skript auch niemandem "antun" - egal, ist echt ein Luxusproblem. Außerdem war da auch mehr Ehrgeiz und Leidenschaft dabei als Nutzen also halb so wild. Und gelernt hab ich auch wieder viel. Immerhin, syntax- und andere Fehler sind mittlerweile rar geworden. Ein Fortschritt! :D

Ich möchte mich nochmals bei dir, lieber Harald, herzlich für deine viele Mühe bedanken! Ich hab in den vergangenen Wochen enorm viel gelernt und hab eine solide Grundlage erworben, um einfache und schwierigere Skripts schreiben zu können und um mit noch mehr Spaß und Effizienz mit Finale arbeiten zu können. Hätte ich alleine wohl nie geschafft! *verbeug* :wink:
Hallo! Mein PC:
Windows 10 64bit
Finale 25.5.0.290

Benutzeravatar
Harald
Beiträge: 153
Registriert: Sa Aug 30, 2003 6:43 pm

Re: Lua Skript um Akkorde zu vervielfachen

Beitrag von Harald » Mi Nov 07, 2018 11:50 pm

Danke, gerne :D .
Ja, an der ganzen Programmiererei kann man viel Zeit verschwenden...aber immerhin kommt man mit JWLua schneller zum Ziel, als wenn man sich mit C++ direkt rumschlagen müsste. Das habe ich mal gemacht, mache ich auch nach wie vor hin und wieder, aber Lua ist so viel einfacher und direkter, dass es auch mehr Spaß macht.
Ich muss auch sagen: ich lerne ebenso dauernd dazu; die Sache mit den UUIDs zur Identifikation von Notensystemen war mir z.B. noch von irgendwoher in Erinnerung (ich glaube von der JWLua Mailingliste), aber ich hatte sie bisher nie verwendet. Deine Anwendung war eine Gelegenheit, deren Verwendung kennenzulernen und zu üben.
Finale 3.0-25.5 / Windows 7

Antworten