2018年02月18日

梅一輪

 庭の梅が一輪咲きました。

20180218-1.jpg

 枯れたシダレウメが結局復活しなかったので、昨年の春に植え替えた。今年は初めての春で、うれしいことにたくさんつぼみがついている。

 花が終わった後の剪定がカギだと思うので、今回は失敗しないようにしたい。ちょっと勉強しないといけないな。

タグ:園芸
posted by toshinagata at 21:36| 日記

2018年02月17日

名フィル定期演奏会

 名古屋フィルハーモニー交響楽団の第454回定期演奏会に行ってきました。

20180217-1.jpg

 少し早く仕事を切り上げて、チケットを確かめて会場に向かう。高校生の時、500円の学生優待チケットを握りしめて大フィルの演奏会を聴きに行ったものだけど、その時のワクワクした気持ちを思い出した。

20180217-2.jpg

 開演前に、ロビーで木管四重奏のミニコンサートがあった。Ob, Cl, Fg の三重奏で、ドヴィエンヌのトリオ。原曲は 2Fl, Fg のトリオなのかな。けっこうな人だかりになっていた。高校生が15人ぐらい集団で来ていて、熱心に聴いていた。スマホで動画とっている子がいたけど、いいのか? ロビーコンサートは許されてるんかな。

 演奏会本体。第1曲は、クーネ「エレヴェータ・ミュージック」(Graeme Koehne, Elevetor Music, 日本初演)。非常に面白かった。全曲を通してほぼアップテンポの 3+3+2 リズムが貫かれているが、それに息の長い旋律がかぶさったり、細かいパッセージがフーガ風にかけあったりして、退屈させない。しかし、一番の見所は広上さんの指揮でした。指揮台の上でリズミカルに踊っていて、見飽きなかった。

 第2曲、シベリウスのヴァイオリン協奏曲、ソロはアリーナ・ポゴストキーナ。これは今ひとつ入り込めなかった。何となく先を急いでいるようで、ゆったりした伸びやかさをあまり感じなかった。前の曲から休憩なしに入ったので、こちらの気持ちがうまく切り替えられなかったかも。

 休憩をはさんで第3曲、アッテルベリの交響曲第6番ハ長調「ドル・シンフォニー」(Kurt Atterberg, Symphony No. 6)。アッテルベリはスウェーデンの作曲家だそうです。第1楽章は平凡な印象だったが、第2楽章が出色。第3楽章はリズミカルな曲想で、広上さんがまた踊りまくっていた。楽しく終われてよかった。

 名フィルを聞くのは初めて。音が個性的で、各パートの自己主張が強い印象だった。曲や指揮者との相性もあるのかもしれない。こういう自由な感じのオケはけっこう好きですね。

タグ:音楽
posted by toshinagata at 11:01| 日記

2018年02月14日

将棋の局面を左右反転させると?

 「左右反転と将棋盤」(Ponanza 作者、山本さん)。理論的には、将棋のコマの動きはすべて左右対称だから、「ある局面」と「それを左右反転した局面」からスタートすれば、そこから勝利に至る確率は当然同じ。だから、評価関数は左右対称であるはずなんだけど、実戦的には評価関数を左右非対称にした方が勝率が 2% ほど上がるそうです。

 これは「対戦相手が左右非対称な評価関数を使っているから」だと思う。山本さんが指摘されているように、右の穴熊と左の穴熊だと「左の方が強そうに見える」。つまり、人間の評価関数は左右対称ではなくて、左穴熊の方を高く評価していることになる。それはたぶん、初期盤面が左右非対称なので、「その局面に持って行くのにかかる手数」を局面の評価に含めているからだろう。純粋に理論的に言えば、ある局面にいったんたどりついてしまえば、そこから先の展開は「それまでにかかった手数」とは無関係のはず。けれども、人間の心理としてはそうはならないんでしょう。左右反転させた局面を見たら、「なんでこうなっちゃったの?」とまず考えるんじゃないだろうか。

 プロ棋士の棋譜は多数データ化されているわけだから、「左右対称の局面」が今までどのぐらい実現してきたのか、そこから先の展開はどう異なっているのか(あるいは似通っているのか)、そういう研究って面白そうだな。誰かヒマで将棋の好きな人、やってみてくれませんか。

