したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | |
レス数が1スレッドの最大レス数(1000件)を超えています。残念ながら投稿することができません。

おちゃめくらぶ掲示板

1371御茶目菜子:2012/10/28(日) 23:44:17
1画面プログラムだからこそ妥協ができない
プチコン用1画面プログラム「PETIT KEYBOARD mkII」を作ったにょ。
http://www.youtube.com/watch?v=lFLshk0LJmA
http://ww5.tiki.ne.jp/~ochame/petitcom/1page.htm#pkb2
これはプチコンmkIIに標準で備わっているBGMPLAY命令によるMML演奏機能を利用した
キーボード(鍵盤演奏)プログラムにょ。
プチコンではDSのタッチパネルが使用できるということもあって初代プチコンの頃から
鍵盤演奏プログラムは多く見かけられたにょ。
私もポケコンで作った1行プログラムを移植した「PETIT KEYBOARD」を作ったにょ。(今回
作った物とは異なりサンプルレベルのしょぼいものだけど)
私が知るだけでもプチコンにおいて鍵盤演奏が可能なプログラムは10作品以上存在するにょ。
ただ演奏するだけのものから本格的なシンセサイザープログラム「PX7」(ktさん作)の
ようなものまであるのだけどそれらすべてに共通するのがタッチペンでの演奏が前提と
なっているみたいな小さな鍵盤ということにょ。
具体的に数字を挙げると白鍵の横幅はすべてのプログラムが16ドットとなっており、縦幅は
50〜90ドットになっているにょ。
このため1列だと2オクターブ分、2列だと4オクターブ分確保可能にょ。
4オクターブあればそれほど困らないけどBGMPLAY命令は8オクターブ以上カバーしている
半音128段階分なので10オクターブ半をカバーしているけど上下1オクターブ分くらいは
音痴であまり使えないためまともに使えるのは実質8〜9オクターブ分くらい)ということで
1オクターブ単位で鍵盤をずらして演奏可能なプログラムも一部にあるにょ。

しかし、10作品以上作られていても手軽に演奏できるものはないため「無い物は作る」の
原則に従ってシンプルで演奏に特化した鍵盤演奏プログラムを作ることにしたにょ。
作るならば当然1画面を前提にするにょ。
指で演奏するならば鍵盤の大きさは大きい方がいいし、そのためには演奏したい曲の音域に
不要な鍵盤を表示しないで済むように鍵盤の位置も1つ単位で自由に変えられるようにしたい
ところにょ。
そうすれば必要な鍵盤のみが画面に表示可能になり結果として鍵盤のサイズは大きくなるわけ
だからね。
といっても、これは別に目新しいものではなく私は「棒歌ロイドキーボード」によって実現
しているにょ。
そのため1画面に収められる目処は付いていたにょ。

とはいえ、棒歌ロイドキーボードはあくまでボーカル演奏プログラムであり鍵盤演奏部分は
BEEPでおまけ程度の機能しかなかったためBGMPLAY命令に対応させるならば少し長くなる
(といっても1画面という制約が無ければ全く問題がないレベル)わけだし、作るならば
mkIIのホームメニューに対応したものにしたいので鍵盤や音色の設定もソースを書き換えて
実現するのではなくボタン操作によって実現する必要があるにょ。
これも行数の制約が無ければ簡単なことだけど1画面に収めるならばかなりのリスト短縮が
必要になってくるにょ。(最初から100%1画面に収まるようなレベルのものを1画面で
作っても面白みがあまりないためリスト短縮をフルに活用すればギリギリ収まりそうという
レベルのものが個人的には最高に感じる)

