バイオリンと録音と

クラシックのコンサート、バイオリンの演奏方法、バイオリンのグッズについての記事多し。他、楽譜(Lilypond , Sibelius)、和声学、作曲、DTM関連を取り扱っております。

2016年12月

『2本のバイオリンのための組曲』を登録しておきました。
https://drive.google.com/open?id=1ynOSxS_4CD97qe05fArVmIE9hvtV6TD5

新垣さんを聴いてみた

年末、時間ができたので、新垣隆さんの新作を聴いてみた。
あの事件以来どうなったのか、心配はしていたのだが現役を続行ということで、ほっとする。

さて、楽しみしにしていた新アルバムの以下を聴いた。

新垣隆:交響曲「連祷」- Litany-
ピアノ協奏曲「新生」
流るる翠碧(東京室内管弦楽団/新垣隆)
 

 うーん。うーん。うーん。

なんかイメージと全然違う。前作の交響曲「HIROSHIMA」にあった複雑さや仕組みの面白さ、破天荒な時間軸感覚とか全部抜けてしまって、ぜんぜんおもろしくない。私のクラシック音楽の作曲家に対する思いは、

「やりたいことをやり尽くせ」

ということである。これではまったく気の抜けたサイダーだ。

構造的に仕組みが単純すぎるし、オーケストレーションも平凡すぎる。意外性もまったくないので聴いていてかなり苦痛を感じた。これだったら他ジャンルの才能があると世間が煽てているミュージシャンが交響曲やピアノ協奏曲を書いてみましたレベルに過ぎない。

私は、現代の作曲家が、無調で書くべきとか全然思っていないが、安易に過去の技法に頼った作風はもっと嫌いである。新ロマン主義な現代音楽が劣化していった歴史をみてきたからなおさらにそう思う。

なので、一般の人が理解できないレベルの作品でも、何かを感じさせる作品や、聴いてムッとするような何かを持つことが、作曲家としては大切なのだろう。そういう意味では、藤倉大の作品とかは、好きではないが好感がもてる。彼は何かをやりたいと思う気持ちが大きいからである。

今回は、リクエストがあってわざと平易すぎる作風にしたのかもしれない。でも、私が新垣さんに望むのは、世界で最高の作品を書いてやろうとする圧倒的な力をもった作品である。少なくとも師匠の三善晃の作品を完全に超えてやろうという野心的なものを期待する。

とは言え、新垣さんは、何かの枷とかストレスをかけた方が良い作品がかけるショスタコーヴィッチのようなところもあるのだろう。制約の多いオペラとか演劇作品だとうまくいく気がする。

と書いてしまったが、当然、怒る人もいるだろうが、以下の作品を聴いていただければ、私の言っていることを理解してくれる人もいるであろう。クラシックの作曲家は誰よりも志が高くなくては、100年以上演奏されるようにはなりません。打倒ベートーヴェンであって、妥当ベートーヴェンでは困るのである。

●参考作品(やりたいことをやり尽くしている交響曲とピアノ協奏曲)

松村禎三:ピアノ協奏曲第1番
松村禎三:ピアノ協奏曲第2番
松村禎三:交響曲

三善晃 :交響三章
三善晃 :ピアノ協奏曲

矢代秋雄:交響曲
矢代秋雄:ピアノ協奏曲

一柳慧 :ベルリン連詩
一柳慧 :ピアノとオーケストラのための「空間の記憶」

武満徹 :アステリズム

柴田南雄:交響曲『ゆく河の流れは絶えずして』

八村義夫:錯乱の論理~ ピアノとオーケストラのための

西村朗:2台のピアノと管絃楽のヘテロフォニー




 

クレーメルさんからの贈り物

昨日、ネットを徘徊していると、なんと探しに探していた楽譜がIMSLPにアップされており、狂喜乱舞状態。

その曲はクレーメルさんが2016年6月6日のサントリーホールの演奏でのアンコール曲である。演奏プログラムは生涯忘れえない阿修羅のごとく凄まじいものであったが、そのアンコール曲として選曲されたこの静かな曲は、この世のものとは思えない絶品の美しさで、史上最高楽器のアマティの貫禄を見せつけていた。
ということで、クレーメルさんが見つけてきた秘蔵の曲としてバイオリン・マニア界でも極めて有名になっている曲なのだ 
演奏会の様子は、ここに記載してある。
 
この楽譜は出版されておらず、東京文化会館資料室とか、音楽大学の図書館とかといろいろと探してみたのだがなかなか見つからない。こんなときに頼りになるのがアカデミアの店主である。この方は今まで出版された世界中のクライスラーの楽譜のデータベースをもっており、これを使って調べてもらったところ、2004年にカール・フィッシャー社から出版されたのだが、そのまま絶版になっていることがわかった。

 わかったのは良いのだが肝心の楽譜はどうなっているんだ、

カール・フィッシャー社はさっさと出版しろ!」

と思うのだが、権利が結構複雑なようなのである。それとこの曲のオリジナル写真譜面も探しているのだがわからない。たぶん、米国のどこかの音楽大学に保管されていると類推している。

 そんなこんなで、ようやく、しかもIMSLPで見つけたのだが、どうもカール・フィッシャー社の書き方ではないので、おそらく別ルートでの楽譜なのだろう。結構怪しい感じがするが、大きな音の間違いはなさそうな感じである。このピアノ譜面は音符の配置にさまざまな細やかな配慮があるので、楽譜出版業界のプロが書いていると思える。ある演奏目的で特別につくられたものなのかもしれない。

 
・疑問箇所

 ・題名がPreghiraであるが、日本語名で「晩祷歌」とある。ということは、もしかしたら国内で演奏された可能性がある??
 
 ・出だしがmfになっているが、これはppでないとおかしい気がする。ただクライスラーはあえてこうした指定をする場合もあるので、間違いとは言い切れない。
 
 ・バイオリンパートが出版楽譜としては貧弱である。強弱記号が少ない。ただ面白いことに運指は記載されているので、演奏目的で作成されたものかもしれない。なお強弱記号が明瞭でなくてもバイオリンはどう弾くべきかは、ピアノのパートが明白に示しているので演奏上の問題はないとは思う。

 ・クライスラーがよくやる決め所のバイオリン重音奏法がない。演奏上の都合で省いてしまった可能性があるような気がする。 → クライスラー本人の録音を聴く限り、それは杞憂であった。

