iPhone/iPad用ドット絵エディタ「EDGE touch」

最近のエントリー

ドラムンベースでさわやかな曲。
カーステで大音量で聴きたいですね。

MFCでコマンドライン引数を解析する方法と言えば、
CWinApp::ParseCommandLine
を使うやり方が一般的・・・と言いますか、SDIやMDIプロジェクトだったら、最初からこれが使われているため、ここを拡張して独自の起動引数なんかを解析するのが普通かと思います。

長年その方法でやっていたのですが、最近になって __argc__targv (頭にアンダースコア2個) を使えば、解析済みの引数が参照出来る事を知りました。
ParseCommandLineを使うとわざわざCCommandLineInfoの派生クラスを作る必要があったりして面倒くさいのですが、__argcと__targvならば簡単に参照できるので、場合によってはこちらを使った方が手軽そうです。

データ構造として、起動引数を1クラスに管理させたい、とか思い始めるとParseCommandLineの方が良いのかなとも思ったりして、悩みどころではあります。

ホイールイベントはフォーカスを持つウィンドウで優先的に処理されるようなのですが、場合によってはフォーカスよりもマウスカーソル位置を優先したい事があります。

今まで結構回りくどいやり方をしていたのですが、PreTranslateMessageにちょろっと書いたら上手く動いたようなので、載せておきます。
(あまり動作検証していませんが)

BOOL CMainFrame::PreTranslateMessage(MSG* pMsg)
{
	if (pMsg->message == WM_MOUSEWHEEL) {
		CWnd* pWnd = WindowFromPoint(pMsg->pt);
		if (pWnd && IsChild(pWnd)) {
			pMsg->hwnd = pWnd->GetSafeHwnd();
		}
	}

	return __super::PreTranslateMessage(pMsg);
}

Ver.1.39でのみ、[曲線のカスタマイズ]画面で式を入力すると不正終了する不具合が見つかりまして、修正版をアップしておきます。

ダウンロードはこちらからどうぞ↓
https://takabosoft.com/domino

Domino Ver.1.39をリリースいたしました。
今回も主に細々とした要望対応です。
また何か副作用や間違い等ありましたら、wikiへご連絡ください。

ダウンロードはこちらからどうぞ↓
https://takabosoft.com/domino

いくつか新機能とその使い方をご紹介したいと思います。

スケールとコードの扱いを拡張

ピアノロールへスケール・コードを表示する際、スケールは今まではメジャー・マイナーの2種類しか扱っていませんでしたが、他の種類も選べるようにしました。
scale00

また、自由に編集できるようにもしておきました。
scale01

さて、小節毎にスケールやコード情報をコメントのような形で曲に保存しておきたい、という要望が以前ありまして、今回のバージョンではそういった事も出来るようにしておきました。

[編集]メニューの[スケール]または[コード]を選びます。
scale02

一覧画面が表示されますので、[追加]ボタンを押して小節とスケールまたはコードを設定し、[OK]ボタンをクリックします。
この設定は複数設定することができます。
scale03

こうすることで、ピアノロールのヘッダーにスケールまたはコードが表記されます。
scale04
ちなみに、調号は( ) スケールは < > コードは [ ] に囲まれて表示されます。

曲としてスケール・コードを登録した場合は、この情報を元にピアノロールへスケール・コードを表示させることもできます。

[ピアノロールにスケール/コードを表示]画面において、[演奏データのスケール(またはコード)を参照する]を選んでください。
scale05

ピアノロールに反映されます。
scale06

小節毎にスケール・コードの表示を変えたい場合は、上記の方法で行ってください。

※ 今回のバージョンでも調号とコードは連携しません。

複数チャンネルを一度にリアルタイム録音

MIDI-INデバイスは4つまで設定できますが、リアルタイム録音はすべて同じトラックに対して記録されていました。
これを、デバイス・チャンネル毎に別々のトラックへ記録できるようにしました。

例えば「ギタ次郎」(今も売ってるのかな?)のような、MIDIギターから入力を行う際は弦毎に別々のチャンネルとして入力がありますが、これをそのまま各トラックに割り振って録音出来るようになりました。