すでにリスト短縮を行っている棒歌ロイドキーボードがあるのだからそのソースを流用すれば
簡単にできるかと思いきや実際は単純に移しただけでは1画面には収まらず結局同じような
動作をするプログラムを1から作り直すことになったにょ。
リスト短縮のテクニックについてはすでにTipsコーナーでもある程度は書いているけど例えば
叩く鍵盤の位置をA(Aにはド〜シに対応した0〜6の値が入る)とした場合には34%(A+4)%3で
求めることができるにょ。(これはデフォで左端の鍵盤がドではなくラだったらさらに短く
できるけどこの度は分かりやすさを重視してド(C4)をデフォの左端の音にしている)
1画面プログラムを作った経験がある人なら分かると思うけど「これが限界」と思っていても
次の日にはあっさり別の方法でさらにリスト短縮が可能になったりするにょ。
それを繰り返すことで1画面に収まった上にリストに空きができてしまったので当初は予定
していなかった「デフォに戻すボタン」も導入することができたにょ。
実際、入れてみるとこれがあることで設定変更の快適性は飛躍的に高まっているにょ。

キーボード部分は「棒歌ロイドキーボード」を超えるものになっているのだけど唯一機能面で
棒歌ロイドキーボードから移植できなかったものはレガート奏法によるものにょ。
これは本来ならば鍵盤を離して次の音を押す必要性があるのだけど鍵盤をフリック操作に
よって行われるレガート奏法があれば鍵盤を離さずにすぐに次の音を出すことが可能になって
くるにょ。
これはピアノのレガート奏法を元にしたネーミングであり、某歌ロイドキーボードはこの
機能によって1音ずつ発音するTALK命令では顕著になってしまうブツ切れ感の軽減に成功
しているにょ。
これをこの度の「PETIT KEYBOARD mkII」で導入しなかったのはいくらリスト短縮をしても
導入のためには当初予定していた機能のどれかを削る必要があったからにょ。
TALK命令と違ってBGMPLAY命令はそこまでのブツ切れ感はないのでタッチしながら指を
移動するだけで十分になめらかな演奏が可能になるにょ。(ただし、上記の動画は一発撮りの
ためその奏法は行ってないためブツ切れ感があるけど)

あと候補には挙がったけど導入には至らなかったものには録音再生機能があるにょ。
これはTipsコーナーで書いているリプレイデータの記録をする方法を見ればわかるけど
それ自体は別に難しくもなんともないにょ。
ただし、その録音、再生ルーチンは単純化しても数100バイトになってしまうにょ。
これは10KB以上のプログラムならば「たかが数100バイト」なのだけど1画面プログラム
では理論上最大でも696文字分(実際の1画面プログラムの最大はPETIT RUN mkIIの690文字)
ということで組み込むのに数100バイトかかるようなものは現実的ではないにょ。
したがって、録音再生機能は多少の需要があるのは分かっていたけど思いついてからすぐに
却下となったにょ。
それとDSの1点タッチのみの感圧式タッチパネルでもマルチタッチは擬似的に可能なので
それを使った和音演奏も考えたけどこれも1画面では実現が難しいし何よりマルチタッチ
制御はそこまで正確にできない(押した強さで座標が変わる)ということでさすがに
見送られてしまったにょ。(鍵盤数が5個程度で固定ならば何とか実現できそうだけど)

私が1画面に拘るのは制限がないと簡単にできてしまってつまらないからにょ。(創作では
なくてコードを打ち込むだけの作業になってしまう)
ゲームの場合は長いリストや多くのデータを使えば必ずしも面白くなるというものではない
ために制限がなくなれば面白いゲームが簡単にできるというわけではないけどツールの
場合はプチコンの能力を超えない限りは高機能、多機能のものにするのはそれほど難しい
というものではないにょ。
確かにPX7ほどのプログラムを作るには知識と根気が必要があり決して簡単ではないけど
少し考えたら出てくる程度の機能を詰め込んだプログラムならすぐに出来てしまうからね。
上記のようにリプレイ機能にしたって搭載が難しいのではなく1画面に収めるのが難しい
(というか不可能)というだけのことにょ。
そのため1画面でない普通のプログラムを作る場合にはプチコンの能力を超えない限りは
自分が作りたいものは作れてしまう(完成に時間がかかる超大作は最初から作ろうとは思わ
ない)ためバランス調整や操作性を良くしたりとかそういう部分しか楽しみがないにょ。

