2019年01月08日

クラシック音楽館:アリス・紗良・オットのラヴェル

 NHK の「クラシック音楽館」にピアニストのアリス・紗良・オットさんが出るというので、見てみました。だいぶ以前だけど、この人がインタビューされているのを読んだことがある。楽譜を丹念に読み込んで、そこに示されている作曲者の意図を読み取ろうとする立場に立たれているようなので、関心を持っていた。

 演奏の前に、指揮者のジャナンドレア・ノセダさんのトークがあって、そこでもアリスさんに言及されていた。やはり、「音楽に対して誠実な人だ」という評だった。今回の演目はラヴェルのピアノ協奏曲(ト長調)だが、そのアプローチがどう出るか。

 第一楽章は、こじんまりとまとまってしまった感じ。第二主題のホ長調のところはえらくあっさり過ぎてしまった。下の譜例のあたりとかも、もうちょいオーケストラを強引に引っ張っていくぐらいに突っ走ってもよかったんじゃないのかな。

20190107-1.png

 第二楽章は、うまくオーケストラとピアノが一体化していた。特に、再現部でコーラングレがメロディーをとるところ、ソリストがコーラングレ奏者とアイコンタクトをとりながら弾いていた。下の譜例の赤で囲んだところ、ピアニストとしては粘りたくなるんだけど、ほとんど粘ってなかった。ここで粘られると、コーラングレが困っちゃうんだよな。

20190107-2.png

 第三楽章。出るところは出て、オケに溶け込むところは溶け込んで、というきれいな演奏だったけど、このへんとか、もうちょい暴れてよ!とツッコミたくなった。

20190107-3.png

 演奏終了後、コーラングレ奏者にアリスさんが何度も拍手を送っていたのが印象的だった。自分がイチバン、ってタイプじゃないよなあ。それでいてソリストとして第一線で活躍し続けているのはすごいと思う。

 ところで、この曲はどの演奏を聴いてもいつも思うんだけど、金管の入りが遅れがちだよね。なんでなんだろう。こういうところとか。プロでも難しいんでしょうかね。

20190107-4.png

 もう一つ、上の譜例を出して思い出したんだけど、譜例の最初の小節のトランペットの F# 音、一小節あとが正しいんじゃないかな。今回の演奏はそうしてた気がする。(あの F# 音は耳障りで目立つので、鳴ってたら気がつくと思う。確信は持てないけど。)

posted by toshinagata at 00:33| 日記

2019年01月06日

「子供の科学」Raspbian 用の LÖVE (Love2D) インストーラ

 前回の続き。「子供の科学」バージョンの Raspbian(ジブン専用パソコン2)に LÖVE (Love2D) を入れるインストーラを作りました。

[love2dx-install.tgz (18.1 MB)] (2019/1/19 バージョン)

 ダウンロードして、ダブルクリックなどで開く(自動的に開くかも)と、下のようになります。"love2dx-install" フォルダを、適当なフォルダ(下の図では Download フォルダ)に移動します。

20190105-1.png

 "love2dx-install" フォルダをダブルクリックして開きます。

20190105-2.png

 "install.sh" ファイルをダブルクリックします。

20190105-3.png

 こういうウィンドウが出てくるので、「端末で実行する」ボタンを押します。(「実行」でもいいのだけど、メッセージが何も出ないので、何が起きているのか全くわからず不安になります。)

20190105-4.png

 ターミナルウィンドウが開いて、処理が始まります。"Update MIME database..." の処理はけっこう時間がかかるので、しばらく待ってください。

20190105-5.png

 ターミナルウィンドウが消えたら、インストール完了です。デスクトップに LÖVE のアイコンができているはずです。(アイコンが LÖVE のものになっていない場合は、フォルダをいくつか開いたり閉じたりしてみてください。)

20190105-6.png

 ダブルクリックすると、"NO GAME" の画面が出ます。

20190105-7.png

 前回にも書きましたが、raspi-config の Advanced Options/GL Driver で、"GL (Fake KMS)" を選ぶ必要があります。LXTerminal を開いて、sudo raspi-config と打ち込み、Advanced Options → GL Driver → GL (Fake KMS) とたどっていってください。設定を変更したあと、再起動が必要です。

 簡単なサンプルゲームを一緒にインストールできるようにしたいな。まだネタがないので、それは今後の課題ということにしておく。

