将棋の棋譜からの音楽生成とヒートマップによる可視化

棋譜音楽について

 将棋の対戦内容を記録したものは棋譜と呼ばれます。棋譜を見れば、後から対戦を再生することができます。棋譜をデータ化したものにはいくつかの形式があり、これらはツールで再生したり、そのまま読むこともできます。
 普通、棋譜は一手一手検討しつつ読みます。しかしそうではなく、棋譜をより直感的に把握する手段を考えてみます。棋譜を読む前に全体像をイメージしておくことで理解の助けになるのではないでしょうか。

 今回は二つのアプローチを試します。
・どこで駒の動きがあったのかヒートマップで画像にする視覚からの影響アプローチ
・どう駒が動いたのか音として表現する聴覚からのアプローチ
このように視覚と聴覚を使い感覚的に理解できるようにしていきます。

棋譜からのヒートマップ生成

 今回のヒートマップは、どこに駒が打ち込まれたかをカウントしました。これによりどこで競り合いがあったのかが可視化できます。
heatmap_640

棋譜からの音楽生成

 横一列ごとに音を当てはまる、縦に移動するとオクターブ音が変わるようにします。横一列の音は白鍵だけを使うようにしました。ですので盤上に同じ音が出る場所がありますがそのまま出力しています。
 横一列の当てはめ方は色々試しました。単純に半音ずつずらしたり、ヨナ抜き音階を使ったりしてみました。その中でしっくり来たものを採用しています。
 将棋盤で表現するとこうなります。
kihu-ban-node

 鍵盤で表現するとこうなっています。
shogi_kenban_position

 これを基本形とした上で、音全体をずらすことで、midiで表現できる音の枠内に収まるようにしています。

 生成する音は、バッハの「平均律クラヴィーア曲集 第1巻 BWV 846‐869」の音を参考にしたものと、単に和音を鳴らしたものを用意しました。

結果

 こちらから再生できます。


・基本形
棋譜音楽 (AlphaZero vs. elmo No.81 2018-12-03)
棋譜音楽 (AlphaZero vs. elmo No.18 2018-12-03)
・和音版
棋譜音楽 (AlphaZero vs. elmo No.81 2018-12-03)
棋譜音楽 (AlphaZero vs. elmo No.18 2018-12-03)

使用データ

AlphaZero Resources | DeepMind
「100 AlphaZero-Elmo games (.zip file).」より。

考察

 今回の結果からは、いくつかの点で理解を助ける要素が現れました。
・上下方向の移動がオクターブで表現され、耳で理解できる
・置いた駒が即座に取られた場合には、同じ音の連続として表現される
・激しいやりとりがあった場所はヒートマップに表現される  しかし一方で当然ながら一貫性が無い曲調であり、全体を通じて印象を持つのは困難な曲です。

コメント

 この取り組みにより直感的な理解ができそうかというとそうでもありません。とはいえこのような取り組みから何かを掴むことができるかもしれません。さらにより自然な表現も検討する必要があります。

(参考)使用ツールとフロー

 主に使用したツール
Python3 mido, python-shogi, seaborn
ffmpeg
kihu_music_dataflow

Androidアプリを更新しました(Androd11対応)

チェックトレンド - Google Play のアプリ

 以前から時間が経過しすぎて1から書き直しました。Android Studioがアプリを作る上で非常にスムーズになっていました。アプリに審査が開始されたので即公開はできないようになっていましたが、それでも非常にやりやすくなっています。
tattyamm/checktrend_android: checktrend for android

技術書典9にサークルとして参加しました

 技術書典9にサークル側で参加しました。自分が書いたのは合同誌にアプリ定期課金についてです。定期課金については総合的な話は既に多くの人が語っているので、今回はReal-time developer notificationsについての事例紹介をメインにしました。これで技術書典7,8ではアプリ課金周りと海外課金、9では定期課金について書いたことになります。
 今回は技術書典8に引き続きオンラインイベントだったためあまり実感はありませんが、サークル一覧の表紙から分かるテーマの自由さが見ていて楽しいです。
このサイトについて
Webアプリケーション開発のことや、iPhone・Android向けアプリ開発の話題が中心です。
管理:えんたつ twitter: @tattyamm
mimage
一部のリンクにはアフィリエイトが含まれます。
カテゴリ別アーカイブ
RSS
プログラミング本
古い本含めてメモです
iPhoneプログラミングUIKit詳解リファレンス iPhoneプログラミングUIKit詳解リファレンス Android Layout Cookbook アプリの価値を高める開発テクニック パーフェクトPHP (PERFECT SERIES 3) JavaプログラミングBlack Book 2nd Edition (Black Bookシリーズ)
表記
当サイトではGoogle Analyticsを使用しております。詳細はこちらを御覧ください