あと、私はプチコンの上達ポイントのほとんどをリスト短縮スキルに割り振っているような
感じなので中途半端なサイズのプログラムだとプログラム自体は凡庸なものになってしまい
がちにょ。。(ポケコンBASICの経験が28年くらいあるからプチコンのSmile Basic命令の
使い方さえ覚えるだけ自分が作りたいものは作れるためリスト短縮以外のスキルを上げる
必要性も感じないというのもあった)
1画面プログラムは「1画面」というリストサイズだからこそ限界までリスト短縮をしたり
できるにょだからこそ、限界までたくさんの機能を詰め込むことに意義があるにょ。
この辺は限界に挑戦したことがないとなかなか伝わりにくいけどね。
ポケコンならば処理速度の関係でアクションゲームを快適に遊べるようにするために限界に
挑戦する必要があったけどプチコンならば少なくとも私が作っているようなレベルのもの
だと簡単に60fps出てしまうし、それ以上の速度が出ても無意味なのでリストサイズに
特化した制限を課しているにょ。
自分で制限を設けないとプチコンならば8ビット機の市販ソフトレベルのものは十分に
作れてしまうためもしも限界に挑戦するならばそのレベルのものを作る必要があるにょ。
これが1画面という制限を入れることでそんな市販レベルのものを作るよりは低いハードルで
その限界に挑戦することが可能になるにょ。(プチコンを買って最初の頃に作ったものは
まだ不慣れであったため全然限界に挑戦できてないけどそれは初心者講座のネタに使えて
いるからまぁ良しとする)

「1画面プログラムだからお手軽に作れる」と考える人もいるかもしれないけど私の場合は
リスト短縮も何も考えずに作った数KB程度のプログラムが最もお手軽にできるにょ。
そうした開発速度優先プログラムはプチコンプログラムコーナーの欄外に正式コンテンツ外
として入れるに止まっているにょ。(ちょっと面白いネタを思いついたけど1画面では実現
するのが難しいというものはわざわざ限界に挑戦する必要もないのでこのようにお手軽に
作ってtwitterなどで公開している)
それは具体的なタイトルを挙げると2〜3時間で作った「ハカセジャンプ」や「リンク
スライダー」などが相当するにょ。
「ダミーちゃん危機一髪」もグラフィックデータ作成時間を込みで4時間くらいだから
かなり手抜きプログラムなのだけどこちらは一応正式コンテンツに加えているにょ。

というわけで、この度作った1画面プログラム「PETIT KEYBOARD mkII」は1画面ながら私が
必要としている機能を詰め込むことができたにょ。(最も重要なのは指で手軽に演奏できる
ような鍵盤にするということだったし)
しかし、あくまで私自身が欲しい機能であってそれが他の人から見ると不足している可能性は
十分にあるにょ。
基本的に私は自分が欲しいものや面白そうだと思ったものを自分で作っているため作る
過程でその面白いと思っている部分や自分が欲しいと思った機能が明確になっているため
それに関しては妥協ができないにょ。(面白さとはあまり関係ない表示部分などについては
妥協をしてしまうことがあるけど)
だからこそ、作っている過程が楽しめるにょ。(最初から簡単にできると分かっていて作る
ならば楽しむことはできない)
そして、それを完成のちに自分で楽しめるわけだし、それが他人に楽しんでもらえるならば
これ以上に幸せなことはないにょ。



《 10/29追記 》

PETIT KEYBOARD mkIIのリストとQRコードが完成前のものだったので完成品と差し替えました。
10/29午前中までにQRコードを読み込んだ人は再度読み込んでください。




掲示板管理者へ連絡 無料レンタル掲示板