プロジェクト計画書(仮)


概要

ピアノ打鍵に関わる能力(視覚-聴覚-触覚の連携)を向上させるためのアプリ「tri-sense」の開発プロジェクト。

・視覚 → 触覚
・聴覚 → 触覚

この2種類の連携を強めることにより、
「概念上の音」を「実際の音」に変換しやすくすること(ピアノを体の一部にすること)を目指す。

種別 具体例
視覚 音符、コード
聴覚 音(単音、和音)
触覚 打鍵時の運動制御

※本当は "触覚"(入力)というより "運動"(出力)なのだろうけど、細かいことは気にしない...。


ウェルカム

環境

  • Python3.5

リポジトリ

$ git clone https://git.fukurous.org/gitbucket/git/g0947424/tri-sense.git

ライブラリのインストール(1)

PythonからMIDIを扱うため、ライブラリ「pygame」を導入する。
Python3.5向けにはやや面倒な手順になるのでメモを残しておく。

ちなみに、Python3.5 ─ pygame ─ SDL+portmidi ─ MIDI機器 という具合に接続されることになる。

↓Homebrewユーザ向け(書籍『パーフェクトPython』等より)

# 1. SDL(クロスプラットフォームのマルティメディアライブラリ)とそのインストール
#   cf. https://www.libsdl.org

$ brew install sdl sdl_image sdl_mixer sdl_ttf

$ brew install smpeg

# もし
# > Error: This is a head-only formula; install with `brew install --HEAD smpeg`
# と表示された場合は、その内容に従って、
# $ brew install --HEAD smpeg
# でインストールしなおすらしい。

# 2. portmidi(クロスプラットフォームのMIDIライブラリ)のインストール
$ brew install portmidi

# 3. X11(XQuartz)のインストール。pygameがこれを必要とするため。
#   次のURLから dmg をダウンロードしてインストール。(ex. XQuartz-2.7.11.dmg)
#   https://www.xquartz.org

# 4. Mercurial(hg)のインストール(Python3.5向けのpygameを取り寄せる際に使用するツール)
#   cf. https://www.mercurial-scm.org/wiki/Download
$ brew install mercurial

# 5. pygame(Python3.5対応)のインストール
$ pip install hg+https://bitbucket.org/pygame/pygame

# 6. ちゃんとインストールできたかの確認(BGMとともにインベーダーゲームが動くはず)
$ python -m pygame.examples.aliens


要求

★:最優先、☆:優先

要求ID 内容 理由 5/5 ?/? ?/? ?/?
要求 RQ-1 視覚 → 触覚 の連携を強化できること 既存の音楽(楽譜中の音楽等)を音に変換しやすくするため
要求 RQ-1-1 音部記号表示(ト音,ヘ音)に対応していること 両手ともに連携を強化したいため
要求 RQ-1-2 調号表示に対応していること
要求 RQ-1-3 臨時記号表示(#, ♭, ♮)に対応していること
要求 RQ-1-4 臨時記号表示(重嬰, 重変)に対応していること
要求 RQ-1-5 和音表示に対応していること
要求 RQ-1-6 コード名表示に対応していること
要求 RQ-1-7 オクターブ変化(8va/8vb)に対応していること
要求 RQ-1-8 オクターブ変化(15va/15vb)に対応していること
要求 RQ-2 聴覚 → 触覚 の連携を強化できること 想像上の音楽(作曲時の音楽等)を音に変換しやすくするため
要求 - (未分析)
要求 RQ-3 その他の機能/非機能が備わっていること
要求 RQ-3-1 MIDI接続機器によって打鍵操作できること 実際の物理装置を使用における運動精度を高めるため
要求 RQ-3-2 設問回答の流れがスムーズであること 操作ストレスによる "習慣化の阻害" を避けるため
要求 RQ-3-3 設問から打鍵までの速度を計測できること 目標到達に対する効果測定を行なうため
要求 RQ-3-4 練習状況の計測結果を蓄積できること 念のため(えっ...)(蓄積するだけでok、分析等は不要)
要求 RQ-3-5 打鍵の強さ(velocity)を表示できること 打鍵の強弱精度向上のため(おまけ機能)

...


補遺