複数チャンネル録音を行うには、[リアルタイム録音]画面の録音モードを[複数チャンネル]にし、[設定]ボタンをクリックします。
rec00

振り分け設定画面が表示されますので、[追加]ボタンを押し、どの入力を、どのトラックへ記録するかを設定してください。
この振り分け設定は複数設定できます。
rec01

あとは、録音を開始すれば、設定したとおりに録音されます。

※ 複数チャンネル録音中は音が鳴りませんが、これは仕様です。

S字曲線の入力

イベントグラフにおいて、S字曲線を入力する事が出来るようになりました。
curve

この曲線を使うと、始点と終点をゆっくりと繋げることができます。

イベントグラフの内容を、直接タイプして変更

イベントグラフへ表示する内容を切り替える方法は

  • コンボボックスをクリックしてツリーから選ぶ
  • コンボボックスの右に並んでいるボタンから選ぶ
  • イベントリストのイベントを選んだ状態で[イベントグラフペイン1で表示]コマンドを実行する

・・・といったものがありますが、新たに直接キーボードからCC#や名前を入力して表示を切り替えられるようにしました。

コンボボックスを右クリックすると、入力モードになります。
eg00

CC番号または名前を入力します(一部でもOKです)
eg01
(この検索ルールはイベントリスト上のCCイベントのEvent列でキーボード入力を行った際と同じです。)

エンターキーを押すと確定します。
eg02

タイムストレッチ機能

タイムストレッチ機能は、選択範囲に含まれるイベントの時間(間隔・Gate)を変更する機能です。

タイムストレッチを行うには、行いたい範囲を選択した状態で、[イベント]メニューの[タイムストレッチ]を実行します。
stretch00

新しい長さをMeas:Tick(Meas:Beat:Tick)または倍率で指定して[OK]ボタンをクリックします。
stretch01

タイムストレッチが行われました。
stretch02

MIDI-OUTの設定をdmsファイルへ保存

基本的にDominoはMIDI-OUTの設定を固定して使うように作られていますが、曲毎に設定を変える必要がある場合、毎回MIDI-OUTの設定を行うのは面倒です。

そこで、MIDI-OUTの設定情報をdmsファイルへ一緒に保存しておけるようにしました。

MIDI-OUTの設定情報を保存するには、[曲のプロパティ]画面を表示させ、[現在のMIDI-OUT設定をファイルへ保存する]をクリックし、[OK]ボタンをクリックします。
midiout00

こうして保存されたdmsファイルを開こうとすると、設定を復元する必要がある場合に限り、次のようなメッセージが表示されます。
midiout01

[はい]をクリックするとMIDI-OUT設定が復元されます。

テンポの変更手段を追加

ツールバー上のテンポ表示欄へマウスカーソルを合わせてホイールを上下に動かすことで、テンポを桁毎に変更できるようにしました。
tempo00

ここで変更されるテンポイベントは、現在の演奏位置が影響を受けているテンポイベントです。
例えば、10小節目と20小節目にテンポイベントがあり、演奏位置が15小節の時にホイール操作でテンポを変更すると、10小節目にあるテンポイベントが変更されます。

また、ツールバー上のテンポ表示欄を左ダブルクリックすることで、該当するテンポイベントを表示させることも出来ます。

ループマーカーと選択範囲の優先度を切り替え

今までは、ループマーカーと選択範囲が両方存在する状態でループ再生を行うと、選択範囲が優先されてきました。
loop00

ただ、状況によってはループマーカーを優先させたい事もあります。
そういった場合は、[演奏]メニューの[ループ]→[選択範囲優先]をオフにすれば、ループマーカーが優先されるようになります。

loop01

