やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

C#で変化記号を定義し、音度からピッチクラスを取得する(複音程に未対応)。

#1, b2, #3 , ♭4, +5, -6, などの音度表現に対応。ただし単音程(1〜7)まで。

成果物

GitHubCSharp.MusicTheory.Chord.Accidential.201709101700

開発環境

前回まで

学んだこと

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

C#の冗長さとPythonのわかりにくさ、どちらがマシか。

実装の問題点

  • 変化記号の定義クラスがあるのに、別のクラスではそれを参照せずに正規表現をつくっている
  • Accidental.GetPitch()の実装がスマートでない気がする
    • foreach(AccidentalType a in [Flat, Sharp]) { a.GetValue (accidental); }としてもカッコ悪い
      • どう実装すべきかわからない

所感

ささいなことでエラーが頻発して捗らない。MonoDevelopのエラーが英語でわかりにくい。

  • どのようなデータ構造にすべきか
  • それはC#で実装可能か、どのように実装できるか