posted by toshinagata at 00:19| 日記

2019年01月03日

「子供の科学」Raspbian に LÖVE (Love2D) をインストールする

 前回の続き。「子供の科学」Raspbian(ジブン専用パソコン2)に LÖVE (Love2D) をインストールする。Raspbian Stretch の apt-get でインストールされる Love2D はバージョンが古いので、現時点での最新バージョン (11.2) をインストールしてみる。

 まずはビルドしないといけない。Love2D Wiki の Building ページを元に進める。Raspbian 上でターミナルを開いて、次のように順に打ち込む。

1. 必要なパッケージをインストールする。たくさんありますよ。

sudo apt-get install autotools-dev automake libtool libdevil-dev libluajit-5.1-dev libphysfs-dev libsdl2-dev libopenal-dev libogg-dev libvorbis-dev libflac-dev libflac++-dev libmodplug-dev libmpg123-dev libmng-dev libturbojpeg libtheora-dev

3. Love2D のソースを取ってくる。ダウンロード ページからもらってきてもよいし、ターミナルで下のように打ち込んでもよい。

curl -L https://bitbucket.org/rude/love/downloads/love-11.2-linux-src.tar.gz >love-11.2-linux-src.tar.gz

4. 展開して、新しくできた love-11.2 ディレクトリに移動する。

tar xvfz love-11.2-linux-src.tar.gz
cd love-11.2

5. ビルドする。"| tee xxxx.log" の部分は、ターミナルに表示されるメッセージを保存しておくためだけのものなので、省略してもよい。


./configure | tee configure.log
make -j 2 | tee make.log
sudo make install

はじめ make -j 4 でビルドしていたが、成功することもあるのだけど、途中でフリーズしたり変なエラーが出たりして、イマイチ不安定。あまり負荷をかけないように、make -j 2 に変えた。

 /usr/binlove が、/usr/libliblove-11.2.so がインストールされる。

 love で実行すると、"NO GAME" の画面が出るはずなのだけど、こうなってしまった。表示がなんかおかしい。これはドライバ絡みだな。

20190103-1.png

 sudo raspi-config の Advanced Options/GL Driver で、"GL (Fake KMS)" を選ぶと、正しく表示された。

20190103-2.png

 なお、"GL (Full KMS)" を選ぶと、Love2D の画面がフルスクリーンになってしまう。下の通り。VNC viewer の画面いっぱいに Love2D の画面が広がっているのがおわかりでしょうか。これ、Love2D の画面がフルスクリーンで表示されているということです。今回は X window の中で Love2D を動かしたいので、これではうまくない。何か回避する設定があるのかも知れないけど、まだ見つけられていません。

20190103-3.png

 "GL (Fake KMS)" の設定で、「さかなは踊る」を動かしてみた。ちゃんと動いた。音も出てます。

20190103-4.png

 ビルドできることはわかった。あとは、簡便にインストールできる方法を確立することだな。deb パッケージを作るのはハードルが高すぎるので、インストーラスクリプトを書くのが手っ取り早い。(2019/1/6 追記:書きました。記事はこちら。)

posted by toshinagata at 15:51| 日記

2019年01月01日

「子供の科学」バージョンの Raspbian を試してみる

 年が明けました。旧年中は各方面にお世話になりました。今年もよろしくお願いします。

 この正月休みは、ラズパイネタを仕込もうと思っている。しばらく離れていたけど、今年はぼちぼち進めていきたい。今日は、「子供の科学」の「ジブン専用パソコン2」の OS イメージを使って起動してみた。

20190101-1.png

 「KoKa」こと「子供の科学」のロゴがデスクトップピクチャになっている。なお、この画面は VNC viewer を使って Mac からリモート接続してスクリーンショットを撮っているので、メニューバーに VNC 接続のアイコンが出ている。素の状態だとこのアイコンは出ないので、念のため。