変更点一覧

  • スケールとコードを演奏データとして入力できるようにしました。
    [編集]メニューの[スケール]または[コード]から指定できます。
  • [ピアノロールにスケール/コードを表示]機能を改良しました。
    スケールの種類を増やしました。
    カスタムモードを追加し、自由に色を塗ることが出来るようになりました。
    演奏データとして入力されたスケールまたはコードをピアノロールへ表示するモードを追加しました。 これにより、小節ごとに異なるスケールまたはコードを表示出来るようになりました。
    (調号とコードの連携は行っていません。)

  • [リアルタイム録音]画面で複数チャンネルを一度に録音できるようにしました。
    デバイス・チャンネルごとに記録するトラックを指定することができます。
    [リアルタイム録音]画面の[録音モード]を[複数チャンネル]にし、[設定]ボタンを押すと振り分け設定が行えます。
    複数チャンネル録音中は、入力に対して音が出ませんが、仕様です。
  • イベントグラフの曲線に[S字曲線]を追加しました。 この曲線を使うと、始点と終点を滑らかに繋げることができます。
  • イベントグラフの切り替えコンボボックス部分で右クリックをしたら、直接文字を入力してコントロールチェンジマクロを検索出来るようにしました。
    ルールはイベントリストと同じで、数値を入力するとCCMIDとして解釈され、文字列を入力するとCCM名として解釈されます。
  • [タイムストレッチ]機能を実装しました。
    [イベント]メニューの[タイムストレッチ]から実行できます。
  • ツールバー上のテンポ表示欄をマウスホイールで値補正(桁ごと)、ダブルクリックで該当イベントへフォーカス移動させるようにしました。
  • MIDI-OUTの設定をdmsファイルへ保存出来るようにしました。
    MIDI-OUTの設定を曲ごとに変える方はこちらの機能を使っていただくと便利かと思います。
    [曲のプロパティ]画面で、現在のMIDI-OUT設定を保存することができます。
    設定が保存されたファイルを開く際、環境設定のMIDI-OUT設定と、ファイル内のMIDI-OUT設定が異なる場合は、「復元しますか?」と問い合わせた上で設定を復元します。
  • [拍子]の設定時に分母32を選べるようにしました。
  • リアルタイム録音画面で、テンポ(%)を記憶するようにしました。
  • イベントリストの配色に「背景灰色モード」を追加しました。
    [環境設定]画面の[イベントリスト (1)]から設定できます。
  • ピアノロールにフォーカスがある状態でノートと同じタイミングにプログラムチェンジを挿入した場合は、をノートより前に挿入されるようにしました(CCと同じ挙動にしました)。
  • 数式で関数log, exp, sqrtを使えるようにしました。
  • 曲線式で変数ymin, ymaxが使えるようになりました。これらを使うとCCのValue値が取りうる範囲(最小値・最大値)を参照する事ができます。
  • SMFを読み込んだときに、分解能に合わせてトラックのデフォルトGateを変えるようにしました。
  • ループ再生を行う際、ループマーカーと選択範囲とどちらを優先するかを切り替えられるようにしました。
    [演奏]メニュー→[ループ]→[選択範囲優先]のオン/オフで選択範囲優先/ループマーカ優先を切り替えられます。
  • [プログラムチェンジイベントのプロパティ]画面において、画面に表示されているキーボード上をマウスで左にドラッグしていくと、Note#=0未満になっても音が出るバグを修正しました。
  • 演奏中にトラックリスト画面のウィンドウサイズを小さくしていくと落ちる不具合を修正しました。
  • 曲線式において「xf^5」というような変数をべき乗する式が動いていなかったバグを修正しました。
    また、既存の曲線プリセット式を、すべて書き替えました(べき乗を使ったりして)。

  • [選択範囲へ曲線・直線を入力]画面で式が保存されていなかったので、OK時には保存するようにしました。
  • SMF書き出しの際、ノートが重複していた時のメッセージをもう少し解りやすくしました。
  • イベントリストでValueなどを入力中、他にフォーカスが移ったら入力ボックスを閉じるようにしました。
  • トラックリストの青い線の上に演奏線が来ると反転して黄色になりますが、見にくいため赤くなるようにしました。
  • [ベロシティコンプレッサ]の入力/出力ゲインの演算方法を[加算]か[掛け算]かを選べるようにしました。

記事検索

コミュニティ

Banner designed by でゅぽる様
ドット絵掲示板
ドット絵掲示板
自作の「ドット絵」を投稿することができます。ドッターさん同士の交流の場としてご利用ください。
TakaboSoft Wiki
TakaboSoft Wiki
ソフトウェアに関する質問・不具合報告・要望などを書き込むことができます。