C#で変化記号を定義し、音度からピッチクラスを取得する(複音程に未対応)。
#1, b2, #3 , ♭4, +5, -6, などの音度表現に対応。ただし単音程(1〜7)まで。
成果物
CSharp.MusicTheory.Chord.Accidential.201709101700
開発環境
- Linux Mint 17.3 MATE 32bit
- MonoDevelop 4.0.12
- mono 3.2.8 (Debian 3.2.8+dfsg-4ubuntu1.1)
前回まで
学んだこと
MONOでLinqを使う方法
- System.Core.dllの参照を追加する
using System.Linqする
同じ文字列をくりかえす
- System.Core.dllの参照を追加する
using System.Linq;//System.Core.dll string acc_str = string.Concat(System.Linq.Enumerable.Repeat(accidental, i));
Pythonなら以下のコードでできる。
acc_str = accidental * i
実装の問題点
- 変化記号の定義クラスがあるのに、別のクラスではそれを参照せずに正規表現をつくっている
Accidental.GetPitch()の実装がスマートでない気がするforeach(AccidentalType a in [Flat, Sharp]) { a.GetValue (accidental); }としてもカッコ悪い- どう実装すべきかわからない
所感
ささいなことでエラーが頻発して捗らない。MonoDevelopのエラーが英語でわかりにくい。
- どのようなデータ構造にすべきか
- それはC#で実装可能か、どのように実装できるか