タグ:将棋
posted by toshinagata at 23:39| 日記

2018年02月13日

LÖVE (Love2D) を Raspbian Stretch で動かす

 ゲームエンジンの LÖVE (Love2D) なんですが、最新の Raspbian Stretch でうまく動かない問題があった。音を鳴らそうとするとトラブルが起きる。

  • Raspberry Pi1 では、Illegal Instruction で落ちてしまう(たぶん Zero でも)。
  • Raspberry Pi3 では、落ちはしないが、発音がひどく遅れる(たぶん Pi2 でも)。

 Illegal Instruction はダメでしょ。Gdb で動作させて調べてみたところ、libopenal.so の中で落ちていることがわかった。OpenAL が壊れているらしい。試しに、こんなコードで検証してみた(openal.c とする)。

#include <stdlib.h>
#include <stdio.h>
#include <AL/alc.h>
#include <AL/al.h>

int ReadHeaderWav(FILE* fp, int *channel, int* bit, int *size, int* freq) {
  int16_t res16;
  int32_t res32, dataSize, chunkSize;
  int16_t channelCnt, bitParSample, blockSize;
  int32_t samplingRate,byteParSec;	
  int dataPos, i, flag = 0;
  
  fread(&res32, 4, 1, fp);
  if (res32 != 0x46464952) {	/* "RIFF" */
    return 1;	//error 1
  }
  fread(&dataSize, 4, 1, fp);  /*  Data size  */
  
  /*  WAVE header  */
  fread(&res32, 4, 1, fp);
  if (res32 != 0x45564157){	/* "WAVE" */
    return 2;	//error 2
  }
  
  /*  Chunks  */
  while (flag != 3) {
  fread(&res32, 4, 1, fp);
  fread(&chunkSize, 4, 1, fp);
    switch (res32) {
    case 0x20746d66:	/* "fmt " */
      fread(&res16, 2, 1, fp);
      if (res16 != 1) {
        return 4;  /*  Not supported  */
      }
      fread(&channelCnt, 2, 1, fp);
      if (res16 > 2) {
        return 5;  /*  Not stereo nor monoral  */
      }
      fread(&samplingRate, 4, 1, fp);
      fread(&byteParSec, 4, 1, fp);
      fread(&blockSize, 2, 1, fp);
      fread(&bitParSample, 2, 1, fp);
      *channel = (int)channelCnt;
      *bit = (int)bitParSample;
      *freq = samplingRate;
      flag |= 1;
        
      break;
    case 0x61746164:	/* "data" */
      *size = chunkSize;
      dataPos = ftell(fp);
      flag |= 2;
      break;
    }
  }
  fseek(fp, dataPos, SEEK_SET);
  return 0;
}