それにしても、このピアノパートは、音が入れ組んでおり、和音構成も複雑なので難易度が高い。オリジナルのピアノ・コンチェルトも超えた精密な奏法で、とてもクライスラーが書いたとは思えない。ラフマニノフにも楽譜をみてもらったのか、さらに音を加えてあるのかもしれない。

不思議な書き方をしており、右手の四分音符が通常ではありえない位置に書かれているので、誤植かなあとおもって、原曲のコンチェルトの楽譜もみてみたのだが、そのようになっている。

なぞの音符


こうした書き方に何の意味があるのだろうか。ペダルを踏んだら違いがでないのでは?

ピアノを弾いている人にもどういう弾き方になるのか訊ねてみたが、要領を得ず。普通のピアノ教室の先生や音大生レベルでは解釈できないのであろう。この曲をもってコンクールにチャレンジするような専門家に尋ねてみたいものである。

 次に音源も探してみたが、現在発売されているのは、この1枚のみ。バイオリン・マニアご用達の西崎崇子さん。レア作品の収集家にとってはうれしいバイオリニストである。

ラフマニノフ ピアノ協奏曲第2番 ハ短調 Op. 18 (編曲:クライスラー)
- Piano Concerto No. 2 in C Minor, Op. 18 (arr. F. Kreisler)
 
 この録音で聴く限りでは、先の疑問箇所の四分音符のところでルバート気味にしているのがわかる。でも全体的にテンポをゆらしているので、それがその奏法なのかどうかはわからない。

他、演奏上、気になるところがピアノパートで大きなアルページョがでてくるこの場面。

Preghiera難所

バイオリン側としてはどう対処するのが正解なのだろう。アルページョの前でいったん音を止めるのかなあと思ったのだが、これではダサい演奏になってしまう。西崎さんは音をデクレッシェンドしたピアニシモでキープして大きなアルページョが終わるタイミングで次のメロディへとつないでいた。

 なるほど、そうなんだと感心する。

 西崎さんの演奏は上質ではあり録音してくれていることに感謝である。ただクレーメルさんは別次元であり、神と対話しているかのような美しさは超絶的。現役バイオリニストでこの音を凌ぐ人はいないと断言できる。まあ、ピアノが超天才のリュカ君だし、教会のようなサントリーホールの音響効果もあるので、各段の差があるのは仕方ないところであろう。CD化を望みたいところである。

 ということで、この曲に興味のある方は積極果敢に演奏してみてほしい。バイオリンパートは技術的に難しくない。ただ音色の良さはかなり問われる曲であるのでビブラートの数は正確に数えて演奏する必要があるであろう。できれば録音もしてみたい気がする。

