Autor Thema: http://lsr.di.unimi.it/LSR/Item?id=785  (Gelesen 4944 mal)

erich

  • Member
http://lsr.di.unimi.it/LSR/Item?id=785
« am: Donnerstag, 28. Januar 2016, 16:18 »
Hallo

Das Snippet "http://lsr.di.unimi.it/LSR/Snippet?id=785"  lässt sich bei mir als version "2.18.22" rendern. Wenn ich jedoch die Zeile 25

Zitat
scalepitches = #(list->vector . . .

auskommentiere und statt dessen  in Zeile 30

Zitat
% scalepitches = `#( 0 . . .

die Auskommentierung rückgängig mache, erhalte ich unter anderen die Fehlermeldung:

Zitat
Wrong type to apply: 0
Wrong type argument in position 1 (expecting vector of rational): "`"
 

Die vermutete zunächst einen Tippfehler und habe die beiden Zeichen `# mal vertauscht, das führte jedoch nicht zum Erfolg.

Ich habe dann das Script soweit ausgedünnt, dass nur noch das folgende übrig bleibt:
\version "2.18.2"

%% http://lsr.di.unimi.it/LSR/Item?id=785
%% see also http://lilypond.org/doc/v2.18/Documentation/notation/creating-midi-files.fr.html

% The tempered fifth in quarter-comma meantone is (from any mathematical
  %  music theory reference book) 0.5805 of an octave, which is 696.6 cents
FIFTH = # 5805/10000  % or equivalently, # 6966/12000
  % 31-equal-temperament has
  %  FIFTH = # 18/31
  % 12-equal-temperament has
  %  FIFTH = # 7/12
  % 53-equal-temperament has
  %  FIFTH = # 31/53
  %
  % When you experiment, stay within the range 1/2 < FIFTH < 3/5
  % so that two fifths <c d'> is more than an octave,
  % and five fifths <c b''> is less than three octaves.
  %
#(define fracpart (lambda (x) (- x (floor x))))
#(define tones-from-c (lambda (nfifths) (* 6 (fracpart (* FIFTH nfifths)))))
  %
  % This is a list of pitches, in units of an equal tempered whole tone,
  %  for the notes c d e f g a b, relative to c
% scalepitches = #(list->vector (map tones-from-c '(0 2 4 -1 1 3 5)))

  % One may skip the Scheme code and simply enter the pitches in cents.
  % For quarter-comma meantone, these can be found in a book:
  % scalepitches = `#(0 193/200 386/200 503/200 697/200 890/200 1083/200)
scalepitches = `#( 0 193/200 386/200 503/200 697/200 890/200 1083/200)

#(ly:set-default-scale (ly:make-scale scalepitches))

SHARP = #(tones-from-c 7)
  % Alternatively, for quarter-comma meantone, SHARP = # 76/200
#(define-public FLAT         (* SHARP -1))
#(define-public DOUBLE-SHARP  (* SHARP 2))
#(define-public DOUBLE-FLAT  (* SHARP -2))

  % Reload the note names (c, cis, des, d, etc.) ...
#(ly:load "define-note-names.scm") \language "nederlands"

  % and the table of glyphs for alterations ...
alterationList = #`(
  (,NATURAL . "accidentals.natural")
  (,FLAT . "accidentals.flat")
  (,SHARP . "accidentals.sharp")
  (,DOUBLE-SHARP . "accidentals.doublesharp")
  (,DOUBLE-FLAT . "accidentals.flatflat")
)
  % and the table of alterations in any modes (major, minor, dorian) you use
minor = #`(
  (0 . ,NATURAL)
  (1 . ,NATURAL)
  (2 . ,FLAT)
  (3 . ,NATURAL)
  (4 . ,NATURAL)
  (5 . ,FLAT)
  (6 . ,FLAT)
)
  % so that these tables are indexed to pitches from our tuning.

  % keyAlterationOrder needs to know our pitches to typeset key signatures.
  % Each object that draws accidentals to know the size of our alterations.
