Versetzungszeichen aller Noten umwandeln

Begonnen von oiseau, Montag, 8. Februar 2021, 15:26

« vorheriges - nächstes »

oiseau

Gibt es eine Funktion in LilyPond, die alle Versetzungszeichen der Noten eines Stückes umwandelt, also von Kreuzen (#) zu Bes (b) und umgekehrt?


harm6

Mir ist nicht ganz klar was Dir vorschwebt...

\transpose cis ces

?

Gruß,
  Harm

oiseau

#2
Häufig ändert ja ein Stück die Tonart. Und wenn zuvor alle erniedrigten/erhöhten Noten beispielsweise mit einem Kreuz versehen waren und die neue Tonart Bes vorsieht, möchte ich die Umwandlung gern von LilyPond im Output vornehmen lassen, um nicht alle Noten einzeln anpassen zu müssen.

Wenn der Transpose-Befehl das könnte, wäre das großartig. Probiere ich gleich einmal aus.   :)

oiseau

#3
Ich habe grade etwas herumprobiert. Der Transpose-Befehl passt leider auch die Noten ohne Versetzungszeichen an.

Um ein Beispiel zu geben, was ich erreichen möchte:

Ausgangsnoten:
c cis d dis e f fis g gis a ais b

Zielnoten in der Ausgabe:
c des d es f ges g as a bes b

ingmar


ingmar

Zitat von: oiseau am Montag,  8. Februar 2021, 15:43
...um nicht alle Noten einzeln anpassen zu müssen.

Musst du doch nicht! In deinem Editor kannst du doch mit Suche und Ersetze arbeiten, oder? Das wären im schlimmsten Fall zwölf Durchgänge...

--i

oiseau

Ja, das stimmt. Ich habe mir flugs ein Skript in JavaScript geschrieben, was mir hunderte von Noten in einer Sekunde umwandelt.  ;)

Ich danke Euch dennoch.

Manuela

Zitat von: oiseau am Montag,  8. Februar 2021, 19:03
Ja, das stimmt. Ich habe mir flugs ein Skript in JavaScript geschrieben, was mir hunderte von Noten in einer Sekunde umwandelt.  ;)

Verrätst du uns dein JavaScript? Und in welchem Programm läuft das, editierst du mit einem Webbrowser?
Danke für eure Hilfe
viele Grüße
-- Manuela

Arnold

Hallo oiseau,

mit musicmap wäre es möglich, eine selbstentwickelte SCHEME-Funktion auf alle Noten anzuwenden, um die gewünschte »selektive enharmonische Transposition« durchzuführen.

  • Ich nehme an, auf unsere diatonische Tonleiter begrenzt, denn sonst wird's schnell kompilziert (also eine Absage an die Bohlsen-Pierce-Fans und ähnliche)
  • Soll das ohne Berücksichtigung der Tonart geschehen (quasi C-Dur/a-Moll, also nur das Verbieten von Doppel-B und -Kreuz sowie je nach Funktion einfache B bzw. Kreuz), wäre das recht einfach zu realisieren.
  • Sollen auch Halbtonschritte angepasst werden (z. Bsp. eis zu f), so muß man noch ein paar Ausnahmen berücksichtigen

Übrigens, soweit ich mich entsinne ist im normalen transpose auch eine »selektive enharmonische Transposition« verbaut, doch nur wenn der Ton das Doppel-B/-Kreuz übersteigt. Somit könnte \transpose c cisis \transpose c ceses ... auch zu einem ähnlichen Effekt führen.

Arnold
(wieder einmal nur Lösungsansätze ohne Beispiele beschreiben)

Hilflos-im-Code

Zitat von: oiseau am Montag,  8. Februar 2021, 19:03
Ja, das stimmt. Ich habe mir flugs ein Skript in JavaScript geschrieben, was mir hunderte von Noten in einer Sekunde umwandelt.  ;)
Eine Alternative wäre in Notepad den Suchen und Ersetzen Vorgang als Makro abzuspeichern.

ingmar

Zitat von: Hilflos-im-Code am Mittwoch,  8. Dezember 2021, 12:20
Eine Alternative wäre in Notepad den Suchen und Ersetzen Vorgang als Makro abzuspeichern.
tja, meine Rede.
--m

Lilysetter

Für jegliche Arten von automatischer Textmanipulation gibt es das Unix-Kommando sed (stream editor, auch für Windows etc. erhältlich).
Damit kann man entweder mit Commandline-Parametern oder mit einer "script"-Datei anweisen, welche Veränderungen vorgenommen werden sollen.
Jede Art von regulären Ausdrücken ist möglich; ein sehr mächtiges Tool, nur wenige kB groß, das mir schon sehr viel Arbeit erspart hat.
Man muss sich halt mit "man sed" einlesen. Es gibt eine sehr interessante Sammlung "sed one liners".  Schade, dass so etwas in Vergessenheit gerät.
sed [Anweisungen] <input.txt >output.txt