OSDN Ticket Archive


Ticket #37955

iOS版 内部シンセサイザ追加

登録: 2018-02-12 01:34 最終更新: 2018-02-20 01:30

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

詳細

内部シンセサイザを追加する。 Wavetableファイル(DLS/SF2)を指定可能とする。

チケットの履歴

2018-02-12 01:34 更新者: yknk
  • 新しいチケット "iOS版 内部シンセサイザのサポート" が作成されました
2018-02-12 01:34 更新者: yknk
  • 詳細が更新されました
2018-02-12 02:03 更新者: yknk
  • 概要が更新されました
  • 詳細が更新されました
2018-02-19 01:12 更新者: yknk
コメント

仕様

  • 内部シンセサイザの名称は"Internal Wavetable Synthesizer"とする。
  • MIDI出力デバイスとして選択可能とする。
  • Wavetableファイル(DLS/SF2)を指定可能とする。
  • 拡張子が *.dls *.sf2 のファイルを設定画面で選択する。
  • 16チャンネルをサポートし、10チャンネルはパーカッション固定とする。
2018-02-19 01:13 更新者: yknk
コメント

対応方針

Appleが提供するサンプラーをそのまま利用することで、お手軽に対応する。 サンプラーについて十分な情報が公開されていないため、詳細な仕様と性能は不明。

2018-02-19 01:14 更新者: yknk
コメント

対策1:シンプルMIDIライブラリ修正

SMAppleDLSDevCtrl

未使用のためヘッダファイルとmmファイルを削除する。

SMIDILib.h

参照するヘッダファイルを更新

変更前
#import "SMAppleDLSDevCtrl.h"
変更後
#import "SMWavetableSynthCtrl.h"

SMOutDevCtrlEx クラス

enum SMPortType の PortAppleDLSDevice をPortWavetableSynthに差し替え。 メンバに保持していたApple DLS Music Device (SMAppleDLSDevCtrl)のオブジェクトを、 内部シンセ(SMWavetableSynthCtrl)のオブジェクトに差し替え。 これに伴い、m_AppleDLSDevCtrlに対してメソッドを呼び出している箇所を、 すべてm_WavetableSynthCtrlに差し替え。

SMOutDevCtrlEx::SetInternalSynthsizerWavetableFilePath

ウェーブテーブルファイルパス設定メソッドを追加。

SMOutDevCtrlEx::GetManufacturerName

メーカー名取得メソッドを追加。出力デバイスからメーカー名を取得。

SMOutDevCtrlEx::OpenPortDevAll

ポートに内部シンセが選択されている場合だけ、内部シンセのオープン処理を実行するように修正。

SMSequencer クラス

MIDI出力デバイス制御(SMOutDevCtrl)のメンバを、拡張MIDI出力デバイス制御(SMOutDevCtrlEx)のメンバに差し替え。

SMSequencer::SetInternalSynthsizerWavetableFilePath

内部シンセサイザWavetableファイルパス登録メソッドを追加。

SMSequencerThread::run

スレッド優先度を0.8から0.9に変更。内部シンセサイザを追加したため、おまじない。

SMLiveMonitor クラス

MIDI出力デバイス制御(SMOutDevCtrl)のメンバを、拡張MIDI出力デバイス制御(SMOutDevCtrlEx)のメンバに差し替え。

SMLiveMonitor::SetInternalSynthsizerWavetableFilePath

内部シンセサイザWavetableファイルパス登録メソッドを追加。

SMWavetableSynthCtrl クラス

Wavetableシンセサイザ制御クラスを新規作成。

(編集済, 2018-02-19 23:00 更新者: yknk)
2018-02-19 01:14 更新者: yknk
コメント

対策2:MIDITrail本体修正

MIDITrailApp::getWavetableFilePath

Wavetableファイルパス取得メソッドを追加。

MIDITrailApp::onPlayButton

シーケンサへのWavetableファイルパス設定処理を追加。

MIDITrailApp::onStartMonitoring

ライブモニタ制御へのWavetableファイルパス設定処理を追加。

MTFileViewCtrl::makeFileList

MIDIファイル一覧を作成するとき、拡張子が *.dls *.sf2 のファイルを無視するように修正。

MTSettingBGIMGViewCtrl::makeFileCellForIndexPath

画像ファイルが存在しない場合のメッセージにファイル拡張子を追記。

MTSettingMIDIOutDevViewCtrl クラス

MIDI出力デバイス制御(SMOutDevCtrl)のメンバを、拡張MIDI出力デバイス制御(SMOutDevCtrlEx)のメンバに差し替え。

MTSettingViewCtrl クラス

MIDI出力デバイス制御(SMOutDevCtrl)のメンバを、拡張MIDI出力デバイス制御(SMOutDevCtrlEx)のメンバに差し替え。 Wavetable選択ビュー(MTSettingWavetableViewCtrl)のメンバを追加。

MTSettingViewCtrl::initWithNibName

Wavetable選択ビューの生成処理を追加。

MTSettingViewCtrl::numberOfSectionsInTableView

内部シンセサイザ設定セクション追加に伴うセクション数変更を反映。

MTSettingViewCtrl::tableView titleForHeaderInSection

内部シンセサイザ設定セクション追加に伴うセクションヘッダ追加。

MTSettingViewCtrl::tableView numberOfRowsInSection

内部シンセサイザ設定セクション追加に伴うセクション内項目数を追加。

MTSettingViewCtrl::tableView cellForRowAtIndexPath

内部シンセサイザ設定セクション追加に伴うセル作成処理を追加。

MTSettingViewCtrl::makeInternalSynthsizerCellForIndexPath

内部シンセサイザ用セル作成メソッドを追加。

MTSettingViewCtrl::onSelectInternalSynthesizerCellForIndexPath

内部シンセサイザ用セル選択イベントメソッドを追加。 Wavetableファイル選択ビューを表示。

MTSettingWavetableViewCtrl クラス

Wavetableファイル(DLS/SF2)選択ビュークラスを新規追加。

(編集済, 2018-02-19 23:01 更新者: yknk)
2018-02-19 01:15 更新者: yknk
コメント

対策3:DLS/SF2ファイル読み込み対応

Targets: MIDITrail / Info / Document Types に次の二項目を追加。 Webブラウザやメールで *.dls *.sf2 ファイルを開いたときの"Open in..."に対応する。

----
Name: Downloadable Sounds
Types: public.downloadable-sound
----
Name: SoundFont
Types: com.soundblaster.soundfont
----

2018-02-19 01:15 更新者: yknk
コメント

対策4:マニュアル改定

マニュアルの「3.導入方法 (2)音源の準備」を改定し、内部ウェーブテーブルシンセサイザを利用する方法を追記。 説明用の画像を追加する共に、既存の画像を作り直した。(Sound1.png, Sound2.png, Sound3.png) マニュアルの「5.設定 (4) Internal Wavetable Synthesizer」を追加。

2018-02-20 01:30 更新者: yknk
  • 解決法なし から 修正済み に更新されました
  • 状況オープン から 完了 に更新されました

添付ファイルリスト

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