読者です 読者をやめる 読者になる 読者になる

雑感・音楽等

音楽・数学・プログラミングに関する,思い付き・雑感を記す.

ラテン語版聖書

Latin Vulgate Bible with Douay-Rheims and King James Version Side-by-Side+Complete Sayings of Jesus Christ

in principio creavit Deus caelum et terram

in prīncipiō creāvit Deus caelum et terram.

単語

  • in
    • 前置詞 対奪 「~の中に/~の中で
  • principio
    • prīncipiō←prīncipium 中性名詞 単数 奪与 「最初」
  • creavit
    • creāvit<-creō 直接法 能動 完了 三人称単数「作った」<-「作る」
  • Deus
    • 男性名詞 単数 主呼 「神」
  • caelum
    • 中性名詞 単数 主呼対 「空」
  • et
    • 接続詞 andと同じ
  • terram
    • ←terra 女性名詞 単数 対 「大地」

解釈

<in前 prīncipiō名>
  • 前置詞は直後に名詞句を取り,前置詞句を作る
  • 前置詞句は動詞を含まない

よってin prīncipiōで前置詞句は終わる.意味は「初めに」

creāvit以降は

creāvit動 Deus名 [caelum名 et接 terram名]
  • etがつなぐ語はcaelumとterramだと考え,両者は対格と考える
  • creāvit動 Deus主だとわかる

lilypondの\overrideコマンドでプロパティを変更する

出力を調整する方法

lilypondでは,出力を調整するために「\set ○○」や「\override ○○」を使い,
内部のパラメータを変更する.
(出力の調整の例:音部記号を消す,符頭の色を変える,等)

「○○」の構造

出力を調整する命令の構文(角カッコの意味:その角カッコの中身を省略できる場合がある)

  • \set context.property = #value
  • \override [context.]GrobName.property = #value
  • \tweak [layout-object.]grob-property value

上記はあくまで構文なので,実際の命令ではオレンジ色の文字の部分を,実際の「プロパティの名前」に書き換えねばならない.

「○○」の決め方

では,何を変更するために,なんという「プロパティの名前」に書き換えるかは,
内部リファレンスを使って調べることになる.

以下では,どのページを見て,そのページのどこを見れば

  • \override [context.]GrobName.property = #value

における

  • context
  • GrobName
  • property

を決定できるかを以下で示す.

ここでは,テキスト スクリプト(音符の上下につく文字列)のフォントを変更する場合の手順を例示する.
(全ての場合に適用可能な手順であるかはわからない)

手順はおよそ次のようになる.

  1. 「記譜法リファレンス」で変更したいものを説明しているページを開く.
  2. 「記譜法リファレンス」から「内部リファレンス」(中心ページ)を開く(GrobNameが決まる)
  3. 「中心ページ」から「下位ページ」を開き,その中からpropertyに相当する部分を見つける.
  4. 「中心ページ」から「上位ページ」を開き,その中からcontextに相当する部分を見つける.

見るべきページ

  1. 「LilyPond — 記譜法リファレンス」を参照する.
    • テキストスクリプトのフォントを変更したいので,「テキスト スクリプト」の項目を参照する.
    • その下部に「参照」という項目があり,「内部リファレンス: TextScript」がある
      • GrobNameTextScriptとなる.
  2. リンクより,内部リファレンス「TextScript」を参照する.(中心ページ)
    • ページ下部に「This object supports the following interface(s): font-interface, grob-interface, instrument-specific-markup-interface, item-interface, self-alignment-interface, side-position-interface, text-interface and text-script-interface.」がある.
    • ページ上部に「TextScript objects are created by: Text_engraver.」がある.
      • 今回は,フォントを変更したいので,font-interfaceが関連しそうなので,ここにアクセスすべきだと判断する.
  3. 中心ページからのリンクより,内部リファレンス「font-interface」を参照する.(下位ページ)
    • 「User settable properties:」以下の記述で,「font-name (string)」があり,これがフォント名を指定するための変数だと判断する.
      • propertyfont-nameとなる.
  4. 中心ページからのリンクより,内部リファレンス「Text_engraver」を参照する.(上位ページ)
    • ページ下部に「Text_engraver is part of the following context(s): CueVoice, DrumVoice, Dynamics, GregorianTranscriptionVoice, KievanVoice, MensuralVoice, PetrucciVoice, TabVoice, VaticanaVoice and Voice.」
      • 普通の楽譜(Cue:CueVoiceやドラム譜:DrumVoice,ネウマ譜等のAncientNotationの楽譜:GregorianTranscriptionVoice・KievanVoice・MensuralVoice・PetrucciVoice・VaticanaVoice,タブ譜:TabVoice―ではない楽譜)のテキストスクリプト(強弱記号:Dynamics―でない文字)を扱うので,Voiceを使用すべきと判断する.
        • contextVoiceとなる.

