Deutsches Lilypond Forum (Archiv)

Allgemein => Fragen zu Funktionen => Thema gestartet von: Radler am Dienstag, 30. September 2008, 16:27

Titel: Musikabschnitte parametrisierbar?
Beitrag von: Radler am Dienstag, 30. September 2008, 16:27
Hallo zusammen, weiß vielleicht jemand ob und wie man Musikabschnitte parametrisieren kann?
Beispiel: Reinhard Mey begleitet sein "Über den Wolken" permanent mit G a D G, nur einmal ist statt "a" "a:7" nötig. "Stumpf" schreibe ich das so:

CstropheA = \chordmode
{
   g2 g a:m a:m d d g g
}

Cstrophe = \chordmode
{
   \CstropheA   %   Wind Nord -- Ost Start -- bahn null drei,
         %   bis hier hör' ich die Mo -- to -- ren.
   \CstropheA   %   Wie ein Pfeil zieht sie vor -- bei,
         %   und es dröhnt in mei -- nen Oh -- ren.
   \CstropheA   %   Und der nas -- se As -- phalt bebt,
         %   wie ein Schlei -- er staubt der Re -- gen,
   \CstropheA   %   bis sie ab -- hebt und sie schwebt
         %   der Son -- ne ent -- ge -- gen.
   g2 g a:m7 a:m7 d d g g   %   Ãœ -- ber den Wol -- ken
            %   muss die Frei -- heit wohl gren -- zen -- los sein.
   \CstropheA      %   Al -- le Äng -- ste, al -- le Sor -- gen, sagt man,
            %   blie -- ben da -- run -- ter ver -- bor -- gen und dann
   c2 c g g      %   wür -- de, was uns groß und wich -- tig er -- scheint,
   d d g g      %   plötz -- lich nich -- tig und klein.
}


Elegant würde ich das gerne so schreiben:

CstropheA {modifizierung} = \chordmode
{
   g2 g a:m\modifizierung a:m\modifizierung d d g g
}

Cstrophe = \chordmode
{
   \CstropheA{""}   %   Wind Nord -- Ost Start -- bahn null drei,
         %   bis hier hör' ich die Mo -- to -- ren.
   \CstropheA{""}   %   Wie ein Pfeil zieht sie vor -- bei,
         %   und es dröhnt in mei -- nen Oh -- ren.
   \CstropheA{""}   %   Und der nas -- se As -- phalt bebt,
         %   wie ein Schlei -- er staubt der Re -- gen,
   \CstropheA[{""}]   %   bis sie ab -- hebt und sie schwebt
         %   der Son -- ne ent -- ge -- gen.
   \CstropheA{"7"}   %   Ãœ -- ber den Wol -- ken
            %   muss die Frei -- heit wohl gren -- zen -- los sein.
   \CstropheA{""}      %   Al -- le Äng -- ste, al -- le Sor -- gen, sagt man,
            %   blie -- ben da -- run -- ter ver -- bor -- gen und dann
   c2 c g g      %   wür -- de, was uns groß und wich -- tig er -- scheint,
   d d g g      %   plötz -- lich nich -- tig und klein.
}

Das habe ich nun schon so geschrieben, aber es ist ein Beispiel. Und da ich noch an die 100 Lieder setzen muss, würde mir eine solche Funktion viel Arbeit abnehmen.

Wenn also jemand was weiß: Mein Dank wäre ihm sicher!

Viele Grüße
von Radler
Titel: Re: Musikabschnitte parametrisierbar?
Beitrag von: etilli33 am Mittwoch, 1. Oktober 2008, 08:36
Hallo,

ein gutes Problem das man mit Scheme anpacken kann. Ich habe leider nicht genug Kenntnis, um dir eine Formel zu präsentieren, aber wenn du etwas Programmiergeschick hast, schau dir etwa im LM (Handbuch zum Lernen) die Scheme-Referenz und die letzten Kapitel vor dem Anhang an, also Kapitel 4.7 usw. Dort ist auch ein Beispiel, wie man Scheme mit Variablen programmiert.

Viel Erfolg

Till
Titel: Re: Musikabschnitte parametrisierbar?
Beitrag von: Radler am Mittwoch, 1. Oktober 2008, 16:01
Dank für die schnelle Antwort, Till!

Die Scheme-Referenz ist sehr - na, sagen wir mal - abstrakt, sie spricht nicht zu mir, obwohl ich professioneller Programmierer bin - und das will (bei aller Bescheidenheit) schon etwas heißen.

Du meinst offenbar das Kapitel 4.7 in http://lilypond.org/doc/v2.11/Documentation/user/lilypond-learning/Advanced-tweaks-with-Scheme#Advanced-tweaks-with-Scheme? Das sieht hochinteressant aus, da werde ich mich 'mal dran machen.

Gruß und nochmals Dank
von Radler

Titel: Re: Musikabschnitte parametrisierbar?
Beitrag von: Radler am Mittwoch, 1. Oktober 2008, 16:48
Ho ho, das funzt wirklich und wahrhaftig --- ich bin begeistert!
Leider muss man die Dauer von dem a:m wirklich bei jedem Aufruf angeben, aber das ist nur ein kleines Manko!
Vielen Dank, Till!
Grüße
von Radler




CstropheA = #(define-music-function (parser location modifikation) (ly:music?)
#{
    \chordmode
    {
             g2 g $modifikation $modifikation d d g g
    }
#})


Cstrophe = \chordmode
{
   \CstropheA a2:m   %   Wind Nord -- Ost Start -- bahn null drei,
         %   bis hier hör' ich die Mo -- to -- ren.
   \CstropheA a2:m   %   Wie ein Pfeil zieht sie vor -- bei,
         %   und es dröhnt in mei -- nen Oh -- ren.
   \CstropheA a2:m   %   Und der nas -- se As -- phalt bebt,
         %   wie ein Schlei -- er staubt der Re -- gen,
   \CstropheA a2:m   %   bis sie ab -- hebt und sie schwebt
         %   der Son -- ne ent -- ge -- gen.
}
Crefrain = \chordmode
{
   \CstropheA a2:m7   %   Ãœ -- ber den Wol -- ken
            %   muss die Frei -- heit wohl gren -- zen -- los sein.
   \CstropheA a2:m      %   Al -- le Äng -- ste, al -- le Sor -- gen, sagt man,
            %   blie -- ben da -- run -- ter ver -- bor -- gen und dann
   c2 c g g      %   wür -- de, was uns groß und wich -- tig er -- scheint,
   d d g g      %   plötz -- lich nich -- tig und klein.
}
Titel: Re: Musikabschnitte parametrisierbar?
Beitrag von: etilli33 am Montag, 6. Oktober 2008, 20:09

Die Scheme-Referenz ist sehr - na, sagen wir mal - abstrakt, sie spricht nicht zu mir, obwohl ich professioneller Programmierer bin - und das will (bei aller Bescheidenheit) schon etwas heißen.
Jaja, auf jeden Fall, das wäre gut, wenn man hier ein paar Beispiele hätte, welche Parameter man setzen kann und in welcher Reihen folge usw. Ich verstehe das auch erst so langsam durch die Beispiele, die ich immer wieder lese...
Auf Englisch ist da noch ein Unterabschnitt hinzugefügt, bin aber noch nicht dazu gkommen, das zu übersetzen.

Till