Randomizerを実装する

これまでに作成したモデルオブジェクトとの違い

これまではユーザが作成するデータを保持するオブジェクトの元となるクラスを実装してきました。これらのオブジェクトはユーザが作成したデータの数だけ作られる訳ですが、これから作るRandomizerのオブジェクトはアプリケーションに一つだけ作ればよいものです。作るオブジェクトの数が決まっている場合は、Interface Builderでオブジェクトをインスタンス化する事ができます。

Randomizerの機能

Randomizerの機能は原図のパラメータを乱数を使って決定する事です。ただし振幅と周波数は各発振器ごとに変化する範囲を指定できるものとします。これは周波数の変化範囲に制限を付けたかった、という理由でつけている機能です。

やってみるとわかりますが、周波数を制約なしにランダムに決定すると、高い周波数が現れて原図が単なるぐちゃぐちゃの線の固まりになる確率が高いのです。これだと面白みがありません。例えばこんな感じの原図です。

dullMotif

発振器ごとに制約をつける事で、ランダムでありながらある程度の方向性を決める事ができます。例えば第一の発振器は振幅を大きめ、周波数を低めにして全体の形を大まかに決める役割、第三の発振器は周波数を高めにするが振幅を小さめにしておいて波形にちょっとしたアクセントを付ける役割、第二の発振器はその中間といった具合です。

環境設定とデフォルトデータベース

振幅と周波数を変化させる範囲の指定は、環境設定パネルを作成してそこで行う様にします。環境設定パネルにスライダーをいくつか並べて、各発振器ごとにどこからどこまでの範囲でランダムに変化させるのかを指定できる様にします。こんな感じです。

preference

ユーザに指定してもらった値はシステムが用意しているデフォルトデータベースに保存します。デフォルトデータベースへ保存する事はInterface Builder上の設定だけで実現でき、プログラミングは不要です。

ただし保存した値を読み取るには若干のコードが必要です。Randomizerクラスのオブジェクトは起動時にバインディングを設定する事により、インスタンス変数とデフォルトデータベースの値を同期させます。

デフォルトデータベースを使用するにあたって必要な設定がありますので、後ほど説明します。

文書の構成

Randomizerに関する説明は長くなるので、複数のページに分割します。

デフォルトデータベースを使用するにあたって必要な設定

Interface Builder上の作業

インスタンス変数とアクセサメソッド

初期化コードの実装

原図のパラメータを乱数を使って決定する



amazon.co.jpの広告