int main (int argc, char **argv)
{
  ALuint buffer, source;
  FILE *fp;
  int wavChannel, wavBit, wavSize, wavFreq;
  unsigned char *data;
  int i, fmt;
  
  ALCdevice *device;
  ALCcontext *context;
  
  /*  Initialize  */
  device = alcOpenDevice(NULL);
  context = alcCreateContext(device, NULL);
  alcMakeContextCurrent(context);
  
  fp = fopen("bgm.wav","rb");
  if (ReadHeaderWav(fp, &wavChannel, &wavBit, &wavSize, &wavFreq)){
    printf("Format not supported\n");
    return 1;
  }
  data = (unsigned char *)malloc(wavSize);
  fread(data, wavSize, 1, fp);
  fclose(fp);
  
  alGenBuffers(1, &buffer);
  if (wavChannel == 1)
    fmt = (wavBit == 8 ? AL_FORMAT_MONO8 : AL_FORMAT_MONO16);
  else
    fmt = (wavBit == 8 ? AL_FORMAT_STEREO8 : AL_FORMAT_STEREO16);
  alBufferData(buffer, fmt, data, wavSize, wavFreq);
  
  alGenSources(1, &source);
  alSourcei(source, AL_BUFFER, buffer);
  for (i = 0; i < 5; i++) {
    fprintf(stderr, "play\n");
    alSourcePlay(source);
    sleep(1);
    alSourceStop(source);
  }
  
  alDeleteBuffers(1, &buffer);
  alDeleteSources(1, &source);
  free(data);
  return 0;
}

 gcc -g -o altest altest.c -lopenal でビルドして、gdb で実行してみた。Pi3 では "play" と表示されてから約 0.6 秒遅れで音が鳴る。Pi1 では、"play" が1回表示された直後に下のエラーで落ちる。

Thread 4 "altest" received signal SIGILL, Illegal instruction.
[Switching to Thread 0xa59ff460 (LWP 593)]
0xb6f3ead4 in ?? () from /usr/lib/arm-linux-gnueabihf/libopenal.so.1

 これは libopenal.so をビルドし直して差し替えるしかないね。ついでに、pulseaudiojack が問題を起こすので、非対応にする。

$ wget http://kcat.strangesoft.net/openal-releases/openal-soft-1.18.2.tar.bz2
$ tar xvjf openal-soft-1.18.2.tar.bz2
$ cd openal-soft-1.18.2/build
$ cmake -DALSOFT_BACKEND_JACK=OFF -DALSOFT_BACKEND_PULSEAUDIO=OFF -DCMAKE_INSTALL_PREFIX=/usr/local/games/love ..
$ sudo mkdir -p /usr/local/games/love; sudo chown pi /usr/local/games/love
$ make && make install

 さっきの altest を試してみる。ちゃんと音が出るようになった。新しく作った libopenal.so をリンクするため、LD_LIBRARY_PATH 環境変数を設定する。

$ LD_LIBRARY_PATH=/usr/local/games/love/lib ./altest

 これに対応した Love2D のビルドスクリプトを作りました。→「LÖVE (Love2D) プログラミング:インストール

posted by toshinagata at 00:12| 日記

2018年02月12日

CCさくらの「おぼろ月夜」

 今週のカードキャプターさくら(いい年したおっさんが毎週リアルタイムで見ている)で、知世ちゃんと秋穂ちゃんが「おぼろ月夜」をデュエットしていた。そのアレンジがよかった。根岸貴幸さん、いい仕事してますね。

 知世ちゃんが楽譜を渡すシーンで、一瞬だけ楽譜が大写しになる。ちゃんと音符が書いてあります。細かい比較はしてないけど、実演と合ってるんじゃないでしょうか。

20180212-1.jpg

 実はこの歌、わりと苦手だった。A→E→D という進行が3回出てくるんだけど、どうもしっくり来ない。

20180212-2.png

 作曲者の岡野貞一さんは、どういう和音進行を想定して書いたんだろうか。Am→G としてしまうと、露骨に連続5度が起きて、すごくマヌケな感じになってしまう。学校の音楽の授業だと、だいたいこういう伴奏をつけられてしまう。これで何度も歌わされるのって、けっこう苦痛ですよ。

20180212-3.png

 根岸さんのアレンジはこうなっている。1回目は Am→G7, 2回目は Am→D9→G9sus4, 3回目は Dm9→G9。

20180212-4.png
20180212-5.png
20180212-6.png

 3回目の2拍オモテに8分休符があるのはどうしてですかね。E が F→E→D の経過音に見えるのを嫌ったのかな。

20180212-7.png

 ちなみに、ピアノ伴奏を受け持ったのはなんと小狼君。これを初見で弾いて、コーラス部の知世ちゃんに「歌いやすかった」と言わせるのって、中学生としては相当の腕前だぞ。いつ練習してるんだろう。

