iPad専用アクションゲーム「スライムは投げる」

最近のエントリー

音量(パンポット)はmidiOutSetVolumeを使えばあっという間に設定できるのですが、
これだとミュートチェックは外してくれません。

というわけでこちら(http://www.terra.dti.ne.jp/~vivas/delphi/mixerapi.html)のサイト様の説明を参考にさせて頂きながらミキサーAPIを使ってミュートを解除するコードを書いてみました。

MIXERLINE MixerLine = {sizeof(MIXERLINE)};
MixerLine.dwComponentType = MIXERLINE_COMPONENTTYPE_DST_SPEAKERS;
if (mixerGetLineInfo((HMIXEROBJ)nDevID, &MixerLine, MIXER_GETLINEINFOF_COMPONENTTYPE | MIXER_OBJECTF_MIDIOUT) == MMSYSERR_NOERROR) {
	MIXERCONTROL Ctrl;
	MIXERLINECONTROLS Ctrls = {sizeof(MIXERLINECONTROLS), MixerLine.dwLineID};
	Ctrls.cControls = 1;
	Ctrls.dwControlType = MIXERCONTROL_CONTROLTYPE_MUTE; 
	Ctrls.cbmxctrl = sizeof(MIXERCONTROL);
	Ctrls.pamxctrl = &Ctrl;
	if (mixerGetLineControls((HMIXEROBJ)nDevID, &Ctrls, MIXER_GETLINECONTROLSF_ONEBYTYPE | MIXER_OBJECTF_MIDIOUT) == MMSYSERR_NOERROR) {
		MIXERCONTROLDETAILS Details = {sizeof(MIXERCONTROLDETAILS)};
		Details.dwControlID = Ctrl.dwControlID;
		Details.cChannels = 1;	// 決めうちで良いらしい
		MIXERCONTROLDETAILS_BOOLEAN Boolean = {0};
		Details.paDetails = &Boolean;
		Details.cbDetails = sizeof(MIXERCONTROLDETAILS_BOOLEAN);
		if (mixerSetControlDetails((HMIXEROBJ)nDevID, &Details, MIXER_SETCONTROLDETAILSF_VALUE | MIXER_OBJECTF_MIDIOUT) == MMSYSERR_NOERROR) {
			// 成功
		}
	}
}

この制御をDominoに組み込めば「音が鳴らない!」と助けを求める方が激減する予感。

レイヤの概念をざっくりとご説明。
(DominoのSC-8850音源定義ファイルだとレイヤ設定できませんが、エクスクルーシブでやればOK!!)

例えば「ピアノとオルガンの混ぜた音を使いたい」と思ったら、
トラック1をピアノ、トラック2をオルガンにしておいて、(プログラムチェンジ以外は)全て同じ演奏データ(=ノート、ピッチベンドカーブ等)にしておくのが一番単純な実現方法かと思います。

layer000

ただ、これだとトラック1のメロディを変えたら、それをトラック2にコピーする手間が発生します。
また、演奏データ量が多いと、同じ内容を二重で送信するため、その分MIDI通信時や音源側に負荷が掛かります(MSGSの場合は関係ないかもしれませんが)。

レイヤを使うとこのあたりが少しすっきりします。
まず、音源のパート2に対して、プログラムチェンジ命令(オルガンになれ!)と受信チャンネル変更命令(チャンネル1を受信しろ!)を投げます。
layer001

あとは、チャンネル1に対して演奏データを送信すれば、パート1とパート2がそれを受信してピアノとオルガンの音が鳴るというわけです。
layer002

これでしたら、Domino側の演奏データやMIDIケーブル上を流れるデータは1トラック分で済みますし、音源側の負荷も減らせます。
(SC-8850なんかでは、結構もたりが軽減されます)

今回の例は音色を変えただけですが、やりようによっては、オクターブの違う音を重ねたり(キーシフトに対応した音源で可能)、パンポットの左右で重ねたり、といった事ができます。

デメリットも当然ありまして、一度受信チャンネルをずらしてしまうと、例えばパート2(オルガン)だけ音量を調節したいと思ってもすぐには変えられなかったりします。
このあたりはケースバイケースといった所かと思います。

こんな感じで、受信チャンネルをずらして1トラック分の演奏データで複数のパートを重ねて鳴らす手法の事を「レイヤ」と言います(たぶん)。
(すみません、結構憶測が含まれるので間違っていたら突っ込み入れてください。)

ちなみに音源によっては受信チャンネルをずらさなくても、(音を作り込む機能として)レイヤを組める物があります。
ハードウェア音源を持っている方は一度マニュアルを読んでみると新たな発見があるかもしれませんよ??

EDGE touch Ver.1.05が公開となりました。
アップデート通知が来ていると思いますので、当ててみてください。


icon
 EDGE touch Ver.1.05
 日本:230円 米国:1.99ドル

iTunes内のEdge touch販売サイトへ

Ver.1.05リリースにあたって

そもそも、EDGE touchはiPhoneプログラミングの勉強用として作り始めたこともあって、
まずはアプリがちゃんと動くことが目標でした。
その結果、「機能は一通り揃っているけど・・・なんか使いづらい」アプリになってしまったかと思います。

途中でミニカラーパレットが付いたことで、多少使い勝手が良くなったと思うのですが、
その頃あたりから、もう一度インターフェースの再検討をしようと思うようになり、
今回勢い余ってアプリの作り直しを行いました。

作り直しにあたって、このホームページのデザインを作っていただいたブロックワークスさん(http://blockworks.jp/)にこの件をチラっとご相談したところ、
お忙しい中快くご協力してくださいまして、2人であーだこーだ言いながらインターフェースを決めていき(だいぶ私が無茶を言っていた気がしますが)、
最終的にブロックワークスさんに格好良いデザインに仕上げて頂きました。

メイン画面

メイン画面はこんな感じになりました。
IMG_0166

片手でも操作出来るように、編集エリアを左上側に広く確保しています。

ツール切り替え機能

旧バージョンでは、ツール切り替えが手間だったのですが、新バージョンでは
ツール一覧も右上に出ていますので、切り替えも効率よく行えると思います。

なお、ツールは3つだけではなく、スクロールすると他の物が出てきます。
比較的よく使うツールだけ表に出しておき、あまり使わないツールは
奥にしまっておく感じです。

当然よく使うツールの数や種類は人によって違ってくると思いますので、
環境設定でカスタマイズ出来るようにしてあります。

Screenshot 2010.02.05 21.14.22

Screenshot 2010.02.05 21.14.33

オプション機能、ペンサイズなど

オプションボタンを押すと、現在選ばれているツールのオプションが表示されます。
例えば、ペンツールではここでペンの太さを変えることができるようになりました。

Screenshot 2010.02.05 21.19.24

なお、選択系ツールに切り替えた場合は、自動的にオプションが表示されますので、
選択→コピー→貼り付け と言った一覧の操作がスムーズに出来るようになりました。

Screenshot 2010.02.05 21.20.38

スポイト機能

旧バージョンで有ったスポイトボタンは無くなりまして、長押しでスポイトを行うように仕様を変更しました。

PocketPC版のEDGEの影響で「長押し」に偏見があったのですが、EDGE touchには長押しの方が適していると判断し、仕様変更に至りました。
(ボタンも減らせますしね(^^;)

Screenshot 2010.02.05 21.24.03

長押しと判定するまでの時間は、環境設定で変更する事もできます。

カラーパレット

カラーパレットボタンは一度タップすると右側がミニカラーパレットに切り替わります。
旧バージョンと同じで、フリックでスクロール(256色表示)、タップで描画色の変更ができます。
また、ダブルタップでの色の調節も特に変わっていません。

ミニカラーパレットが出ている状態で、もう一度カラーパレットボタンを押すと、今度はカラーパレット画面に切り替わります。
この画面内では背景色の変更などの他に、新たに「色の入れ替え」「グラデーションの作成」が出来るようになりました。
Screenshot 2010.02.05 21.26.54

また、パレットだけを保存することが出来るようになりました。
保存しておいたものを後から読み込むことは当然できますが、
画像新規作成時に、保存してあるパレットを指定して書き始めることが出来るようになりました。

Screenshot 2010.02.05 21.27.47

レイヤ

レイヤボタンを押すと右側にミニレイヤ(?)が表示されます。
ここでカレントレイヤの切り替えや追加がすぐに行えます。
Screenshot 2010.02.05 21.30.02

ミニレイヤが表示されている状態でもう一度レイヤボタンを押すと、今度はレイヤ画面が表示されます。
こちらは旧バージョンと機能的な変更はありません。
Screenshot 2010.02.05 21.32.06

トレース機能

初期のバージョンから要望の多かったトレース機能が付きました。
トレース機能を使うと、他のペイントソフトで描いた絵やカメラで撮った写真などを下絵にして
ドット絵を描くことができるようになります。
(背景色部分が透過して下絵が見えるようになります)

Screenshot 2010.02.05 21.35.08

閲覧モード

閲覧ボタンを押すと、邪魔なバーとグリッドが消えた状態でドット絵を見ることが出来ます。
仕上がり具合などを眺めるときに使えると思います。

ちなみに、拡大表示している時のスクロール単位が細かくなりました。
(拡大時に、見た目上での1ピクセル単位でスクロールが可能になりました。)

アニメーション機能

アニメーション機能(レイヤアニメーション機能)もいろいろと変更しました。
旧バージョンでは全体でしかスピードを変えられませんでしたが、
新バージョンではフレーム毎にディレイ値を変更できるようにしました。

Screenshot 2010.02.05 21.37.46

一括での変更や、ディレイ単位、アニメ順序の設定も行うことができます。

Screenshot 2010.02.05 21.39.57

アニメーション用のフレームを描きやすくするために、オニオンスキン機能も用意いたしました。
オニオンスキン機能を使うと一つ下のレイヤを薄く表示させておくことが出来ますので、
連続した絵を描きやすくなると思います。

Screenshot 2010.02.05 21.41.55

また、旧バージョンではレイヤの上限が10枚だったため、アニメーションも10フレームしか描くことができませんでしたが、これだと短いアニメしか作れませんので、レイヤの上限を128枚まで引き上げました。

ただし、画像サイズによっては128枚までレイヤを増やすことができません。
64×64でしたら128枚まで作成が可能ですが、320×480では今まで通り10枚までとなります。

メール添付機能

メール添付機能を実装しました。
アニメーション機能で作った画像はアニメーションGIFとして添付する事もできます。

Screenshot 2010.02.05 21.45.30

メール作成画面でアニメGIFがアニメーションしたのはちょっと驚きでしたが、
オリジナルの動く絵文字なんかも作って送ることも出来てしまいますので、新たな遊び方ができそうです。

edgetouch

是非、新しくなったEDGE touchで遊んでみてください。

DirectShowの動画編集機能(DES)を使っていろいろ実験していたところ、
アルファブレンディングがどうにも上手く行かなかった。

http://msdn.microsoft.com/ja-jp/library/cc352035.aspx

ちゃんとやったつもりが、動画プレビュー時に何故かアプリが何事もなかったかのように終了してしまう(例外なども無し)。
各関数のエラー値を見たりエラーログ出力機能を使ったりしても原因を特定できず・・・。

ふと、コンパイルしたEXEをエクスプローラ上から起動してみたら上手く起動できましたorz
なんですかこれ、Vsual Studioの「デバッグの停止」が誤爆してるんだろうか??

新年あけましておめでとうございます。
本年もよろしくお願いいたします。

昨年を振り返ってみると、iPhoneアプリなど新しい分野に挑戦する事が出来たので、良い1年だったなぁと思います。

触った言語としましては、

  • C++:多め
  • ObjectiveC:多め
  • C:ちょろっと
  • AIR(ActionScript):そこそこ

と言った感じでした。
アパッチモジュールをCでちょこっと書いた時はしんどかったですが、それもなかなか良い経験だったなぁと思います(やっぱりオブジェクト指向言語の方が良いです)。

今年楽しみにしていることと言えば、まずは

  • グランツーリスモ5
  • Visual Studio 2010

あたりでしょうか。

特にVS2010はベータ版を触ってみたところ、MFCのクラスウィザードが復活しており、イベントハンドラの一括追加ができるようになったようです。
(VS2008までは、イベントハンドラが一つずつしか追加できないようで、すごく面倒でした。)
これだけでも買う価値は有るかと思います。

今年もしばらくはまだ忙しい時期が続きそうですが、またいろんな事に挑戦していきたいと思いますので、お付き合いいただければと思います。

記事検索

コミュニティ

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