20190101-2.png

 このシステムで、Love2D を使ってみたい。ラズパイに Love2D をインストールする話は以前に取り上げたけど、X11 でなくフレームバッファに直書きする設定で進めていた。この設定は、ラズパイ 1/Zero のように非力なマシンでも実用的な速度で動作するというメリットがある一方、ラズパイ単体でプログラミングをするには向いていない。「ジブン専用パソコン」のユーザー層には、「普通の」(= X11 の)デスクトップの中で Love2D のウィンドウが開いて、その中でプログラムが動作する方が、はるかに使いやすいはず。

 実は Raspbian Stretch にも Love2D のパッケージがある。sudo apt-get install love でインストールできる。これは、X11 に対応しているので、ちゃんと Love2D のウィンドウが開く。ただし、0.9.1 とバージョンが古い。なんとか 11.x 系列にできないものかな?(2019/1/3 追記:できました。記事はこちら。)

20190101-3.png
posted by toshinagata at 23:11| 日記

2018年12月28日

iMac 21.5 インチ (Late 2012) のメモリ増設・SSD 交換

 家族で共用している iMac (late 2012) の動作が遅い、と不満が出ていた。特に、Safari がめちゃくちゃ遅い。OS が Yosemite というのも一因だが、「最近さらに遅くなってきた気がする」という声もあったので、HDD がへたっているかも知れない。そこで、HDD を SSD に交換することにした。ついでに、メモリを 8G から 16G に増設しようと思った。

 この「ついでに」が余分だった。この作業、めっちゃくちゃ大変。下のようなページを見て、これならできるかなと思ってやり始めたんだけど…

…いやまあ一応できたんだけど、一時はどうなるかと思った。あとからこの動画を見たんだけど、先にこれを見ておいたらもう少しスムーズだったかな。

 一番大変だったのは、大きい方のロジックボードを外すところだった。スピーカーのネジを外してずらしておかないと、非常に困難だった。この件、動画には出てくるんだけど、上のウェブサイトでは触れられてなかった。最初スピーカーをずらさずに作業していて、ボードを外すことはできたのだが、戻すことがどうしてもできなかった。

 なんとか組み立て直すことに成功した。立ち上げてみると、明らかに体感速度が速くなった。へとへとになったけど、家族も喜んでくれたので、良しとしよう。

タグ:Mac
posted by toshinagata at 23:37| 日記

2018年12月24日

wxLuaApp: コンソールで print なしに値を表示

 GitHub - wxLuaApp の件。立ち上げるとコンソールが出てきて、ここで1行の Lua コードを実行できる。

20181224-1.png

 実は今までいくつか Ruby を組み込んだアプリを開発して、同じような機能を実装していた。Ruby では式と文の区別がないので(注1)、実行した Ruby コードが返した値を表示するようにしていた。ところが、Lua では式と文が区別されている。このため、「式」を実行しようとするとコンパイルエラーになってしまう。

20181224-2.png

 そこで、Lua コードをコンパイルして、コンパイルエラーが出たら return を直前につけて再度コンパイルするようにしてみた。これなら、文は文として、式は return 文として実行される。return 文から戻ってくると値がスタックに残っているので、それを表示すれば「式の値」が表示されたように見える。

20181224-3.png

 コンマで区切った複数の値が返せるのは Lua ならでは、というところですね。

注1:「式と文、評価と実行、そして副作用 ―― プログラムはいかにして動くのか【前編】」郡司啓氏、Rubyist Magazine 0039号

 Lua/LuaJIT は、思いついたことをすぐに試せる手軽さがいい。Love2D (LÖVE) も LuaJIT が記述言語です。うちの坊(中学2年)が Love2D で RPG 風ゲームのコーディングをやっておりますが、始めて半年ぐらいで、かなり自由に自分のアイデアを試せる段階まで来ました。「Scratch の経験はあるけど、テキストベースのプログラミングは初めて」という人には、格好のプログラミング環境じゃないかと思う。難易度は BASIC とそんなに変わらないし、BASIC よりも現代主流の言語につながりやすいと思う。もっと流行ってほしいな。

Twitter で #love2d_jp というハッシュタグがあるようですが、私は Twitter やってないので…

posted by toshinagata at 23:32| 日記

2018年12月16日

