フェルマータ

個人用のメモ。ソフトウェアの導入とかが多くなる予定。ライセンスの気になる方はこのブログに載せたコードは修正 BSD に準ずるものと考えてください。

作りたいもののポエム

いきさつ

最近なにもプログラムを書いていなかった気がしてつらくなってきたので、なにか書くお題でも用意すればいいんじゃないかと思い立った。

作りたいもの

  1. UTAU 音源より表現力の高い音源形式
  2. ↑のファイル読み書き部分

とりあえず一旦ここまで書けたらいいこととする。(大きく作って死ぬことが多い気がする)

その他要件

  1. 既存リソースを活かすために UTAU 音源からインポートをできるようにする
  2. 波形情報と演奏情報とキャラクタ情報は厳密に分けて設計すること
  3. 欲を言えば複数音源を自在に切り替え、あるいは混ぜられるようにすること(キャラクタの枠組みを越えるべき)

ざっくりとした設計

とりあえずこんな感じでどうだろうみたいなのを書いてみる。 おそらく仕様が長大になるのでどっかで分割するべき。

{
  "waves": [
    {
      "path": "akasatana.wav",
      "segment": [
        {
          "begin": 500,
          "length": 500,
          "temporal_position" : 100,
          "front_fixed_range" : 100,
          "rear_fixed_range" : 100,
          "context" : {
            "pronounce": {
              "previous" : "-",
              "this" : "a",
              "next" : "k a"
            },
            "note" : {
              "previous" : 60,
              "this" : 60,
              "next" : 60
            },
            "tempo" : 120,
            "strength" : 0
          }
        },
        {
          "begin": 500,
          "length": 500,
          "temporal_position" : 100,
          "front_fixed_range" : 100,
          "rear_fixed_range" : 100, 
          "context" : {
            "pronounce": {
              "previous" : "-",
              "this" : "k a",
              "next" : "s a"
            },
            "note" : {
              "previous" : 60,
              "this" : 60,
              "next" : 60
            },
            "tempo" : 120,
            "strength" : 0
          }
        }
      ]
    }
  ]
}
  • begin: 開始位置
  • length: 波形長
  • temporal_position: ビートの位置(先行発音相当)
  • front_fixed_range: 前半の固定長(固定長相当)
  • rear_fixed_range: 後半の固定長
  • context
    • pronounce
      • previous: 先発の前の発音
      • this: この波形の発音
      • next: 後続の発音
    • note
      • previous: 先発の前の音程
      • this: この波形の音程
      • next: 後続の音程
    • tempo: 収録テンポ
    • strength: 音の強さ(うーん)

context は分離した方がいいかもしれない。

TBD..