Ticket #39796

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

Open Date: 2019-11-28 01:15 Last Update: 2019-11-30 11:18

Reporter:
Owner:
Status:
Closed
Priority:
5 - Medium
Severity:
5 - Medium
Resolution:
Fixed
File:
None

Details

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

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

参考チケット

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

Ticket History (3/7 Histories)

2019-11-28 01:15 Updated by: yknk
  • New Ticket "iOS版 ビューモード「ピアノロールリング」追加" created
2019-11-30 11:16 Updated by: yknk
Comment

対策1:ビューモード切り替え処理と設定ビューの修正

MTParam.h

enum SceneTypeにPianoRollRingを追加。

MIDITrailApp::loadSceneType

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

MIDITrailApp::createSceneWithType

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

MTSettingViewCtrl

メンバにピアノロールリング用のビューモードアイコン画像 m_pImagePianoRollRing を追加。

MTSettingViewCtrl::viewDidLoad

ピアノロールリング用のビューモードアイコン画像読み込み処理を追加。

MTSettingViewCtrl::tableView:numberOfRowsInSection

ビューモードのセクションの項目数を+1する。

MTSettingViewCtrl::makeViewModeCellForIndexPath

ピアノロールリング用のビューモードセル作成処理を追加。

MTSettingViewCtrl::onSelectViewModeCellForIndexPath

ピアノロールリング用のビューモードセル選択時の処理を追加。

リソースファイル

ピアノロールリングの画像ファイルを追加。

Resources/img/ViewMode-PianoRollRing.png
Resources/img/ViewMode-PianoRollRing@2x.png

2019-11-30 11:16 Updated by: yknk
Comment

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

MTScenePianoRollRing

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

MTScenePianoRollRingLive

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

OGLH::RotateYZ

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

MTGridRing

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

MTGridRindLive

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

MTNoteBoxRing

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

MTNoteBoxRingLive

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

MTNoteDesignRing

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

MTNoteRippleRing

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

MTNoteRippleRingLive

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

MTPictBoardRing

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

MTTimeIndicatorRing

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

2019-11-30 11:17 Updated by: yknk
Comment

対策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-30 11:17 Updated by: yknk
Comment

対策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-30 11:17 Updated by: yknk
Comment

対策5:設定ファイル

シーン設定ファイル

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

  • conf/PianoRollRing.ini
  • conf/PianoRollRingLive.ini
2019-11-30 11:18 Updated by: yknk
  • Status Update from Open to Closed
  • Resolution Update from None to Fixed

Attachment File List

No attachments

Edit

Please login to add comment to this ticket » Login