Taro3

View on GitHub

ドラムマシンプロジェクトの構築

いつものように、コードに飛び込む前に、プロジェクトの構造を勉強してみましょう。このプロジェクトの目的は、できるようになることです。

サウンドを再生するために、クリック(またはキーボードイベント)時に特定のドラムサウンドを再生する4つの大きなボタン(キック、スネア、ハイハット、シンバルクラッシュ)を配置します。これらのサウンドは、アプリケーションによってロードされた.wavファイルになります。ユーザーは自分の一連の音を録音して再生することができます。

シリアライズの部分では、トラックを1つのファイル形式で保存するだけでなく、3つのファイル形式で保存したいと考えています。

3つのフォーマットを網羅した方が楽しいだけでなく、それぞれの利点や限界、Qtのフレームワークの中でどのようにフィットするのかを理解する機会にもなります。私たちが実装しようとしているアーキテクチャは、将来の進化に対応できるように柔軟性を持たせようとしています。プロジェクトがどのように進化していくかは、決してわかりません。

クラスの編成はこんな感じです。

image

これらのクラスの役割を見直してみましょう。

出力形式は簡単にスワップできるようにする必要があります。これを実現するために、SerializableクラスとSerializerクラスが独立して進化できるようにするために、ブリッジデザインパターンの修正版に頼ることにします。

プロジェクト全体は、モジュール間の独立性という概念を中心に展開しています。再生中にその場で音を入れ替えることができるようになっています。例えば、あなたが素晴らしいビートを聴いていて、別のスネアサウンドを試したいとします。スネアサウンドを保持している SoundEffectWidget クラスに .wav ファイルをドラッグ&ドロップするだけで、スネアサウンドを置き換えることができます。


戻る