この曲の楽譜は(Arranements and Transcriptions のタブの一覧の中
 
II. Adagio sostenuto
For Violin and Piano (Kreisler)
 
 ●後書き

 動画でもいろいろあったので、聴いてみたがひどい演奏が多い。この曲はバイオリニストとしての技量と音色に対するこだわり方が如実に現れるごまかしができない曲なのであろう。それにしても、いろいろな版があるみたいである。その中でも驚天動地のクライスラー本人の演奏があり、すごくびっくりした。やはりこの弾き方でないとダメだろう。本人の演奏は説得力がある。
面白いのが、Piu mossoのところのピチカートを弓弾いているところ。ここはやはりピチカートの方よいだろう。ということは、この版は、この演奏後にクライスラーが修正しているのであろう。それにしても、この曲が書かれたのが、太平洋戦争が始まる前夜の1940年。クライスラーの思いはいかばかりのものかと思う。日本にも来日しているしね。 

 

●またまたサプライズ

あのクレーメルさんが、この曲の新譜を出しているではないか。
世界中のバイオリニストはクレーメルさんの後を追っているので、この曲は今後随分と演奏させることになるであろう。楽しみである。

●新譜

今なら格安で手に入るらしい。もちろん予約しておいた。こんなのを聴かないようではバイオリンマニアの資格なしである。史上最高のアマティの音を聴けるのだから。ただバイオリンの音をまったく理解していない最新鋭を気取るクレージーな録音技師が多いのでちょっと心配ではある。バイオリンの音にマルチコンプレッサーやファイナライザーのようなエフェクターは不要である。弱音が台無しになるからである。難しいのは、ホールの残響であるが、これだけは技師のセンスや才能が左右する。

弦楽器奏者ならlilypondを使え:その2

前回の記事『弦楽器奏者ならlilypondを使え』は、難しい内容であったので、読者がついてこれるのか心配であったのだが、閲覧数が相当多くなっている。難しくて読み直しているのか、あるいは興味があって読んでくれているのか不明だが、さすがバイオリンマニア達だと褒めたいところではある。でも、

「アップボー、ダウンボー、指番号の書き込みが楽になるとかいう類人猿レベルで満足してもらっては困るのである。」

もっと弦楽器奏者にとってすごいことが楽ちんにできるのがlilypondである。それがこれだ。知らなかったとは言ってほしくない。

謎の楽譜

上の楽譜、バイオリン弾きなら誰でも見たことがあるであろうし、この楽譜をみて悪夢を思い出すくらいの人ならきっと良い先生についてシゴかれた人達であろう。つまり、バイオリン弾きは、この楽譜を以下のように29通りの練習をするようにと指導されるはずである。

地獄練習


まさに地獄練習の道先案内人。そう、あの悪夢を思い出しましたか? これは超有名なクロイツェル教本のNo.2である。私はこの曲を卒業するのに3か月かかったが、難しいパターンの場合、楽譜を別途作成してレッスンに挑んだものだ。

この楽譜の様々なパターンをほとんど自動でつくれるのがlilypondのすごさ。たったの2行で済んでしまう恐るべき楽譜ソフトだ。

変更する箇所は以下のみ。

violin = \relative c'' {
 
      \changePitch { c16. c32 c16.c32 }{ ⇒ 追加する
        c e g f e f d e c e g f e f d e |
        c e g f e f d e c d e d c d b c |
        a c e d c d b c a c e d c d b a |
        a c e d c d b c a b c b a b g a |
      } ⇒ 追加する
      \bar "|."
}

\changePitch { c16. c32 c16. c32 }
⇒ この意味は、付点16分音符+32分音符でパターンを作れという意味となる。

で、下の楽譜例(変更するソース)を以下のサイトに丸ごと張り付けて楽譜を作成してみてほしい。


\changePitch { c16. c32 c16. c32 }のところを変更してみると楽しいぞ。

これをスラー付きとかにしてみようかなあ?

\changePitch { c16. (c32 c16.) c32 }{

さらに最後の音をスタッカートにする? OK!

\changePitch { c16. (c32 c16.) c32-. }{

ボーイングつけたろうか? All right!

\changePitch { c16. \downbow(c32 c16.) c32-.\upbow }{

スフォルツァンド付けたらんかい Yes,sir !

\changePitch { c16. \downbow(c32 c16.) c32-.\sfz\upbow }{

このレベルになったら、もはや第八位界の魔法呪文である。 Waoo... !! Wonderful !

\changePitch { c8 \tuplet 3/2 \samePitch{ c16-. (c-. c-.) }}{

さらに複合技 難度Cレベル! 27番のパターンも少し手をくわえればこのとおり。

\override TupletBracket #'transparent = ##t 
      \set subdivideBeams = ##t
      \set baseMoment = #(ly:make-moment 1/8)
      \changePitch { \tuplet 3/2 {c16-. \samePitch {c-. c-. }} }{

「どや。おもろいやろ。」

ついつい大阪弁になってしまうぐらい痛快さである。

●楽譜例(変更するソース)

  関数を張り付けているので、とても長いソースになっているが、変更箇所は一番下の方にある1行だけなので、弦楽器奏者ならビビらないようにしてほしい(水色の文字のところね)。もっとすっきりしたソースにする方法も記載しておいた。
\version "2.18.2"

% パターンで入力するときに便利なスニフレット
% \include "changePitch.ly"
% 
% これを使うには、以下のサイトからchangePitch.lyをダウンロードして  
% http://gillesth.free.fr/Lilypond/changePitch/ 
% 以下に入れる
% C:\Program Files (x86)\LilyPond\usr\share\lilypond\current\ly
%% changePitch.ly version Y/M/D = 2016/01/01
%% for lilypond 2.16 or higher
%% LSR :
%%   http://lsr.di.unimi.it/LSR/Item?id=654
%% Last release here :
%%   http://gillesth.free.fr/Lilypond/changePitch/
%% This directory contains also a doc called :
%%   changePitch-doc.pdf
%% Last changes (the more recent to the top) :
%%    - new changPitch-doc.pdf (made with Context => http://wiki.contextgarden.net/ )
%%    - changePitch checks now, in his pattern arguments, if there is notes with ties,
%%      and automatically groups them with the tieded note in a \samePitch section.
%%      It is possible to desactivate this behaviour, for pieces made with previous
%%      release of changePitch. See doc...
%%    - \tuplet in lilypond 2.18 have now a 'duration property ! It is no more 
%%    reserved for notes and rests  => we have to change some pieces of
%%      code in change-pitch function.
%%    - \changePitch : a single s as the last event of newnotes parameter
%%      will give you the ending rests of the pattern (if there), and two s
%%      also the beginning ones. If pattern ends with a note, a single 
%%      ending s will have no effects.
%%    - changePitch.ly is now \language independant (no more #{ c #})
%%    - new algorithm for make-notes-list, change-pitch
%%      and has-notes? (shorter and safer)
%%
%%%%%%%%%%%%%%%%%%%%%%%%% some utility functions %%%%%%%%%%%%%%%%%%%%%
#(define (name-of music)
 (ly:music-property music 'name))

#(define (has-notes? music)
"Return true if there is at least one note in `music, false otherwise."
 (or (eq? (name-of music) 'NoteEvent)
     (let ((e (ly:music-property music 'element)))
        (and (ly:music? e) 
             (has-notes? e)))
     (let loop ((es (ly:music-property music 'elements)))
        (and (pair? es)
             (or (has-notes? (car es))
                 (loop (cdr es)))))))
 
%% An EventChord is sometimes used as a wrapper in Lilypond, so we have to check
%% if a chord is a standard chord with notes. We could have used has-notes? but
%% this version is perhaps more efficient. 
%% Optional events name like 'RestEvent can be included.
#(define (note-or-chord? music . otherEvent)
"Is music a note or a chord with notes ?"
(let ((name (name-of music)))
 (or (memq name (cons 'NoteEvent otherEvent))
     (and (eq? name 'EventChord)  ; have this chord at least one note ? 
          (let loop ((es (ly:music-property music 'elements)))
             (and (pair? es)
                  (or (eq? (name-of (car es)) 'NoteEvent)
                      (loop (cdr es)))))))))

#(define (expand-q-chords music); for q chords : see chord-repetition-init.ly
(expand-repeat-chords! (list 'rhythmic-event) music))

#(define (clean-music mus)
"Try to reduce the number of sequential music"
(let ((name (ly:music-property mus 'name)))
  (cond
    ((eq? name 'SequentialMusic)
       (ly:music-set-property! mus 'elements (fold-right
          (lambda (evt prev-list)
            (if (eq? (name-of evt) 'SequentialMusic)
              (append (ly:music-property (clean-music evt) 'elements) prev-list)
              (cons (clean-music evt) prev-list)))
          '()
          (ly:music-property mus 'elements))))
    ((eq? name 'SimultaneousMusic)
       (ly:music-set-property! mus 'elements
                (map clean-music (ly:music-property mus 'elements))))
    ((memq name (list 'RelativeOctaveMusic 'UnrelativableMusic))
         (ly:music-set-property! mus 'element (clean-music
                  (ly:music-property mus 'element)))))
 mus))

%%%%%%%%%%%%%%%%%%%%%%%%%%%%% changePitch %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#(define cPInsertInPattern (gensym))
#(define cPSamePitch (gensym))
#(define cPSamePitchEnd (gensym))
#(define fakeTie (gensym))
#(define cPPatternEnd (gensym))

#(define (make-notes-list music)
"Make a list with each element will be of one of these types :
  1- a note, a chord, a rest
  2- an integer, indicating the number of notes to skip in pattern ( The user will
     indicate that, by a corresponding number of skips (s or \\skip) in `newnotes 
     parameter of \\changePitch )
  3- a list of musics, to be inserted between 2 notes of pattern, and added with
     the \\insert function, inside `newnotes"
(let ((res '())     ; the list to fill
      (prev #f))
  (define (fill-notes-list evt)
    (let ((tags (ly:music-property evt 'tags))
          (name (name-of evt)))
      (cond
        ((memq cPInsertInPattern tags)             ; a music added by \insert
            (ly:music-set-property! evt 'tags
                          (delq cPInsertInPattern tags))     ; remove the tag
            (if (integer? prev)(set! res (cons prev res)))
            (set! prev (if (pair? prev)(cons evt prev)(list evt))))  ; a list
         ((memq name (list 'SkipEvent 'SkipMusic))
            (if (pair? prev)(set! res (cons prev res))) ; keep the reverse order
            (set! prev (if (integer? prev) (1+ prev) 1)))
       ; ((memq name (list 'EventChord 'NoteEvent 'RestEvent))
         ((note-or-chord? evt 'RestEvent) ; a note, a chord, or a rest
            (if (or (pair? prev)(integer? prev))(set! res (cons prev res)))
            (set! prev evt)
            (set! res (cons evt res)))
         (else
          (let ((elt (ly:music-property evt 'element))
                (elts (ly:music-property evt 'elements)))
            (if (ly:music? elt) (fill-notes-list elt))
            (if (pair? elts)(for-each fill-notes-list elts)))))))
(fill-notes-list music)
(if (or (pair? prev)(integer? prev))(set! res (cons prev res)))
(reverse res)))

%%%%%%%%%%%%  used inside the inner function change-one-note
#(define (copy-duration from to)  ; from and to as EventChord or NoteEvent
(let ((max-dur #f)); in theory, 2 notes in a chord can have a different duration
  (music-map (lambda (x)            ; get main duration from `from
              (let ((dur (ly:music-property x 'duration)))
               (if (and (ly:duration? dur)
                        (or (not max-dur)
                            (ly:duration<? max-dur dur))); take the greater
                 (set! max-dur dur))
                 x))
              from)
  (music-map (lambda (x)            ; set duration to duration of `to
               (if (ly:duration? (ly:music-property x 'duration))
                  (ly:music-set-property! x 'duration max-dur))
               x)
             to)))

#(define (copy-arti from to) ; from and to as EventChord or NoteEvent
(let* ((es-from (ly:music-property from 'elements))
       (es-to (ly:music-property to 'elements))
       (arti-from (if (null? es-from) 
                    (ly:music-property from 'articulations)
                    (filter 
                      (lambda(x)
                        (not (ly:duration? (ly:music-property x 'duration))))
                      es-from))))
  (if (null? es-to)                       ; NoteEvent
    (ly:music-set-property! to 'articulations  
              (append (ly:music-property to 'articulations) arti-from))
    (ly:music-set-property! to 'elements  ; EventChord
              (append es-to arti-from)))
  ; copy also 'tags and 'to-relative-callback            
  (ly:music-set-property! to 'tags 
    (append (ly:music-property from 'tags)(ly:music-property to 'tags)))
   (if (null? es-to) 
      (ly:music-set-property! to 'to-relative-callback 
          (ly:music-property from 'to-relative-callback))
      (begin
        (ly:music-set-property! to 'to-relative-callback 
            ly:music-sequence::event-chord-relative-callback)
        (ly:music-set-property! (car es-to) 'to-relative-callback
            (ly:music-property from 'to-relative-callback))))
    ))

%% del-arti is called for all notes but the first of a \samePitch section. 
#(define (del-note-arti note-or-chord)
(ly:music-set-property! note-or-chord 'articulations '())
(ly:music-set-property! note-or-chord 'tags '())
(ly:music-set-property! note-or-chord 'elements 
  (filter (lambda(x) 
              (and (ly:duration? (ly:music-property x 'duration))
                   (ly:music-set-property! x 'articulations '())))
          (ly:music-property note-or-chord 'elements))) ; can be empty
(music-map  ;; del all caution accidentals
  (lambda(x)(if (eq? (name-of x) 'NoteEvent) (begin
               (ly:music-set-property! x 'force-accidental #f)
               (ly:music-set-property! x 'cautionary #f)))
             x)
  note-or-chord))

#(define (check-for-ties pattern)
"A tied note will get automatically the same pitch than the previous note (= the 
note with the tie symbole)"
(define (rel-callback x p)                    ; set pitch to the prev value
   (ly:prob-set-property! x 'pitch p)
   p)
(let ((tieNote? #f)
      (startSamePich? #f)  ;; see \samePitch later
      (stopSamePich? #f))
  (map-some-music
    (lambda (x)
      (and 
        (note-or-chord? x)
        (let ((tags (ly:music-property x 'tags)))
          (if (not (memq cPSamePitch tags))
            (begin
              (set! tieNote? (or (pair? (extract-named-music x '(TieEvent)))
                                 (memq fakeTie tags))) 
              (set! stopSamePich? (and startSamePich? (not tieNote?)))
              (set! startSamePich? (and tieNote? (not startSamePich?)))
              (cond 
                (startSamePich?
                  (ly:music-set-property! x 'tags (cons cPSamePitch 
                     (delq fakeTie (delq cPSamePitchEnd tags)))))
                (stopSamePich? 
                  (ly:music-set-property! x 'to-relative-callback rel-callback) 
                  (if (not (memq cPSamePitchEnd tags))
                    (ly:music-set-property! x 'tags (cons cPSamePitchEnd tags))))      
                (tieNote?
                  (ly:music-set-property! x 'to-relative-callback rel-callback)             
                  (ly:music-set-property! x 'tags (cons cPSamePitch 
                     (delq fakeTie (delq cPSamePitchEnd tags))))
                  (set! startSamePich? #t)))))
          x)))
    pattern)))

#(if (and (defined? 'cPCheckForTies)
          (not cPCheckForTies))
    (define (check-for-ties pattern) pattern))

#(define (change-pitch pattern newnotes)
"The scheme function of \\changePitch, `pattern and `newnotes as music."
(let ((seq-list '())           ; list of transformed patterns
      (skip-notnote-event? #f) ; #t if a \skip or an \insert is found in newnotes
      (same-pitch-section? #f) ; #t if we are in the 2nd pattern note of a\samePitch section
      ;(dummy-note #{ c4 #})    ; \language dependant -:(
      (dummy-note (make-music 'NoteEvent ; to avoid pbs with pattern without any notes
                              'duration (ly:make-duration 2 0 1) ;
                              'pitch (ly:make-pitch -1 0 0))) ;
      (pattern2 (make-sequential-music (list 
           (check-for-ties pattern)          ; { c4~ c8 } => \samePitch { c4~ c8 }
           #{ \tag #cPPatternEnd s4 #})))    ; to detect the end of pattern
      ;; (pattern2 #{ $pattern \tag #cPPatternEnd s4 #}) 
      (last-notes-list #f))    ; buffer 
 (set! seq-list (cdr  ; skip dummy notes
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; loop ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  (let loop ((notes-list (cons dummy-note (make-notes-list newnotes))); see make-notes-list
             (pat-list (cons dummy-note (circular-list pattern2)))
             (res '())) ; the list to fill
    (if (or (null? notes-list)(null? pat-list)) ; pat-list may be a regular list in the loop
      (reverse res)               ;;;;;; return the list in the right order
      (let ((x (car notes-list))  ;;;;;; go deeper, taking 1st elt of each lists
            (evt (ly:music-deep-copy (car pat-list))))
       (cond
       ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 
        ((pair? x)                   ; x is a list of musics, added with \insert in newnotes
          (set! skip-notnote-event? #t)      ; for events between 2 pattern notes
          (set! last-notes-list notes-list)  ; for section "else" of this cond statement
          (loop (cdr notes-list) pat-list (append x res))) ; append x to res
        ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
        ((note-or-chord? evt)         ; evt in pattern is a note or a chord (with notes)
          (set! last-notes-list notes-list)  ; for section "else" later
          (cond
            ((ly:music? x)  ;;;;;; the elt of notes-list is a note or a chord
               (if same-pitch-section? ; x is used several times. Copy arti of x only to first
                 (set! x (del-note-arti (ly:music-deep-copy x)))) ; note of \samePitch section
               (copy-duration evt x)  ; evt = from, x = to
               (copy-arti evt x)
               (let ((tags (ly:music-property x 'tags)))
                 (cond               ; are we in a \samePitch section ?
                   ((memq cPSamePitch tags)    ; yes, first,remove the tag
                      (ly:music-set-property! x 'tags (delq cPSamePitch tags))
                      (set! same-pitch-section? #t)) ; then set the flag        
                   ((memq cPSamePitchEnd tags) ; last note of \samePitch
                      (ly:music-set-property! x 'tags (delq cPSamePitchEnd tags))
                      (set! same-pitch-section? #f))))      ; unset the flag
               (set! skip-notnote-event? #f); stop deletion of not-notes event.
               (if same-pitch-section?
                   (loop notes-list (cdr pat-list)(cons x res))    
                   (loop (cdr notes-list)(cdr pat-list)(cons x res)))) ; next new note              
            ((integer? x)   ;;;;;; user want to skip over the current evt note. We also
               (set! skip-notnote-event? x) ; don't add any events bis next pattern note
               ;; (format #t "x : ~a\n" x)  ; for testing
               (cond ((= x 1)                                      ; only one s
                        (loop (cdr notes-list)(cdr pat-list) res)) ; next notes-list elt
                     (else                                         ; several successive s
                        (set-car! notes-list (1- x))               ; for the next loop
                        (loop notes-list (cdr pat-list) res))))))  ; the next evt only
        ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;        
        ((or (and
               (not (eq? 'TimeScaledMusic (name-of evt))) ; \tuplet have now a 'duration !
               (ly:music-property evt 'duration #f))  ; current evt in pattern is not a note
             (not (has-notes? evt)))
           (cond ((memq cPPatternEnd (ly:music-property evt 'tags)) ; last evt of pattern
                    (let ((x (car notes-list)))
                      (if (and (integer? x)
                                (or (null? (cdr notes-list))        ; last elt ?
                                    (and (null? (cddr notes-list))  ; 2nd to last and last is
                                         (pair? (cadr notes-list))))) ; a \insert section
                        (cond 
                           ((= x 1)
                              (set! skip-notnote-event? x)
                              (loop (cdr notes-list) (cdr pat-list) res))
                           (else 
                              (set-car! notes-list (1- x))
                              (loop notes-list (cdr pat-list) res))))
                        (loop notes-list (cdr pat-list) res))) ;; ignores evt
                  (skip-notnote-event? (loop notes-list (cdr pat-list) res))
                  (else (loop notes-list (cdr pat-list)(cons evt res)))))
        ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
        (else
          (let ((e (ly:music-property evt 'element))
                (es (ly:music-property evt 'elements))
                (empty? #f)) ; don't add to res if #t
           (if (ly:music? e)
             (let ((new-e (loop notes-list (list e) '())))
               (ly:music-set-property! evt 'element
                 (case (length new-e)
                   ((0) (set! empty? #t)
                        new-e)
                   ((1)(car new-e))
                   (else (make-sequential-music new-e))))))
           (if (pair? es)
             (let ((new-es (loop notes-list es '())))
               (ly:music-set-property! evt 'elements new-es)
               (set! empty? (and empty? (null! new-es))))) ; #t if both empty 
           
           (let ((next-new-notes (if (or same-pitch-section? 
                                         (and (integer? skip-notnote-event?)
                                              (> skip-notnote-event? 1)))
                                    last-notes-list 
                                    (cdr last-notes-list))))
              (if empty? (loop next-new-notes (cdr pat-list) res)
                         (loop next-new-notes (cdr pat-list) (cons evt res))))))))))))
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; end loop ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;  
 (let ((relativize (lambda(m)
        (let* ((clean-newnotes (clean-music newnotes))
               (name (name-of clean-newnotes)))
            (if (memq name (list 'RelativeOctaveMusic 'UnrelativableMusic))
               (make-music name 'element m)
               m)))))
     (case (length seq-list)
        ((0) (make-music 'Music 'void #t))
        ((1) (relativize (car seq-list)))
        (else (relativize (clean-music (make-sequential-music seq-list))))))))
        
changePitch = #(define-music-function (parser location pattern newnotes)
                                                          (ly:music? ly:music?)
"Change each notes in `pattern by the notes (or rests) given in `newnotes.
If count of events doesn't match, pattern is duplicated repeatedly or truncated."
(let* ((expand-q (lambda (music) (expand-repeat-chords!
   (cons 'rhythmic-event (ly:parser-lookup parser '$chord-repeat-events))
   music)))
       (pattern (expand-q pattern))
       (newnotes (expand-q newnotes)))
 (change-pitch pattern newnotes)))

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% enhancement functions, working with \changePitch pattern newnotes

samePitch = #(define-music-function (parser location music) (ly:music?)
"Inside the `pattern parameter of the \\changePitch function, all notes grouped 
by this function will have the same pitch, according to the current note of
`newnotes parameter of \\changePitch."
(let((not-first? #f)
     (last-note #f))
  (map-some-music
    (lambda (x)
      (cond
        ((note-or-chord? x)
           (if not-first?     ; set all pitches to the pitch of the first note
             (ly:music-set-property! x 'to-relative-callback 
                (lambda (x p)                    ; set pitch to the prev value
                    (ly:prob-set-property! x 'pitch p)
                    p))
             (set! not-first? x)) ; do nothing for first note
           (ly:music-set-property! x 'tags (cons
                   cPSamePitch  ; add tag cPSamePitch to x
                   (ly:music-property x 'tags)))
           (set! last-note x)   ; save the note x
           x)
        (else #f)))
    music)
  (if last-note              ; the last saved EventChord
     (ly:music-set-property! last-note 'tags (cons
           cPSamePitchEnd    ; add cPSamePitchEnd tag, delete cPSamePitch tag
           (delq cPSamePitch (ly:music-property last-note 'tags)))))
  music))

%% this function should be no more needed, as copy-arti should avoid pbs
%% in relative mode and \samePitch
absolute = #(define-music-function (parser location music) (ly:music?)
"Make `music unrelativable. To use inside a \\samePitch function in relative
mode."
(make-music 'UnrelativableMusic 'element music))

insert = #(define-music-function (parser location music) (ly:music?)
"Using this function inside the `newnotes parameter of the \\changePitch
function, allow you to insert and remplace by `music, all music between one note
and his following, in the `pattern parameter of \\changePitch, ."
#{ \tag #cPInsertInPattern $music #})

%%%%%%%
#(define (n-copy n music)
(cond
  ((> n 1)(ly:music-deep-copy (make-sequential-music (make-list n music))))
  ((= n 1) music)
  (else (make-music 'Music 'void #t))))

nCopy = #(define-music-function (parser location n music)(integer? ly:music?)
(n-copy n music))

%% same effect as { \repeat unfold n s } but \nSkip works inside the `newnotes
%% parameter of \changePitch.
nSkip = #(define-music-function (parser location n)(integer?)
"Return \\skip \\skip \\skip ... n times."
#{ \nCopy #n s #})
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% shortcuts
% default values for patI and patII, if the user do not define
% them, before using \cPI and \cPII
% patI ={ c8. c16 }      % not \language independant
patI = #(make-music 'SequentialMusic 'elements (list  
          (make-music 'NoteEvent 'duration (ly:make-duration 3 1 1) 
                                 'pitch (ly:make-pitch -1 0 0))
          (make-music 'NoteEvent 'duration (ly:make-duration 4 0 1)
                                 'pitch (ly:make-pitch -1 0 0)))) 
% patII = { c4. c8 }
patII = #(make-music 'SequentialMusic 'elements (list  
          (make-music 'NoteEvent 'duration (ly:make-duration 2 1 1) 
                                 'pitch (ly:make-pitch -1 0 0))
          (make-music 'NoteEvent 'duration (ly:make-duration 3 0 1)
                                 'pitch (ly:make-pitch -1 0 0)))) 


cPI = #(define-music-function (parser location newnotes) (ly:music?)
#{ \changePitch \patI $newnotes #})

cPII = #(define-music-function (parser location newnotes) (ly:music?)
#{ \changePitch \patII $newnotes #})

#(define cP changePitch)

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% 譜サイズを変更する場合。通常値は20
#(set-global-staff-size 24)

\header {
  %title = "Kreutze Etudo"
  %subtitle = "No.2"
  
  tagline = ##f

\paper 
{
  % 用紙の設定。 初期設定はa4。a3,b3,b4なども可能
  #(set-paper-size "a4")
  
  % 最初のページ番号。ここでは2で設定している。
  first-page-number=2
  
  print-first-page-number = true
  top-margin = 18
  bottom-margin = 24
  left-margin = 16
  right-margin = 10
}

dn=\downbow
up=\upbow

FOURTH=\markup  { \italic \tiny "IV"}
DOL=\markup  { \italic \tiny "dolce"}
MDOL=\markup  { \italic \tiny "molto dolce"}
TEN=\markup  { \italic \tiny "ten."}

global = {
  \key c \major
  \time 4/4
  \tempo "Allegro moderato"
  %\temp "Allegro moderato"
}

violin = \relative c'' {
      \global
      % Music follows here.
      \changePitch { c16. c32 c16. c32}{
        c16 e g f e f d e c e g f e f d e |
        c e g f e f d e c d e d c d b c |
        a c e d c d b c a c e d c d b c |
        a c e d c d b c a b c b a b g a |
      }
      \bar "|."
}
      
      

% 最後の7小節のみをコンパイル。大きなファイルの場合はこれを使えばよい。
%showLastLength = R1*7

\score {
  
  % MIDI出力を表現を豊かにする。
  % \unfoldRepeats \articulate <<
  
  \new Staff \with {
    % 小節の最初に楽器名を表示するには、下のコメントの%を消す。
    %instrumentName = "Violin"
    midiInstrument = "violin"
  } \violin
  
  % >>
  
  \layout {
    
    % 第一小節にインデントをつけない設定にしている。
    indent = #0
    
  }
  
  \midi {
    
    \tempo 4=100
  }
}


今回はlilybin.comのサイトで\changePitchを使うためにそのソースを埋め込んだので見づらいが、本来はFrescovaldiなどのアプリケーションにこのライブラリを必要な場所に格納し、ソースの先頭に以下のように記述しておくとよい。ライブラリと呼んでしまったが、lilypondの専門用語ではSnippetと呼ぶ。

●changePitch.lyの入手先
  http://gillesth.free.fr/Lilypond/changePitch/

●ライブラリ(Snippet)の格納場所の例(Windows10の場合)
 
C:\Program Files (x86)\LilyPond\usr\share\lilypond\current\ly
changePitch.ly


・ソースの記述例
 以下の水色の部分をソースに張り付けると、\changePitchが使えるようになる。
\version "2.18.2"

% パターンで入力するときに便利なSnippet
 \include "changePitch.ly"

\header {
  title = "Kreutze Etudo"
  subtitle = "No.2"
  tagline = ##f









 

弦楽器奏者ならlilypondを使え:その1

マスネの『タイスの瞑想』は、弦楽器店にいったときに頻繁に試奏されている曲の一つである。これはG線の低域、E線の高域、A線、D線ハイポジションなどを満遍なく試せるし、響きもよいためであろう。

あるとき試奏中に、この曲の編曲者はヴィルヘルミだったかなとと疑問に感じ、家へ帰って楽譜を見直すとマルシックとあった。ヴィルヘルミはG線上のアリアの方だ。我ながら超恥ずかしい。マルシックといえば、カール・フレッシュ、ジャック・ティボー、ジョルジェ・エネスクの師匠であり、バイオリン弾きなら誰でも知っている馴染みの名である。

通常は、ピアノとのデュオで演奏されることが多いが原曲はオペラの間奏曲である。この曲は日本楽譜出版からも出版されている。



気になってこちらも見てみると、楽譜編成が、Sop, Alt, Ten, Bassとあるが、歌詞が書かれていないのでもしかしたらサックスなのかなあ。フランスの曲であるし。wikiでみると以下のように書かれていた。

コーラスはマスネによって、オペラのセットのカーテンを後ろで歌うフルコーラスと演奏会場のオーケストラの間に座った5人から8人のソロによって歌うように指示されている。

ふ~ん。そうなのか。アンコール曲としてオケで演奏するときもあるが、このパートはどうなっているのか。省略しているのか、他の楽器で代用しているのかなあ。

これは、あとで調べるとして、この曲の楽譜をLilypondの練習にもなると考え、作成してみた。ボーイングは、海外のプロ奏者の動画をいろいろと参考にしてつけておいた。楽譜がスラーの途中でも弓を返しているところがある。もしかしたら歌詞の抑揚に合わせて、つけているのかもしれないとも思うのだがどうだろう。

そういえば、この曲をムターの演奏でサントリーホールで聴いたことがあるが、完璧にすごかった。搭載されている演奏エンジンがまるで違うという感じで、ムター流の濃厚な美しさと貫録にあふれていた。こうした通俗名曲をグイグイと聴かせる力が本物のバイオリニストの力なのだろう。お稽古曲として感じてしまうような演奏ではバイオリニスト失格である。

 

さて、Lilypondの方だが、やはり実践的に使ってみないとわからない部分がたくさんあり、いろいろ調べながらデータ入力していった。特にテキストの位置を微妙に動かしたりする部分をどうするのかの調査に時間がかかったが、まあどうにかなった。

Lilypondはかなり優れた楽譜ソフトであり、弦楽器奏者は、ボーイングや運指を頻繁に変更するので、このような仕様はうれしい。ソースだからテキストであり、通勤中にスマホを使って修正することが簡単にできてしまうのである。

特にダウンボーアップボーの変更や指番号の変更など、Sibeliusなどのグラフィックソフトウェアでは、位置調整のために手数のがかかる部分もLilypondでは、それを考えなくてもよいので簡単である。もちろん細かく調整もできる。
指番号をつける場合は、音名に「-」+「数字」を付けるだけ。
c-1 d-2 e-3 f-4

弓の指定は以下のようにする。
c4\downbow d\upbow

こうして、若干苦労しながら作成したのが以下である。楽譜を見たければ、以下のソースファイルを以下の画面に張り付けて、「Preview」ボタンを押すだけ。PDFとして保存するには右端のボタンを押してメニューを表示し、そこからdownloadを選択する。
 


※最初、以下の部分が表示されているがこれは不要なので削除。「Reset」ボタンを押すとソースが消える。

% LilyBin
\score{
{
c'
}

\layout{}
\midi{}
}

※「Preview」ボタンが動作しない場合は、「Stable」メニューからLatest Stable(2.18.2)を選択する。

●張り付けるソースファイルはこちら。
\version "2.18.2"

% 譜サイズを変更する場合。通常値は20
#(set-global-staff-size 24.3)

\header {
  title = "Méditation de Thais"
  %subtitle = "Méditation"
  composer = "Jules Emile Frédéric Massenet"
  arranger = "Martin Pierre Joseph Marsick"
  opus  = " "
  tagline = "Copyright ©2016 by Ralatalk"
}

% 日本語のタイトルはこちら
%\header {
%  title = "タイスの瞑想曲"
%  subtitle = "歌劇「タイス」の第2幕 瞑想曲"
%  composer = "作曲:ジュール・マスネ"
%  arranger = "編曲:マルタン・ピエール・ジョゼフ・マルシック"
%  opus  = " "
%  tagline = ##f
%} 

\paper 
{
  % 用紙の設定。 初期設定はa4。a3,b3,b4なども可能
  #(set-paper-size "a4")
  
  % 最初のページ番号。見開きにするために2ページから開始。
  first-page-number=2
 
  print-first-page-number = true
  top-margin = 16
  bottom-margin = 12
  left-margin = 16
  right-margin = 10
}

%
% 各種テキストの設定
%

% 弦指定
SULG=\markup { \small \left-align "sul G"}
SULD=\markup { \small \left-align "sul D"}
SULA=\markup { \small \left-align "sul A"} 

% 甘美を伴って柔らかく
DAS=\markup  { \italic \small "doux avec suavite"}
RAL=\markup  { \left-align \italic \tiny "rall."}
AT=\markup   { \italic \tiny "a tempo"}
ANM=\markup  { \italic \tiny "animando"}
PAPA=\markup { \italic \tiny "poco a poco appassionato"}
PPA=\markup  {  \right-align {\italic \tiny "poco più appasionato"}}
PIUFC=\markup { \italic \center-align {\tiny "più" \musicglyph #"f" \tiny "cresc."}}
PIUF=\markup { \italic \center-align {\tiny "più" \musicglyph #"f"}}
PIUFR=\markup { \italic \right-align {\tiny "più" \musicglyph #"f"}}
% さらに情熱的に
PMA=\markup  { \translate #'(-1 . 2) \italic \smaller "più mosso agitato" }
% 次第に遅く
CUP=\markup  { \italic \tiny "cedez un più"}
% 音を延ばす(レステ)
RES=\markup  { \italic \tiny "restez"}
% 穏やかに(カルマート)
CAL=\markup  { \italic \tiny "calmato"}
EXP=\markup  { \center-align \italic \fontsize #1 "expressif"}


global = {
  \key d \major
  \time 4/4
  %\tempo "Andante religioso"

}

TEMA={
  % 主題
  
  b2 cis4(d) |
  
  d,4.-1(e8-1
    % outside-staff-priority
    %\override Fingering.outside-staff-priority
    %\set fingeringOrientations = #'(left)
    \tuplet 5/4 {fis16 ( g fis e fis} 
    a8-4 a,\open)|
  b2.-1 cis8(d-1) |
  fis e\<(g2-3)\! dis8-1(e)|
  fis-1--\upbow ^\SULA\< g-- a--(b--)\! b4(b,-1)|
  cis2\p\upbow (d!4-2) e16( d cis d-1) |
  e2-2\< f^\RAL\f\! |
  fis^\AT\pp\downbow ~fis8(d) \tuplet 3/2 { a (d fis) }  |
  b!2\downbow\< cis4(d) \!|
  fis,2_\PIUFR\downbow~fis8.(d16) a\<(d fis a)\!|
  c!2\f d4--(e--)|
  fis!2\ff\downbow~fis8-4 dis\downbow \tuplet 3/2 { b-2 (fis-3 dis-1) }  |
  
  \tuplet 3/2 { a'4-0-4\downbow g8-4( }   \tuplet 3/2 { e-2 b-3 g-1) }
  \tuplet 3/2 {fis'4 e8\upbow( } \tuplet 3/2 { b g e) } |
  
  \tuplet 3/2 {d'!4-0-4\p\downbow a8( }  \tuplet 3/2 { fis d a) } 
  b4 (cis8-1\upbow d) 
  
  e2\downbow \f fis4--(g_\EXP--\upbow )|
  e\downbow-- fis-- b,-1--(e-3--\upbow) |
  d2\p cis^\RAL|
}

violin = \relative c'' {
  \global
  % Music follows here.
  
  \tweak self-alignment-X #-1
  \mark \markup { \bold "Andante religioso" }\break
  
  \set Score.skipBars = ##t 
  R1*2 |
  fis2\downbow\p~(fis8^\DAS d) \tuplet 3/2 { a( d fis) }  |
  \TEMA
  % ブレスを二重線で設定
  \override BreathingSign.text = \markup {\musicglyph #"scripts.caesura.straight"}
  d1^\AT\breathe |
  
  %展開部
  c'2^\ANM\mf\upbow(~c8)g a\<(e)\! |
  g4\> fis2\downbow\! \tuplet 3/2 { ais8-1--\<(cis-- e-2--)\! }|
  e2\downbow _\PIUF(~e8)b-3\upbow cis-4\upbow (g-1) |
  b4\downbow^\PAPA a2\downbow \tuplet 3/2 {cis8\<e (g)\! }|
  g4.^\SULA\f(a8) b--(fis-3--) d-1--(b-3--) |
  
  e8.\downbow(fis16) \tuplet 5/4 { e(dis e fis g) }
  g8--(e--) c\downbow-- g--\downbow |
  bes2\p a4(g) |
  a'4-0-4 g8-4(f-3) e4-3 d8-2(c)
  
  d'4.-4\< c8\!(a4.) c8-1( |
  e4.) d8(c4) a8-3 c-1 |
  
  
  f4.-2-\tweak #'extra-offset #'(-3 . 0)\ff\downbow
    e8 g-3-- f-- c-3-- as---\tweak #'extra-offset #'(0 . 2)_\PPA |
  f-3-- e-2-- g-2^"A"-- f--~f c-2--^"D" as-4--^"G" f-2-- |
  f8..^\PMA\sf(e32) e4~e8 f4-> f8-> |
  f8..\sf(e32) e4~e8 f4-> f8-> |
  f8..\sf(e32) e4~e8 
  \override Stem.direction=#DOWN
  g4--\downbow 
  (bes8--)\upbow |
  \revert Stem.direction
  bes8.\downbow\sf(g16) e(g) bes? cis e8-- f-- fis-- g--|
  
  g(fis) f(e)  g_\CUP (a\upbow) ais-1-- b-- |
  b4.-4^\SULA\p g8\dim\downbow~g e4\upbow^\RAL(cis8) |
  
  % テーマ
  fis2-3^\AT\pp~(fis8 d) \tuplet 3/2 { a( d fis) }  |
  \TEMA
  
  %
  d2^\AT~d8. 
  \override Stem.direction = #UP
  fis16-4(\<a-2 d-1 fis a)\! |
  \revert Stem.direction
  b2.\cresc cis4-1 |
  fis4.\f(d8-2\downbow) a-3^"A" (fis d-3^"D" a-4^"G")|
  g!4-3\p\< bes2-3\! cis,4-2~|
  cis8 \tuplet 3/2 {cis16\upbow(d e) } d2\downbow fis4-4 |
  a-2-- d-1-- fis-3-- a-1-- |
  a'1-4\downbow~ |
  \override TextScript.outside-staff-priority = ##f
  \override TextSpanner.bound-details.left.text = "sul G"
  
  a2-2 \breathe d,,,-2\f^\downbow\startTextSpan\<  |
  e4.-2\!(fis8)fis2~\sf\>|
  fis\p\! e-3\upbow|
  d2.(\downbow\tuplet 3/2 {cis8\upbow d e)}|
  d2.(_\CAL\tuplet 3/2 {cis8\upbow d e)}|
  d2\stopTextSpan a''\open |
  \harmonicsOn d,1\ppp\fermata |
  \bar "|."
}

% 最後の7小節のみをコンパイル。大きなファイルの場合はこれを使えばよい。
%showLastLength = R1*7

\score {
  
  
  \new Staff \with {
    % 小節の最初に楽器名を表示するには、下のコメントの%を消す。
    %instrumentName = "Violin"
    midiInstrument = "violin"
  } \violin
  
  
  \layout {
    
    % 第一小節にインデントをつけない設定にしている。
    indent = #0
    
  }
  
  \midi {
    
    \tempo 4=72
  }
}


弦楽器奏者なら怖れることはまったくない。このソースにある水色の部分を変更するだけだ。またはWeb画面に表示される楽譜の音符をクリックするとソースにカーソルが移動するので、このソースに独自のボーイングを付けたり、指番号を付けて遊んでみると、動きがわかるので積極果敢にやってみてほしい。


例)
d4.  これはD音の付点四分音符を示すが、これに2の指番号を付ける場合は、d4.-2 とする。
さらにダウンボーを付ける場合は、d4.-2\downbow とする。

注意点としては、音名がオランダ音名(c,d,e,f,g,a,b)であることである。
ドイツ語音名だと、b(ベー)はオランダ音名だとbes(ベス)になる。ドイツ音名のh(ハー)は使わない。

※このWeb画面において日本語は表示できないようだ。日本語はFrescobaldiを使えば表示できる。 
記事検索
メッセージ

名前
本文
タグ絞り込み検索
最新コメント
QRコード
QRコード
プロフィール

ららトーク

タグクラウド
QRコード
QRコード