ギターの発表会

 坊の通っているギター教室で、初めての発表会があった。近くのライブハウスを借り切って、1人2〜3曲ずつ披露する。坊は、クラシックギターで「アルハンブラの思い出」、エレキギターで Mr. Children の「Hanabi」と「ルパン三世のテーマ '80」。どれもまずまずの出来だった。特に、ルパンは一部自分でアレンジを加えたりして、カッコよく仕上がった。ギターって楽器は自由であることが最大の魅力だから、どんどん自分好みに曲を変えていけばいいと思うんだよね。

 坊は最初はクラシックギターから初めて、コード弾きの弾き語りを少しやったあと、ソロギターに移行した。南澤大介さんや井草聖二さんの楽譜を買って、いろいろ挑戦している。

 私は押尾コータローさんのアルバムなども以前から聴いていたけど、「ソロギター」というジャンルが存在するのを知ったのは Jazz Guitar Blog さんの記事からだった。少し前から Jazz Guitar Blog さんにアクセスできなくなっていて、どうしたんだろうと心配している。とても楽しいブログだったので、なんとか復活していただきたいのだが。

タグ:音楽
posted by toshinagata at 21:25| 日記

2018年12月15日

あおり運転:やられた側に非はあるのか

 東名高速あおり運転の死傷事故で、地裁の判決が出ました。法解釈の点からは難しさが残るんだけど、心情的には「被告は厳罰に処されるべき」と感じる人が多い事案と思います。あまりにも自己中心的だから。

 ところが、これほどひどい事案でなければ、「あおられるような運転をする方が悪い」という意見もちらほら見かけます。今日も東名高速でドアミラーを折った男が逮捕されていますが、そのニュースへのコメントにも「煽られたひとにも非がある」という書き込みがある。

 本当に「非がある」と言えるのか? なぜあなたがそれを判断できる?

 「マナーを守れ」っていうけど、自動車の運転には高度な技術が必要。マナーを守りたいと思っていても、守るだけの技術を持ってない人もいる。今日の東名高速の件、岡崎市でしょ。今回の被害者の方は違うかもしれないけど、岡崎市って下手なドライバーがめちゃくちゃ多いんですよ。そこそこの規模の地方都市なんだけど、公共交通機関が発達してないので、みんな車に乗るしかない。自動車教習所も、あんまり丁寧に技術を教えずに「まあ、こんなもんでいいんじゃない」と卒業させてしまう。それで、岡崎には東名の IC があるから、下手くそなまま高速に乗っちゃうわけですよ。東京−名古屋を長距離走る人から、三河ナンバーが蛇蝎のごとく嫌われているのはそのためだと思っています。私も迷惑かけていた一人ですが。

 下手くそな奴は高速に乗るなって? でも、車で移動するしかない人だっているじゃないですか。親の介護のために毎週週末に慣れない運転で長距離移動しないといけなくなった、でも毎週新幹線に乗る金はない、という人に、高速に乗るな、と言うんですか。いったい何の権利があってそんなことが言えるの?

 危険な車線変更するのは確かにいかんと思う。でも、技術が足りなくてそうしてしまった人は、その時点ですでに恐怖を感じてるんですよ。生まれた時から運転が上手なあなたにはわからんかもしれんけどね。そんなにしつこくあおらなくても、クラクションを一発鳴らすぐらいで十分な制裁になってますよ。

 結局、「あおられるような運転をする方にも問題がある」と主張する人は、自分の運転技術が高いことから、自分が偉くなったように勘違いをしているだけだと思います。道路は公共物なんだから、あらゆる人に開かれてないといけない。それは、自動車の運転技術が低い人に対しても同様。運転技術が低い人がいることも想定した上で、安全運転を心がけるのが本当の運転マナーというものでしょう。

 みんな、余裕がないんだろうな、と思う。うちでは、他の車がいかにもイライラした様子で幅寄せしたり車間を詰めたりしていると、「あれはウ◯コが漏れそうになって焦ってるんや」と解釈することにしています。そうすると、そんなに腹も立たない。レクサスのシートをウ◯コで汚したくないでしょうからねぇ。また、逆に高速で遅い車がいると若干イライラすることもあるけど、追い抜きざまに見ると、たいがい自分の親と同じような世代の人がハンドルを握っているわけですよ。そうすると、大目に見てあげようという気持ちにもなります。

タグ:社会
posted by toshinagata at 21:32| 日記

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| 日記
email.png
Powered by さくらのブログ