OSDN Ticket Archive


Ticket #39718

macOS版 ビューモード「ピアノロールリング」追加

登録: 2019-11-04 21:39 最終更新: 2019-11-07 01:29

報告者:
yknk
担当者:
yknk
チケットの種類:
機能リクエスト
状況:
完了
コンポーネント:
MIDITrail Ver.1.3.x for macOS
マイルストーン:
Version 1.3.1 for macOS (完了済み)
優先度:
5 - 中
重要度:
5 - 中
解決法:
修正済み
ファイル:
なし

詳細

ビューモード「ピアノロールリング」を追加する。

  • ピアノロール2Dを円筒状に表示する。
  • ライブモニタ用の表示も併せて追加する。

参考チケット

  • #39675 Win版 ビューモード「ピアノロールリング」追加

チケットの履歴

2019-11-04 21:39 更新者: yknk
  • 新しいチケット "macOS版 ビューモード「ピアノロールリング」追加" が作成されました
2019-11-04 21:40 更新者: yknk
  • マイルストーン(未割り当て) から Version 1.3.1 for macOS (完了済み) に更新されました
  • 担当者(未割り当て) から yknk に更新されました
2019-11-04 21:40 更新者: yknk
コメント

対策1:ビューモードメニューの追加

MainMenu.xib

Viewメニューに"Piano Roll Ring"を追加。

MIDITrailApp

enum SceneTypeにPianoRollRingを追加。

MIDITrailApp::_ChangeMenuStyle

「ピアノロールリング」メニューに対する活性制御処理を追加する。

MIDITrailApp::_CreateScene

ピアノロールリングシーンオブジェクト生成処理を追加する。

MIDITrailApp::_LoadSceneType

シーン種別読み込み処理を「ピアノロールリング」に対応させる。

MIDITrailApp::_SaveSceneType

シーン種別保存処理を「ピアノロールリング」に対応させる。

MIDITrailApp::_UpdateMenuCheckmark

「ピアノロールリング」メニュー選択マーク更新処理を追加する。

MTMenuCtrl

enum MTMenuItem に、MenuPianoRollRing を追加。 メニュー項目"Piano Roll Ring"に対応するメンバ変数 m_pMenuPianoRollRing を追加。

MTMenuCtrl::initialize

メニュー項目"Piano Roll Ring"の初期化処理を追加。

MTMenuCtrl::menuItemOf

メニュー項目"Piano Roll Ring"のオブジェクト取得処理を追加。

MTMenuCtrl::onMenuPianoRollRing

メニュー項目"Piano Roll Ring"選択時のイベントハンドラを追加。

2019-11-04 21:41 更新者: yknk
コメント

対策2:ピアノロールリング描画クラスの追加

MTScenePianoRollRing

ピアノロールリングシーン描画クラスを追加。

MTScenePianoRollRingLive

ライブモニタ用ピアノロールリングシーン描画クラスを追加。

OGLH::RotateYZ

座標回転関数を新規追加。

MTGridRing

グリッドリング描画クラスを新規作成。

MTGridRindLive

ライブモニタ用グリッドリング描画クラスを新規作成。

MTNoteBoxRing

ノートボックスリング描画クラスを新規作成。

MTNoteBoxRingLive

ライブモニタ用ノートボックスリング描画クラスを新規作成。

MTNoteDesignRing

ノートデザインリング描画クラスを新規作成。

MTNoteRippleRing

リング用ノート波紋描画クラスを新規作成。

MTNoteRippleRingLive

ライブモニタ用ノート波紋リング描画クラスを新規作成。

MTPictBoardRing

ピクチャボードリング描画クラスを新規作成。

MTTimeIndicatorRing

タイムインジケータリング描画クラスを新規作成。

2019-11-04 21:41 更新者: yknk
コメント

対策3:既存描画ライブラリを流用しやすくするための改造

MTNoteDesign

派生先クラスからメンバにアクセスできるように、privateをprotectedに変更。 派生先クラスで処理の差し替えができるように、以下のメソッドの定義にvirtualを追加。

  • GetNoteBoxCenterPosX
  • GetNoteBoxVirtexPos
  • GetActiveNoteBoxVirtexPos
  • GetNoteBoxVirtexPosLive
  • GetPortOriginY
  • GetPortOriginZ
  • GetWorldMoveVector
  • _LoadConfFile

MTNoteBox