以上より,

  • \override [context.]GrobName.property = #value

  • \override Voice.TextScript.font-name = #value

となる.

ここで,valueは,
下位ページに「font-name (string)」とあったので,文字列形式であり,フォント名をダブルクォーテーションで囲んだものを書けばよいとわかる.
入力すべきフォント名の調べかたは,lilypond 2.18.0でテキスト スクリプトのフォント変更 - 雑感・音楽等の最後の方に示した.

lilypond 2.18.0でテキスト スクリプトのフォント変更

変更方法

下記黄色太字でフォント変更できた.

\version "2.18.0"
\language "deutsch"
sopI = \relative c' {
	\clef soprano
\override Voice.TextScript.font-name=#"Kozuka Mincho Pr6N"
	r2 c'^"漢字かんじabc"
}
bas = \relative c {
	\clef bass
	c1^"漢字かんじabc"
}
\book{
  \score {
  \new PianoStaff<<
      \new Staff \sopI
      \new Staff \bas
    >>
  }
}

使用可能なフォントファミリーを調べる

フォント変更

  • \override Voice.TextScript.font-name=#"ここにフォントファミリー名を入力"

使用可能なフォントファミリーを調べるコマンド(cmd.exeで実行した)

  • lilypond -dshow-available-fonts
    • コンソール画面で文字化けしたので,上記コマンドで出力される文字列をファイルに保存する.
    • lilypond -dshow-available-fonts 2> lily.txt