\layout{
  \context {
    \Score
  keyAlterationOrder = #`(
    (6 . ,FLAT) (2  . ,FLAT) (5 . ,FLAT) (1  . ,FLAT) (4  . ,FLAT) (0  . ,FLAT) (3  . ,FLAT)
    (3 . ,SHARP) (0 . ,SHARP) (4 . ,SHARP) (1 . ,SHARP) (5 . ,SHARP) (2 . ,SHARP) (6 . ,SHARP)
    (6 . ,DOUBLE-FLAT) (2 . ,DOUBLE-FLAT) (5 . ,DOUBLE-FLAT ) (1 . ,DOUBLE-FLAT) (4 . ,DOUBLE-FLAT) (0 . ,DOUBLE-FLAT) (3 . ,DOUBLE-FLAT)
    (3 . ,DOUBLE-SHARP) (0 . ,DOUBLE-SHARP) (4 . ,DOUBLE-SHARP) (1 . ,DOUBLE-SHARP) (5 . ,DOUBLE-SHARP) (2 . ,DOUBLE-SHARP) (6 . ,DOUBLE-SHARP)
    )
    \override KeySignature.glyph-name-alist = \alterationList
    \override Accidental.glyph-name-alist = \alterationList
    \override AccidentalCautionary.glyph-name-alist = \alterationList
    \override TrillPitchAccidental.glyph-name-alist = \alterationList
    \override AmbitusAccidental.glyph-name-alist = \alterationList
  }
}
  % MIDI implements microtones as a pitch bend, with one bend per channel.
  % These lines below assign one channel to each Voice, in case there are
  % multiple voices on a staff, so that each voice can have its correct
  % pitch bend.
\midi {
  \context {
    \Staff
    \remove "Staff_performer"
    \remove "Key_performer" % avoid midi bug, issue 748
  }
  \context {
    \Voice
    midiInstrument = "drawbar organ"
    \consists "Staff_performer"
  }
  \tempo 4 = 30
}

  % The end of a Chorale from Bach's St Matthew Passion.
  %
  % The original choral music, in B-minor, involves notes such as
  % E-sharp and D-sharp that do not exist on an organ, those keys
  % being tuned to F and E-flat, respectively.
  %
  % Therefore we transpose to D minor to make it playable on the organ.
  %
\score {
  \new PianoStaff \with { instrumentName = "Organ" } \transpose b d' <<
    \partial 4
    \new Staff \relative c'' {
     % \key b\minor
     % s1*0^\markup\huge"transposed from St. Matthew Passion, J. S. Bach"
      << {
        d4 %| cis  b  e  d8 cis | cis2 b
      } \\ {
       % fis4 | e8 fis gis ais b4 b | b ais fis2
      } >>
    }
    \new Staff \relative c' {
      %\key b\minor
      %s1*0_\markup { \line { $(format "Fifths tempered by ~,1F cents relative to perfect fifth"
      %(* (- FIFTH 0.5849625) 1200)) }}
      << {
        \clef bass
        a8 b %| cis dis e4 b8 cis d4 | gis, cis dis2
      } \\ {
      %  fis,8 gis %| a4 gis g fis | eis fis b,2
      } >>
    }
  >>
  \layout{}
  \midi{}
}

Auch so hatte ich keinen Erfolg;

Kann mir bitte jemand helfen.

Gruß
Erich
« Letzte Änderung: Donnerstag, 28. Januar 2016, 16:22 von erich »

harm6

  • Member
Re: http://lsr.di.unimi.it/LSR/Item?id=785
« Antwort #1 am: Donnerstag, 28. Januar 2016, 20:56 »
Hallo Erich,

Du siehst diese Zeile:
#(ly:set-default-scale (ly:make-scale scalepitches))
wobei ly:make-scale einen vector erwartet.

Es gibt das funktionierende
scalepitchess = #(list->vector (map tones-from-c '(0 2 4 -1 1 3 5)))
Ein vector eben.

