Ticket #37955

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

Open Date: 2018-02-12 01:34 Last Update: 2018-02-20 01:30

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

Details

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

Attachment File List

No attachments

Ticket History (3/10 Histories)

2018-02-12 01:34 Updated by: yknk
  • New Ticket "iOS版 内部シンセサイザのサポート" created
2018-02-12 01:34 Updated by: yknk
  • Details Updated
2018-02-12 02:03 Updated by: yknk
  • Details Updated
  • Summary Updated
2018-02-19 01:12 Updated by: yknk
Comment

仕様

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

対応方針

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

2018-02-19 01:14 Updated by: yknk
Comment

対策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シンセサイザ制御クラスを新規作成。

(Edited, 2018-02-19 23:00 Updated by: yknk)
2018-02-19 01:14 Updated by: yknk
Comment

対策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)選択ビュークラスを新規追加。

(Edited, 2018-02-19 23:01 Updated by: yknk)
2018-02-19 01:15 Updated by: yknk
Comment

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

対策4:マニュアル改定

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

2018-02-20 01:30 Updated by: yknk
  • Status Update from Open to Closed
  • Resolution Update from None to Fixed

Edit

Please login to add comment to this ticket » Login