派生先クラスからメンバにアクセスできるように、privateをprotectedに変更。 派生先クラスからメンバのクラスを切り替えられるように、 MTNoteDesignのメンバオブジェクトm_NoteDesignをMTNoteDesignのポインタm_pNoteDesignに変更。 メンバオブジェクトのポインタ化(m_pNoteDesign)に伴う、変数名の置換。

  • MTNoteBox::Create
  • MTNoteBox::Transform
  • MTNoteBox::_CreateVertexOfNote
  • MTNoteBox::_MakeMaterialForActiveNote

MTNoteBox::MTNoteBox

m_pNoteDesignの初期化処理を追加。

MTNoteBox::Create

ノートデザインオブジェクト生成処理_CreateNoteDesignの呼び出しを追加。

MTNoteBox::_CreateNoteDesign

ノートデザインオブジェクト生成処理を新規追加。

MTNoteBox::Release

m_pNoteDesignの破棄処理を追加。

MTNoteBoxLive

派生先クラスからメンバにアクセスできるように、privateをprotectedに変更。 派生先クラスからメンバのクラスを切り替えられるように、 MTNoteDesignのメンバオブジェクトm_NoteDesignをMTNoteDesignのポインタm_pNoteDesignに変更。 メンバオブジェクトのポインタ化(m_pNoteDesign)に伴い、以下のメソッドで変数名を置換。

  • MTNoteBoxLive::Create
  • MTNoteBoxLive::Transform
  • MTNoteBoxLive::_CreateVertexOfNote

MTNoteBoxLive::MTNoteBoxLive

m_pNoteDesignの初期化処理を追加。

MTNoteBoxLive::Create

ノートデザインオブジェクト生成処理_CreateNoteDesignの呼び出しを追加。

MTNoteBoxLive::_CreateNoteDesign

ノートデザインオブジェクト生成処理を新規追加。 派生先クラスで処理の差し替えができるように、メソッドの定義にvirtualを追加。

MTNoteBoxLive::Release

m_pNoteDesignの破棄処理を追加。

MTNoteRipple

派生先クラスからメンバにアクセスできるように、privateをprotectedに変更。 派生先クラスからメンバのクラスを切り替えられるように、 MTNoteDesignのメンバオブジェクトm_NoteDesignをMTNoteDesignのポインタm_pNoteDesignに変更。 メンバオブジェクトのポインタ化(m_pNoteDesign)に伴い、以下のメソッドで変数名を置換。

  • MTNoteRipple::Create
  • MTNoteRipple::Transform
  • MTNoteRipple::_SetVertexPosition

MTNoteRipple::MTNoteRipple

m_pNoteDesignの初期化処理を追加。

MTNoteRipple::Create

ノートデザインオブジェクト生成処理_CreateNoteDesignの呼び出しを追加。

MTNoteRipple::_CreateNoteDesign

ノートデザインオブジェクト生成処理を新規追加。 派生先クラスで処理の差し替えができるように、メソッドの定義にvirtualを追加。

MTNoteRipple::Release

m_pNoteDesignの破棄処理を追加。

2019-11-04 21:42 更新者: yknk
コメント

対策4:リファクタリング

MTPianoKeyboard::_RotateYZ

本メソッドの実装をOGLH::RotateYZに移設して、処理を共有可能とする。本メソッドは削除。

MTPianoKeyboard::_RotateKey

_RotateYZをOGLH::RotateYZの呼び出しに書き換え。

MTNoteDesign::GetNoteBoxWidht

メソッド名のスペルミスを修正(GetNoteBoxWidht → GetNoteBoxWidth)。 これに伴い、メソッド呼び出し元を修正。

  • MTNoteDesign::GetNoteBoxVirtexPos
  • MTNoteDesign::GetActiveNoteBoxVirtexPos
  • MTNoteDesign::GetNoteBoxVirtexPosLive
  • MTNoteDesign::GetGridBoxVirtexPos
  • MTNoteDesign::GetGridBoxVirtexPosLive

conf/PianoRollRain2D.ini

以下の項目の定義が漏れていたため追記した。 ただし未定義の場合でも、同じ値がデフォルト値であるため、動作に変化はない。

[ActiveNote]
SizeRatio=1.4

(編集済, 2019-11-04 21:43 更新者: yknk)
2019-11-04 21:43 更新者: yknk
コメント

対策5:設定ファイル

シーン設定ファイル

下記INIファイルを追加する。

  • conf/PianoRollRing.ini
  • conf/PianoRollRingLive.ini
2019-11-07 01:28 更新者: yknk
  • 解決法なし から 修正済み に更新されました
  • 状況オープン から 完了 に更新されました
2019-11-07 01:29 更新者: yknk
  • コンポーネント(未割り当て) から MIDITrail Ver.1.3.x for macOS に更新されました

添付ファイルリスト

添付ファイルはありません