Das auskommentierte
scalepitches = `#(0 193/200 386/200 503/200 697/200 890/200 1083/200)
ist gar nix...
Es sollte wohl auch ein vector sein, Deine Vermutung eines Tippfehlers dürfte deshalb richtig sein.

scalepitches = ##(0 193/200 386/200 503/200 697/200 890/200 1083/200)
wäre korrekt.

Es führt allerdings zu anderen Problemen, zahlreiche Warnungen vom Typ:
warning: Could not find glyph-name for alteration -1/2
warning: Could not find glyph-name for alteration -119/1000
...

ly:set-default-scale setzt die Skala global, deshalb dürfte die übliche Vorgehensweise (getrennte scores für layout/midi) ebenfalls nicht funktionieren.


Im Moment weiß ich da keinen Ausweg, aber ich hab' auch nicht groß drüber nachgedacht.
Für mich ist midi keine Musik, sondern tot.
Reiner Tod ist immer noch tot ... ;)
Insoweit nichts, was mich interessiert.

Aber es gibt tatsächlich eine Reihe versierter Leute, die das anders sehen....


Allerdings sollte das LSR-snippet schon gefixt werden...

Gruß,
  Harm

harm6

  • Member
Re: http://lsr.di.unimi.it/LSR/Item?id=785
« Antwort #2 am: Donnerstag, 28. Januar 2016, 21:01 »
Den Tippfehler hab ich im LSR korrigiert, aber das ist eben noch nicht alles...

Gruß,
  Harm

erich

  • Member
Re: http://lsr.di.unimi.it/LSR/Item?id=785
« Antwort #3 am: Donnerstag, 28. Januar 2016, 23:58 »
Hallo Harm,

vielen Dank für den Hinweis. Jedenfalls lässt sich nun das von mir zusammengestrichene Script fehlerfrei rendern. Wie sich die Warnhinweise des vollständige Scripts ausmerzen lassen, wird sich zeigen müssen.

Du schreibst "für mich ist midi keine Musik". Ich bin froh, dass es midi gibt: ich bin kein Klavierspieler und kann mir mit Hilfe von midi Musik vergegenwärtigen und dadurch vieles entdecken. Ich bin zufällig auf das Buch von William A. Sethares "Tuning, Timbre, Spectrum, Scale" gestoßen, in dem der Author beschreibt, wie er erst durch den Einsatz von Rechnern auf akustische Phänomene gestoßen ist, die ohne die Synthetisierbarkeit von Klängen nicht erfahrbar wären. Zur Zeit interessiert mich die reine Stimmung (just intonation) und wie sie sich mit Hilfe von Lilypond realisieren lässt.

Gruß
Erich

Arnold

  • Member
Re: http://lsr.di.unimi.it/LSR/Item?id=785
« Antwort #4 am: Freitag, 29. Januar 2016, 09:51 »
Hallo Erich,

zur "reinen Intonation" und LILYPOND noch ein paar kleine Anmerkungen von mir.

  • Es gibt bis jetzt (in Lilypond) leider weder eine Möglichkeit, markups als Vorzeichen für mikrotonale Versetzungszeichen zu definieren (sondern nur Zeichen aus dem aktuellen Musik-Font), und es gibt auch keine "gleitenden Versetzungzeichen mit numerischer Cent-Angabe" (ohne oder mit einer Nachkommastelle wünsche ich mir).
  • Ich benutze, um aus MIDI eine hörbare Musik zu machen, das Programm timidity zusammen mit den eaw-Patches. Damit erzeuge ich eine WAV-Datei, welche ich dann anhöre. Lilypond gibt die Mikrotöne in der Art aus, daß direkt vor dem Ton-An ein Pitch-Bend (für den ganzen Kanal, also üblicherweise Staff = Notenzeile) eingefügt wird, und direkt nach dem Ton-Aus ein weiteres Pitch-Bend auf Null. Außerdem habe ich timidity für mich gepatcht (nur Dateikonvertierung von MID auf WAV) - ich kann per Kommandozeilenoption angeben, daß die Pitch-Bend-Anweisungen sich nicht direkt auf den klingenden Kanal auswirken, sondern statt dessen als Vorwahl-Wert für das nächste Ton-An interpretiert werden.
  • Ich habe ein Trio von Georg Druschetzky (1745-1819) sowohl in der gleichschwebenden Temperatur, als auch in "E31" (Oktave in 31 gleiche Schritte geteilt, als brauchbare Annäherung an die mitteltötige Stimmung) in je eine WAV-Datei konvertiert. Beim Anhören beider Versionen ist mir nichts aufgefallen, aber wenn ich mitspielte (auf Rohrblattinstrument) war die E31-Version angenehmer.

Arnold

erich

  • Member
Re: http://lsr.di.unimi.it/LSR/Item?id=785
« Antwort #5 am: Samstag, 30. Januar 2016, 10:35 »
Hallo Arnold

Wir sollten die von Dir aufgezeigten Aspekte weiter vertiefen; allerdings würde an dieser Stelle kaum jemand danach suchen. Ich habe unter Spezielle Projekte angeregt, für Fragen von MIDI usw. eine eigene Rubrik vorzusehen; dort könnten wir dann weiter kommunizieren.

Noch eine kleine Anmerkung: Du benutzt die Bezeichnung E31, sollten wir nicht lieber zu der sich international einbürgernden Bezeichnung 31 edo (gleich geteilte Oktave) übergehen.

Gruß Erich

Arnold

  • Member
Re: http://lsr.di.unimi.it/LSR/Item?id=785
« Antwort #6 am: Montag, 1. Februar 2016, 09:29 »
Hallo erich,

ich hatte das »E31« nur irgendwo aufgeschnappt, aber noch keine (bessere) Literatur über das ganze Thema gelesen. Also werde ich in Zukunft von »31edo« sprechen.

Zu den »Cent-Angaben« ist mir noch einfallen: Ich könnte eine \musicMap-Funktion erstellen, welche den Cent-Offset in \finger-Bezeichnungen hinzufügt. Doch das Aufräumen wiederholter solcher Ersatz-Vorzeichen müßte ein Engraver übernehmen, und dann noch die unterschiedlichen Vorzeichen-Modi beachten. Alles zusamen in einem "Cent-Offset-Text-for-undefined-Alterations-Fallback-Engraver" wäre sinnvoller, aber auch sicher deutlich aufwendiger, und ich bin mir keineswegs sicher, daß ich so etwas schaffen würde.

Arnold.

erich

  • Member
Re: http://lsr.di.unimi.it/LSR/Item?id=785
« Antwort #7 am: Montag, 1. Februar 2016, 17:11 »
Hallo Arnold
Ich bin dabei die reine Stimmung über eine eigene Sprachdefinition zu implementieren; um Dir einen Eindruck zu geben, wie eine C-Dur-Tonleiter dann intern gespeichert ist, gebe ich sie mal mit \displayMusic aus
        (make-music
          'NoteEvent
          'duration
          (ly:make-duration 0 0 1)
          'pitch
          (ly:make-pitch -1 0 0))
        (make-music
          'NoteEvent
          'pitch
          (ly:make-pitch -1 1 391/20000)
          'duration
          (ly:make-duration 0 0 1))
        (make-music
          'NoteEvent
          'pitch
          (ly:make-pitch -1 2 -1369/20000)
          'duration
          (ly:make-duration 0 0 1))
        (make-music
          'NoteEvent
          'pitch
          (ly:make-pitch -1 3 -49/5000)
          'duration
          (ly:make-duration 0 0 1))
        (make-music
          'NoteEvent
          'pitch
          (ly:make-pitch -1 4 39/4000)
          'duration
          (ly:make-duration 0 0 1))
        (make-music
          'NoteEvent
          'pitch
          (ly:make-pitch -1 5 -313/4000)
          'duration
          (ly:make-duration 0 0 1))
        (make-music
          'NoteEvent
          'pitch
          (ly:make-pitch -1 6 -587/1000)
          'duration
          (ly:make-duration 0 0 1))
        (make-music
          'NoteEvent
          'pitch
          (ly:make-pitch 0 0 0)
          'duration
          (ly:make-duration 0 0 1))

Ich berechne dazu die Abweichungen der Tonhöhen in reiner Stimmung relativ zur gleichstufigen Stimmung (12 edo).

 Für die Darstellung der Noten beziehe ich mich auf die reine C-Dur-Scala (5-limit tuning); d.h. die Noten sind dann als in reiner Stimmung stehend zu verstehen.  Man muss dann (nur) geeignete Versetzungszeichen erstellen, bei denen es sich hauptsächlich um eine Einbeziehung des syntonischen Kommas handelt.

Wenn ich damit durch bin, werde ich alles auf meiner Homepage zur Kenntnis geben.

Gruß Erich

 

Arnold

  • Member
Re: http://lsr.di.unimi.it/LSR/Item?id=785
« Antwort #8 am: Dienstag, 2. Februar 2016, 13:09 »
Hallo Erich,

für meine Zwecke war es quasi einfacher, denn ich habe irgendwo "regular.ly" gefunden, den Parameter auf 31 gesetzt (für 31 edo), und diese Includedatei hat (a) die Pitchdefinitionen für die Eingabe, (b) die Pitchangabe zu den Noten-Y-Koordinaten, und (c) die Vorzeichen-Intervallgrößen (die Schrittweiten für Doppel-B bis Doppelkreuz mit allen Vierteltönen dazwischen) auf dieses Raster umdefiniert.

So meine Erkenntsnisse:
Lilypond rechnet intern mit 12 edo, quasi MIDI-gerecht.
Lilypond sucht vom »diatonisch angegebenen« Ton den Pitch des vorzeichenlosen Tones, ermittelt das Intervall von dort zum vorzeichenbehafteten Ton, und sucht dann, welches Zeichen aus dem aktuellen Notationsfont für dieses Inverall darzustellen ist.

Arnold.

erich

  • Member
Re: http://lsr.di.unimi.it/LSR/Item?id=785
« Antwort #9 am: Dienstag, 2. Februar 2016, 15:19 »
Hallo Arnold

So weit ich das verstanden habe, ergibt 31 edo eine mitteltönige Stimmung, die dann eine Tonartencharakteristik hat, wenn man midi nutzt. Ist Dir das schon mal aufgefallen?

Gruß Erich

Arnold

  • Member
Re: http://lsr.di.unimi.it/LSR/Item?id=785
« Antwort #10 am: Dienstag, 2. Februar 2016, 16:26 »
Hallo Erich,

ich habe nur Details zur mitteltöigen Stimmung gelesen, so auch, daß es viele Varianten gab. Am häufigsten die 1/4-Komma mitteltönige Stimmung, bei der vier »etwas verkleinerte Quinten« sich zur reinen Dur-Terz aufaddieren. Ansonsten gab es auch 1/3-Komma, 1/6-Komma- und viele andere Varianten. Nach meinen Berechungen wäre 31edo dann etwa eine 1/4,15-Komma mitteltönige Stimmung, uns so fand ich es wert, diese einmal auszuprobieren mit einer Musik aus einer Zeit, welche noch stark von der mitteltönigen Stimmung geprägt war - z. Bsp. die leidige Frage »was ist höher oder tiefer, gis oder as?«.

Arnold

fugenkomponist

  • Member
Re: http://lsr.di.unimi.it/LSR/Item?id=785
« Antwort #11 am: Dienstag, 2. Februar 2016, 20:02 »
z. Bsp. die leidige Frage »was ist höher oder tiefer, gis oder as?«.
Hab den Rest nicht so ganz mitverfolgt, aber die Antwort hierauf ist doch eindeutig, oder? As ist höher oder gleich.

ingmar

  • Member
Re: http://lsr.di.unimi.it/LSR/Item?id=785
« Antwort #12 am: Dienstag, 2. Februar 2016, 20:17 »
na, es kommt darauf an, welches gis und welches as gemeint ist.
--ingmar

fugenkomponist

  • Member
Re: http://lsr.di.unimi.it/LSR/Item?id=785
« Antwort #13 am: Mittwoch, 3. Februar 2016, 00:16 »
Ich kenne aber keinen Fall, in dem as tiefer als gis ist (selbe Oktave natürlich vorausgesetzt), hab ich was übersehen?

Arnold

  • Member
Re: http://lsr.di.unimi.it/LSR/Item?id=785
« Antwort #14 am: Mittwoch, 3. Februar 2016, 10:55 »
Hallo,

bei Leopold Mozart (Violinschule, unter anderem unter www.imslp.org zu finden) kann man in einer Fußnote nachlesen, daß doch klar sei, daß as höher als gis ist. Auf einer andernen Internetseite habe ich sogar die (von mir nicht prüfbare) Behauptung gefunden, zu damaliger Zeit seien die Streichinstrument gar nicht in reinen Quinten gestimmt worden, sondern in leicht engeren Intervallen.
Demgegenüber wird vielen gelehrt, die Kreuz-Töne immer schön hoch zu nehmen, was (z. Bsp. unter http://www.pian-e-forte.de/texte/01inton.htm - »Fragt man Geiger, ob auf ihrem Instrument das dis oder das es höher sei, so antworten die meisten – und viele mit großer Überzeugtheit – das dis sei höher.«) ich auch schon oft gehört habe. Leitet man as und gis nur vom Quintenzirkel mit reinen Quinten ab, dann wäre auch gis höher als as. Ich vermute, diese "Kreuz ist höher"-Sichtweise kommt aus der (weit nach Mozart) aufkommenden Tradition der Leittonerhöhung. Ich selbst habe noch keine intensiven Studien mit einem veschärften Dur-Septakkord im Frequenzverhältnis 18 : 23 : 27 : 32 durchgeführt. (Der paßt auch etwas schlecht ins 31edo-System hinein)

Arnold.