下記は,lily.txtの一部.

  • 行頭に"family"とある行を見て(family Kozuka Mincho Pr6N
  • "family"と半角スペース1文字を無視して,残りの文字列(Kozuka Mincho Pr6N)を
  • 行頭に"family"を含まない行から,使用したいフォント名を見つける.
    • 同じ行にあり,コンマで区切られた名前は同じフォントを指している?
      • 「Kozuka Mincho Pr6N」,「小塚明朝 Pr6N」,「Kozuka Mincho Pr6N R」の場合はいずれも成功した.
      • 「小塚明朝 Pr6N R:style=R」とした場合はフォント変更に失敗した.
  • 「ここにフォントファミリー名を入力」に入力する(\override Voice.TextScript.font-name=#"Kozuka Mincho Pr6N")
family Kozuka Mincho Pr6N
 Kozuka Mincho Pr6N,小塚明朝 Pr6N,Kozuka Mincho Pr6N R,小塚明朝 Pr6N R:style=R,Regular
family Informal Roman
 Informal Roman:style=Normal,obyčejné,Standard,Κανονικά,Regular,Normaali,Normál,Normale,Standaard,Normalny,Обычный,Normálne,Navadno,Arrunta
family Palace Script MT
 Palace Script MT:style=Regular
family Copperplate Gothic Light
 Copperplate Gothic Light:style=Normal,obyčejné,Standard,Κανονικά,Regular,Normaali,Normál,Normale,Standaard,Normalny,Обычный,Normálne,Navadno,Arrunta
family Bradley Hand ITC
 Bradley Hand ITC:style=Normal,obyčejné,Standard,Κανονικά,Regular,Normaali,Normál,Normale,Standaard,Normalny,Обычный,Normálne,Navadno,Arrunta
family Yu Mincho
 Yu Mincho,游明朝:style=Regular

メモ

"Prolongation"―シェンカー理論の「延長」?

カデンツと実曲との懸隔

カデンツ・ウアザッツ・構造・骨格:T-[X]-D-T (X:無/D2/S) (島岡和声の表記)
+対位法・流れ→実曲?
実曲に要されるもの

  • 拍節の均衡感(4小節ごと・8小節ごと:楽節)
  • →<埋め草>を使う
    • 代理和音・クリシェ
    • 非和声音・旋律音・修飾音

ポピュラー音楽の常套句

「お決まりの」にあふれた/の組み合わせでできたポピュラー音楽

  • 25
  • 4536
  • 456
  • etc.

「お決まりの」\simeq骨格?

常套句をいかに飾るか・美しくするか

www.nicovideo.jp
動画0:15のコード進行

  • IV7/VI IV7/VI VIb I/V (IV#m7-5)
  • VIb I/V \simeq V V
  • VIb I/Vにする効果
    • 前二つのが同じコードなのと対比して進行感を出す
    • 拍点を稼ぐ―延長

「骨格」と「埋め草

比重:骨格<埋め草

  • 骨格・常套句の乱用→目新しさが失われる,情報量が下がる
  • 埋め草→特色・個性?

「骨格」の「埋め草」化

  • 過剰な転調
    • 乱雑・薄っぺらい?
美とエントロピー(情報量)
  • 美しい=情報量が大きい(下図のx=0.5)
  • 過剰な単純さ・つまらない=情報量が小さい(下図のx<<0.5)
  • 過剰な目新しさ・個性の表出=情報量が小さい(下図のx>>0.5)

https://upload.wikimedia.org/wikipedia/ja/a/a8/Entropy_coin.png

問題の解き方・考え方―Haskellプログラミングと力学の問題

Haskellプログラムを書いていて感じたことがある.
それは,

  • Haskellでプログラムを書くこと
  • 物理の文章題を解くこと

が似ていることだ.


両者の考え方の共通点として感じたのは

  1. 最も大事なことが,何の値を求めたいのか明確にすること
  2. 問題の条件を「数式」や「ソースコード」として表現する方法が要求される
  3. 次元解析のような考え方が有効

ということだ.

1. 求めたい値を明確にすること

何よりも大事だと思う.
プログラムの文法を知らなくても,数式変形の方法を知らなくても,
これができなくては,問題を解けない.

物理の問題なら問題文を読み,これを念頭に置きながら,
立式,式変形(「求めたい値=○○」になるように式変形を進める)すればよい.

2. 問題条件を「数式」・「ソースコード」として表現する方法

物理の問題で言えば,自分が覚えている数々の公式の中から,
問題を解くのに有効な公式を引っ張り出すこと.

これらは教科書や授業などで扱われる部分だと思う.

これらは理解が重要だと思う.つまり,丸暗記のみで対応できない点.
数式もソースコードも言葉・言語だ.なまけなければ理解できる……はず.

※「丸暗記のみする」ことと「しっかり理解するため,多くのパターンを結果的に暗記してしまうほど勉強する」ことは違う.

3. 次元解析の考え方

これは,公式の作り方に近いもの.

  1. まず,求めたい値にどんなパラメータが影響しているか,を考える.
    • e.g. 加速度aには,力Fと物体の質量mが関係してる
  2. それから,そのパラメータが求めたい値にどう影響するのかを考える.
    • e.g. 加速度aは,力Fに比例し,質量mに反比例する

手元にある値・データ・パラメータをどう変形・変換して,求めたい値にするか,を考える.
関数プログラミングとはパイププログラミングのようなプログラミングのことです。」(引用元:http://www.mew.org/~kazu/material/2015-fp.pdf p.108)

12音と群論

ガロア理論の頂を踏む』を読んで,思い付きでやってみた.

12音:C, Cis, D, ...をそれぞれ0, 1, 2, ...と対応させる.
(ここではC=0としているが,Cis=0やD=0としても変わらない.つまり,移調してよい.)

加法に関する群

C=0から半音ずつ,12回上ると,Cに戻る.(\cong C_{12}:位数12の巡回群
これは12の剰余類(\boldsymbol{Z}/12\boldsymbol{Z})で,加法に関して群をなす.

乗法に関する群

(\boldsymbol{Z}/12\boldsymbol{Z})はそのままでは積に関して群をなさない.
そこで既約剰余類群(\boldsymbol{Z}/12\boldsymbol{Z})^{*}を考える.

(\boldsymbol{Z}/12\boldsymbol{Z})^{*}=\{\overline{k} | gcd(k,12)=1, 1 \leq k \leq 12-1 \}=\{\overline{1},\overline{5},\overline{7},\overline{11}\}

\{1,5 \equiv -7 (mod 12),7,11 \equiv -1 (mod 12)\}は,
C=0に対して,{半音上,完全四度上≡完全五度下,完全五度上,長七度上≡半音下}となる.
これは,エドモン=コステールの「親和性」に出てくる音度に含まれる(「親和性」ではこれに加え,完全一度と完全八度がある).

haskell do構文

失敗

import System.Environment
main::IO()
main=
  do
    args<-getArgs
    argsl<-length args  --Couldn't match expected type ‘IO a0’ with actual type ‘Int’
    (print.show) argsl

成功

import System.Environment
main::IO()
main=
  do
    args<-getArgs
    let argsl=length args
    (print.show) argsl
import System.Environment
main::IO()
main=
  do
    argsl<-length<$>getArgs
    (print.show) argsl

参考ページ

qiita.com