タグ:音楽 アニメ
posted by toshinagata at 17:52| 日記

2018年02月11日

セヴラック「ラングドックにて」

 1年前に買った「セヴラック・ピアノ作品集」を最近少しずつさらっている。

20180211-2.jpg

 音使いとしては、シャブリエのそれと少し通じるものがあるかな。下の譜例は「ラングドックにて」の第1曲「祭りの日の畑屋敷に向かって (Vers le Mas en fête)」より。赤で囲った小節、こういう音がよく出てくる。

20180211-1.png

 音楽は完全に描写的。同じく「ラングドックにて」の第3曲は「草原で馬に乗る (A cheval, dans la prairie)」で、こんな風に始まる。

20180211-3.png

 泉に着くとこうなる。6小節目はさっきと同じ和音。

20180211-4.png

 それで、また馬に乗って帰ってきて、最後はご丁寧に馬をうまやにつなぐところ(たぶん)まで描かれている。

20180211-5.png

 押し付けがましくない、素朴で明るい音楽です。あんまり DTM なんかには向いてない。気の向くままに、即興演奏っぽく自由に弾くのが合っている。

タグ:音楽
posted by toshinagata at 00:19| 日記

2018年02月10日

英語教育に文法は不必要か

 「文法は必要?不要? 英語教育の最前線」(日経ビジネスオンライン,池田和弘氏)。池田氏は、「今後は『必要最小限の文法』という発想になっていく」と書かれている。世にありがちな「英文法なんて不要」という暴論に流れていないところはさすが。だからこそ、きちんと教育現場で結果を出してこられたんだろう。

 「英文法は不要」という論に流れる教員は、往々にして、何のルールも説明せずに英語の「例文」だけを延々と垂れ流して、それが英語教育だと思い込んでいる場合がある。そこから「自発的に」規則性を読み取れる生徒がいないわけではないが、そんな子供はほんの一握りだろう。池田氏は、伝統的な学校英文法の枠ではないとしても、必要な「ルール」はちゃんと言葉で説明している。別記事で挙げられている「仮定法過去は、過去形に『私の想像だけど…』という意味がある、と説明すればよい」という例は、目からウロコだった。また、「すべて英語で教えるのではなく、日本語で説明を加えることが大事」とも述べられている。これも大切なこと。

 ただ、5文型や能動態/受動態の転換練習は有害だ、というのは、あまり賛同できないかな。自動詞/他動詞の区別、目的語/補語の違い、能動態と受動態の関係などは、「ルール化して理詰めで説明」してもらった方がよくわかる、という子っているんですよ。特に、理数系科目はまあまあできるけど、国語がさっぱりで、言語をあやつる能力自体があまり高くない人には、こういう傾向が強い。これは、語学教育だけをやっている人にはわかりにくい感覚かもしれない。

タグ:教育 社会
posted by toshinagata at 10:34| 日記

2018年02月04日

LÖVE のページ作りました

 LÖVE のページを作りました:「LÖVE (Love2D) プログラミング」。

2018.2.10. 追記:「LÖVE (Love2D)」と表記するようにしました。「LÖVE」って検索しにくいんですよね。「Love2D」だと見つけやすい。

 以前に Luajit で作った「さかなは踊る」を移植してみた。この動画は Mac で動かしたもの。ラズパイでも動くけど、なぜか音がずれる。

 プログラムはこちらにあります

 ついでにメモ。スクリーンショットで作成した動画をアスペクト比 16:9 にして mp4 に変換する方法。まず、アスペクト比を保ったまま縦を288ピクセルにして、その後黒い枠を左右に追加する(下の例では左右に78ピクセルずつ)。

$ ffmpeg -i fish.mov -vcodec h264 -acodec aac -vf "scale=356:288,pad=512:0:78:0:black" fish.mp4
posted by toshinagata at 23:54| 日記
email.png
Powered by さくらのブログ