2018年12月02日

ジェリコの戦い

 ヒメが聞いている「ラジオ英会話」で、ある登場人物が Jericho の町を訪問した、これは世界最古の町と言われている、という会話が出てきた。えっ、Jericho ってあの、旧約聖書に出てくるジェリコですか? 今でもあるって本当かよ、と調べてみると、Wikipedia に出てました。

死海の北西部にある町。古代オリエントの中でも古い町で、紀元前8000年紀には周囲を壁で囲った集落が出現した。世界最古の町と評されることもある。世界で最も標高の低い町でもある。(Wikipedia 「エリコ」より)

 ヒメに「旧約聖書に出てくるジェリコの話、知ってるか?」と聞いたら、「知らん、どんな話?」と返されて、はたと詰まってしまった。「ジェリコの町は壁に囲まれててな、…(詰まる)…その壁が崩れるねん。」と、まるで「# 聖書の話を雑に紹介する」みたいな説明になってしまった。正しくは、ヨシュア記ですね。ジェリコの町を攻略した時に、ヨシュアが神の命によって、祭司たちに角笛を吹かせ、民に叫ばせたところ、それに応じて壁が崩れた、という話。これでもまだ雑だけど。

 この話にちなんだ「ジェリコの戦い」という黒人霊歌は有名です。楽譜と歌詞を探してみたけど、いろんなバージョンがあってよくわからない。歌詞つきの YouTube をいくつか聴いて、自分で採譜してみた。

20181202-1.png

 古い吹奏楽関係者は、モートン・グールドの「狂詩曲『ジェリコ』」をご存知でしょう。この曲には、上の黒人霊歌が重要なモチーフとして使われています。私もかつて吹奏楽で演奏しました。フルスコアが読みづらくて難儀した記憶があります。

 この曲の「壁が崩れた」あとの静かな場面で、サックスのメロディの伴奏が「アルトクラリネット2本+バスクラリネット2本+バリトン2本」だけになる部分がある。うちのバンドにはアルトクラリネットがなかったので、音が抜けたままだったのです。仕方がないので、3番クラの隣の子と2人でこっそり(?)アルトクラのパートを吹いてました。

20181202-2.png

 バリトンパートも合わせれば、抜けているのは最初の2小説の Gis 音だけなんだけど、空虚5度だから目立つじゃないですか。でも、誰も指摘しなかったんだよね。私たちが吹いているのを指揮者が気がついてたかどうかは知りません。たぶん知らなかったんじゃないかな。

タグ:音楽 社会
posted by toshinagata at 01:10| 日記

2018年11月27日

wxLuaApp でデスクトップアプリを作ってみた

 GitHub - wxLuaApp の件。デスクトップアプリを作ってみた。けっこう調子良くサクサク書ける。

 高速フーリエ変換が必要だったので、Lua のライブラリを探した。実は、ベンチマークプログラムの SciMark for Lua の FFT が十分実用的だった。LuaJIT のウェブサイトの "Performance" ページでベンチマークに使われているもの。たったこれだけ。16384 点のフーリエ変換がほぼノータイムで完了する。

function fft_bitreverse(v, n)
  local j = 0
  for i=0,2*n-4,2 do
    if i < j then
      v[i+1], v[i+2], v[j+1], v[j+2] = v[j+1], v[j+2], v[i+1], v[i+2]
    end
    local k = n
    while k <= j do j = j - k; k = k / 2 end
    j = j + k
  end
end

function fft_transform(v, n, dir)
  if n <= 1 then return end
  fft_bitreverse(v, n)
  local dual = 1
  repeat
    local dual2 = 2*dual
    for i=1,2*n-1,2*dual2 do
      local j = i+dual2
      local ir, ii = v[i], v[i+1]
      local jr, ji = v[j], v[j+1]
      v[j], v[j+1] = ir - jr, ii - ji
      v[i], v[i+1] = ir + jr, ii + ji
    end
    local theta = dir * math.pi / dual
    local s, s2 = math.sin(theta), 2.0 * math.sin(theta * 0.5)^2
    local wr, wi = 1.0, 0.0
    for a=3,dual2-1,2 do
      wr, wi = wr - s*wi - s2*wr, wi + s*wr - s2*wi
      for i=a,a+2*(n-dual2),2*dual2 do
        local j = i+dual2
        local jr, ji = v[j], v[j+1]
        local dr, di = wr*jr - wi*ji, wr*ji + wi*jr
        local ir, ii = v[i], v[i+1]
        v[j], v[j+1] = ir - dr, ii - di
        v[i], v[i+1] = ir + dr, ii + di
      end
    end
    dual = dual2
  until dual >= n
end

 その後のグラフ表示も上の動画の通りで、何の問題もない。ああもちろん、16384 点のグラフを全部真面目に描画したら重くて大変なので、画面解像度に合わせて間引きはしています。LuaJIT 楽しい。

 メモリは結構食っているようです。上の状態で、25 MB ぐらい占有している。double 型 16384×2 点を Lua の数値型で保持しているわけだから、オーバーヘッドはまあ大きいだろうな。ffi.new(double[]) みたいにすれば少し節約できるかもしれないけど、そこまでしなくてもいいかなと思う。二次元データを使うようになったら考えたほうがいいかも。

posted by toshinagata at 23:25| 日記

2018年11月24日

ナツミカン色づき始める

 今年もナツミカンが色づき始めた。30個ぐらい実ってるかな。

20181124-2.jpg

 最近雨がほとんど降ってないので、実の表面が汚れていて、カビみたいなのがつき始めているものもある。このまま放置するとたぶん腐ってしまうので、水をかけて洗ってみた。太陽の光が水滴に反射してきれいだったので、写真を撮ってみたんだけど、腕前の関係で大してきれいには見えておりません(苦笑)

20181124-1.jpg

 今年の春に収穫した実は、味は悪くなかったのだが、果汁が少なくてスカスカだった。今年の夏はなるべく潤沢に水をやったつもりだけど、出来はどうだろうか。

タグ:園芸
posted by toshinagata at 13:47| 日記
email.png
Powered by さくらのブログ