プチコン 1画面プログラム
古くから短いプログラムリストでいかに面白いゲームを作るかという試みはポケコンや8bitパソコンで非常に多く見られました。その1つのレギュレーションが「1画面プログラム」 です。要するに1画面(プチコンの場合は編集画面で29文字×24行) にリストが収まるようなプログラムということです。
プチコンはmkII によって手軽にQRコード経由で入力が可能になりましたが、それまでは外部とのプログラムリストのやりとりは(実際に2台の本体を持ち寄って転送する場合を除けば)すべて手入力となっていました。そのためこういった短いプログラムリストは大きな意味がありました。
QRコードによる公開が主流になったとはいえいかに小さいサイズで面白いものを作るかというのを考えたり29文字×24行にいかにして収めるのかというパズルのようなプログラミングの楽しさが1画面プログラムにはあります 。
こちら にあるようなリスト短縮法を使って皆さんもぜひ1画面プログラム作りにチャレンジしてみてください。(1行プログラム もまた別の楽しさがあります)
カッコ内の日付は各プログラムの最終更新日です。
mkII 用にすべてのプログラムにQRコードを用意しました。(※音階演奏ソフトOMPに関してはMML演奏機能が標準機能にあるためQRコードは用意していません)
QRコードによるリストには末尾にREM文で簡易マニュアルを記しています。
QRコードの再配布は無改変の場合に限り自由に行ってもらって構いません。
プチコンはRUN(実行)は[START] ボタン、停止は[SELECT] ボタンで可能なので活用していきましょう。
あと[R][←][START] の同時押しでVRAM(画面表示) の初期化ができます。
《 注 意 》
mkII の「ホームメニュー」から「作品を見る」 で実行する場合において(ホームメニュー非対応 ) のゲームに関してはゲームオーバーと同時にメニュー画面に戻ってしまいます。そのためホーム画面から実行する場合は任意のキーを押した場合にゲームの先頭行を実行しそれまで時間待ちをするという処理を入れた方が良いでしょう。(※「プログラムを作る」 で実行した場合は問題ありません。)
やり方が分からない場合は @START を先頭行に加えて、FOR B=0TO 1024:B=BUTTON():NEXT:GOTO @START を最終行に加えるとゲームオーバーの際に[START]ボタンでリトライができます。
1画面以外のゲームはすべて(ホームメニュー対応 ) となっているので問題ありません。
ちなみに1画面に収まらないプログラムはこちら の方で公開しています。
ゲーム
【mkII専用】 (ホームメニュー対応 ) 2012年9月16日 公開
2012年9月30日 追記
QRコード (ファイル名:OCHAPRN2)
公式コンテスト「第1回プチコン大喜利」 にて技術賞を戴いた作品です。
《 遊び方 》
タイムアタック専用の疑似3Dのレースゲームです。
十字ボタンで左右に移動しAボタンを押すと加速、離すと減速します。Aボタンでリトライができます。
ちなみにデフォのコースの私の最高タイムはこのver1.1では17秒95です。(初出のver1.0では20秒89)。
《 前作からの変更点 》
基本的なゲーム内容は前作のPETIT RUN と同じですが、以下の変更点が行われています。
限界までのリスト短縮 (空白部分はわずか6文字)
リトライ機能搭載 (これでホームメニューに対応)
トップタイム表示搭載 (タイムアタックがより熱く)
視点移動搭載 (より良いプレイ感に)
表示を変更 (高精細かつなめらかなスクロール)
挙動を変更 (操作感がより良く)
PETIT RUN では導入できなかったリトライとトップタイム表示機能が大きいです。
PETIT RUN D では視点変更は導入されましたがその代償として画面表示がかなりチープになってしまいました。このPETIT RUN mkII は視点変更は左右のみですが画面表示はPETIT RUN を越えるものとなっています。
ここまでの改善ができたのは限界までのリスト短縮とリストの切り詰めのお陰です。最大で使用できる696文字(29文字x24行)の中でわずか空白部分は6文字(使用率99.1%)というのは今まで発表された1画面プログラムの中では最高 でしょう。
コースデータは前作PETIT RUN と同じであるためこちら を参考にしてください。(5行目のC$の内容を書き換える)
《 更新情報 》
◎ver1.1にバージョンアップしました。(2012/9/30)
変更点はゲームのプレイ速度アップとそれに伴うバランス調整です。
リストの変更点 (上記のリストとQRコードはすでにver1.1に変更済みです)
12行 X=X+R+S*S/265 → X=X+R+S*S/252
22行 H=H-1+S/1200 → H=H-1+S/1024
《 プレイ動画 》
VIDEO
↑TOP
【mkII専用】 (ホームメニュー対応 ) 2012年5月20日 公開
2014年7月19日 更新
QRコード (ファイル名:OCHA1JMP)
《 遊び方 》
縦スクロールジャンプアクションゲーム「JUMPING ISLAND」 の1画面版です。フルバージョンと同じく全9ステージになっています。最初にプレイするときにはCLEARを実行してください(ホームメニューからプレイするときには不要です)。RUNをしたらキーボードの1〜9のいずれかを押してステージ選択を行います。
キャラは下画面をタッチすることでアナログコントローラのように360度自由な方向に自由な速度で動かすことができます 。タッチした画面から手を離すとジャンプします。ジャンプ中に下画面をタッチすることでジャンプの距離や方向を調整できます。
島を足場にして向こう岸にたどり着けばクリアです。画面外や海の上に着地するとゲームオーバーです。クリアやゲームオーバーの時は再び[A] ボタンでリトライができるため再びプレイしたいステージを選択してください。
《 攻略法 》
このゲームはジャンプしていない時のみスコアが入りますが、狭い隙間はジャンプせずに渡ることができる ためジャンプ回数を減らせば高スコアが狙えます。またジャンプ回数が少なくなるルートを見つけ出すのも高スコアの鍵 になります。
フルバージョンと同じく全力で後ろ移動を行うことでスクロールに合わせてその場に静止することが可能になります。これを使わないとクリアは難しいでしょう。ただし、当たり判定は足場に身体の一部でも乗っていればセーフだったフルバージョンとは異なり足場に身体の中央部分が乗ってないとミス になります。
なお、ステージ構成はフルバージョンとは異なっていますが、全ステージクリアできることを確認しているので頑張ってクリアしてください。
ちなみにステージ1の私の最高スコアは108379点です。
《 更新情報 》
◎ver.1.1 (2014/07/19)
ver.1.0からの主な変更点
限界までのリスト短縮 (空白部分はわずか7文字)
リトライ機能搭載 (これでホームメニューに対応)
スコア加算方式をフルバージョンとほぼ同等にした (スコア争いがより熱くなっています)
ステージを一新した (攻略性がさらに高まりました)
ステージ1は非常に簡単ですが、10万点を狙おうとしたらかなりシビアなプレイが要求されてきます。
《 改造点 》
キャラ移動はタッチで問題ないけどジャンプだけはボタンでやりたいという人は21行を次のように変更してください。(どのボタンを押してもジャンプできます)
PB=BT:BT=BUTTON()IF!PB*BT*!L THEN BEEP 8G=6L=G
(※THEN 以下は変更はありません)
キャラ移動もボタンでやりたいという人は改造箇所が多くなるためフルバージョンの方をプレイしてみてください(ボタンでの移動はこのゲームの醍醐味を味わえないためあまりオススメできません)
《 プレイ動画 》
VIDEO
↑TOP
【プチコン/mkII 両対応】(ホームメニュー非対応 ) 2011年12月4日 公開
QRコード (ファイル名:OCHAPRDC)
《 遊び方 》
タイムアタック専用の疑似3Dのレースゲームです。基本的には標準のPETIT RUN と同じであるためまずはこちら をご覧ください。
ただし、60fpsでの動作と1画面のプログラムサイズを維持するために標準のPETIT RUN と比べて表示はかなり簡素化されています。
画面表示は一番左上の数字がスピードでその下がタイムとゴールまでの残り距離となっています。
このゲームの特徴は私が考案した視点変更アルゴリズム(参考動画) [プログラムリストのQRコード (ファイル名:OCHAVIEW) ]によってゲーム中に自由に視点変更ができることです。
[R] ボタンを押すことでドライバー視点から後方視点へと変わります。(本当はトグル切り替えにしたかったけど1画面では無理でした)
あとコースデータや攻略法などは標準のPETIT RUN と全く同じです。タイムアタックの記録狙いならば標準のPETIT RUN をプレイした方がいいかもしれません。(画面情報が少なすぎてドライバー視点ではちょっと厳しい)
《 プレイ動画 》
VIDEO
↑TOP
【プチコン/mkII 両対応】(ホームメニュー非対応 ) 2011年12月4日 公開
2012年3月18日 追記
QRコード (ファイル名:OCHAPRUN)
《 遊び方 》
タイムアタック専用の疑似3Dのレースゲームです。60fpsで動作しているので動きはとてもなめらかです。
RUNをしたらすぐに開始します。
操作は簡単で十字ボタンが左右移動、[A] ボタンがアクセルです。アクセルを離せばブレーキになります。
画面表示は一番上に表示されている赤いバーがスピードメーターでタイムとゴールまでの残り距離となっています。
「別のコースをプレイしたい」という人は簡単にコースが書き換えられるのでオリジナルのコースを造ってみましょう。6行目のC$ の内容を書き換えるだけです。
コースデータは下記のように構成されています。
コースデータ構成
オプションとしてコース2〜コース4のデータも用意していますので活用ください。
個人的にはコース4の高速Zがおすすめです。
《 プレイ動画 》
VIDEO
《 攻略法 》
急カーブは十分に速度を落とせば簡単に曲がれます。万一、コースから大きくはみ出したときは一旦アクセルを離して十字ボタンで移動すれば簡単にコースへ復帰できます。
しかし、タイムを縮めるためにはいかに速度を落とさずにカーブを曲がれるかが重要になってきます。そのためにはコースのライン取りが重要になります。スローインファストアウトを心掛けると良いでしょう。
また、このゲームでは左右移動をしない時、つまり直進走行中は加速と最高速がアップするターボ状態 になっています。タイム短縮のためにはこれを活用していきましょう。
ちなみにデフォのコースでの私のコースレコードは19.76秒です。ライン取りがほぼ完璧ならば最終コーナー以外はアクセル全開で曲がることができます。
コースレコード
コースNo. コース長 コースデータ コースレコード 備考
コース1 25
556765434543457656431255 19.76秒
デフォのコース
コース2 16
1199119911991199 17.38秒
くねくね
コース3 21
314159265358979323846 21.91秒
パイ
コース4 23
55555559555555515555555 16.73秒
高速Z
※コース2以降は上記を参考にして別途データを入力してください
↑TOP
【プチコン/mkII 両対応】(ホームメニュー非対応 ) 2011年11月27日 公開
QRコード (ファイル名:OCHAPSKI)
《 遊び方 》
疑似3Dのスキーゲームです。
RUNをしたらすぐに開始します。
旗が遠くから迫って来るので[L][R] ボタン(もしくは十字ボタンの左右)で左右旋回をして2本の旗の間を通過してください。左右旋回を行うことで速度が落ちるため通過しやすくなります。
旗の間を通過できない時はMISSとなりゲームオーバーです。
10本通過するまでにかかったタイムを競います。画面左上に出ているLEFT の数が通過しなくてはならない残りの旗の本数となります。
あとプレイヤーから伸びている青い線は進行方向の目安となるガイドラインです。
《 プレイ動画 》
VIDEO
《 攻略法 》
操作に慣れるまでは上記の動画のようにタイミングよく[L]「R] を押して減速をしつつガイドラインの線を参考に旗の間を通すようにすればいいと思います。(ガイドラインはあくまで目安であり速度が速くなればなるほどガイドライン通りに動作しなくなる)
操作に慣れてきたら次第に減速する量を減らすことでタイムはどんどん縮まっていきますが旗の動きについて行けなくなるかもしれません。左右制御できる速さを維持できるかが重要です
また、旗は左右交互に出てくるのでただ通過するだけではなく最短ルートを通過することが高タイムを出すのに必要になります。
ちなみに私の自己最高タイムは15.76秒です。
↑TOP
【プチコン/mkII 両対応】(ホームメニュー非対応 ) 2011年11月20日 公開
QRコード (ファイル名:OCHAPYON)
《 遊び方 》
ポケコン用の「2LINEピョンコ」 のプチコン移植です。
RUNをしたらすぐに開始します。
下画面のみを使ってジャンプさせて右隅にある赤いゴールラインにちょうど乗ればステージクリアです。ステージ5までクリアしたらゲーム終了になるのでそこまでかかったSTEP数の小ささを競ってください。
穴に落ちたりゴールラインを超えたらスタート位置からやり直しとなります。当たり判定は身体の中央真下(足先)の1ドット分なのでそれが地面に付いていればセーフです。
操作は、下画面のどの部分を使ってもいいので素早くこするように直線を描けばその速度や方向でジャンプする速度や方向が決まります。素早くこすれば高く(遠く)ジャンプできます。真上(もしくは真下)に向かってこすれば真上にジャンプすることも可能です。(※下画面には何も表示されません)
あとキーを押した時のシステム音が気になると思うので事前にSYSBEEP=0 としてシステム音を消しておくことを推奨します。(元に戻すにはSYSBEEP=1 とすれば良い)
《 プレイ動画 》
VIDEO
↑TOP
【プチコン/mkII 両対応】(ホームメニュー対応 ) 2011年11月6日 公開
QRコード (ファイル名:OCHA100M)
《 遊び方 》
RUNをしたらすぐに開始します。[A] 、[B] ボタンを交互に押してゴールまで走ってください。
[START] ボタンでリトライができます。
《 プレイ動画 》
VIDEO
初のスプライト使用ゲームです。プチコンのスプライトは高速 なので速度面を気にすることなくプログラミングできましたけど1画面に収めるのには苦労しました。
ちなみに私の自己最高は9.82秒です。
↑TOP
【プチコン/mkII 両対応】(ホームメニュー対応 ) 2011年11月1日 公開
QRコード (ファイル名:OCHADOTG)
《 遊び方 》
RUNをしたらすぐに開始します。[A] ボタンを押している時は画面上に進み押してない時は下に進みます。
隕石(黄色いドット)や自分の軌跡に当たったり、画面の上下にから出ないようにうまくコントロールして画面右まで進めばクリアです。
クリアしても軌跡は消えないためステージが進む毎に移動できるエリアは狭くなって難しくなります。
[START] ボタンでリトライができます。
↑TOP
2011年11月1日 公開
QRコード (ファイル名:OCHA050M)
《 遊び方 》
初のプチコン用ゲームです。
RUNをしたらすぐに開始します。[A] 、[B] ボタンを交互に押してゴール(G)まで走ってください。
[START] ボタンでリトライができます。
私は新しいマシンを触ったら100m走の類 は必ず作っています(笑)
《注意》
このゲームはmkII でも一応動作はしますがVSYNC が使用されてないためmkII で実行するとタイムの進み方が速くなってしまいます。
↑TOP
ツール
【mkII専用】 (ホームメニュー対応 ) 2012年10月28日 公開
QRコード (ファイル名:OCHAPKB2)
《 使用方法 》
鍵盤のサイズや位置を自由に調整可能なキーボードプログラムです。
上画面に出ている数字は左から順に鍵盤数(白鍵の数)、鍵盤の位置、音色No.を示します。ボタン操作によって鍵盤数を変える(つまり鍵盤サイズを変える)ことができ、必要な音域になるように鍵盤の位置を白鍵1つ単位で変えられるためプチコン用の鍵盤演奏プログラムにありがちな鍵盤サイズが小さくてタッチペンでないと演奏できないという問題点を改善でき指によって手軽な演奏を可能にしてくれます 。
また、プチコンmkIIに標準で備わっているGM音源互換の音色をすべて使えるし、押した鍵盤は赤く光るため正しく押されているかというのも一目で分かります。
◎ボタン操作
[B] [A] ボタン鍵盤数の増減 (4〜25の範囲)
十字ボタン [←] [→] 鍵盤数の位置調整 (-35〜+14の範囲)
十字ボタン [↑] [↓] 音色No.の増減 (0〜129の範囲、ループあり)
[L] ボタン音色No.を+25する (0〜129の範囲、ループあり)
[R] ボタン鍵盤の位置、音色No.をデフォ設定に戻す。 (左端の鍵盤がC4、音色は0番のグランドピアノになる)
画面タッチをしている間は音が鳴るため画面にタッチした状態で次に弾く鍵盤の位置まで指を持っていってその鍵盤を改めて押さえるとなめらかな演奏が可能になります。
《 更新情報 》
◎ver.1.01 (2012/10/29)
タッチしながら鍵盤の移動をするとまれに鍵盤が消えてしまう不具合の修正。
あと初出時にQRコードとリストが未完成版のものだったのでそれを差し替えました。
《 改造点 》
1画面のサイズで必要な機能は粗方入っているのですがあと需要があるとすれば録音、再生機能くらいでしょう。
Tipsコーナーにあるリプレイデータの記録をする方法 を参考に1フレームごとに押したボタンではなく変数Zの値(0〜127の値をとり音の高さを示す)をGRPに記録すれば簡単に実現可能です。(もちろん、押したボタンとタッチした座標を記録しておいてもいいけどすべての設定がデフォの状態から録音開始しないと正確に再生できないので注意)
《 実行動画 》
VIDEO
このプログラムの鍵盤演奏部分は私の「棒歌ロイドキーボード」 がベースになっています。この鍵盤演奏部分をより使いやすくしてリスト短縮によって1画面に収めたものが当プログラムとなります。したがって、1年前にテスト用に作った「PETIT KEYBOARD」 とはまるで別物になっています。
↑TOP
【mkII専用】 (ホームメニュー対応 ) 2012年4月2日 公開
QRコード (ファイル名:OCHA1BKB)
《 使用方法 》
リアルタイムで文字入力をしながら歌わせることができる演奏プログラムです。
プチコン標準のカナ入力モードを使いボタン操作で演奏します。
音階は十字ボタンで決定し、[R]ボタンで1オクターブ上がり、[A][B][X][Y]いずれかのボタンを押せば半音上がります。(十字ボタンを押した時点で音が出て、十字ボタンを離すか一定時間経過で音が止まる)
終了は[START]+[L](もしくは[START]+[R])ボタンです。
音階の割り当て
《 注 意 》
拗音と「ヲ」は発音できません。(「オ」で代用してください)
濁音、半濁音は発音できますが、画面表記上は清音となっています。
1画面ではないより快適に演奏できる 高性能版「棒歌ロイドキーボード」 も作りました。
↑TOP
【mkII 専用】 2012年3月25日 公開
QRコード (ファイル名:OCHAOSP2)
旧バージョンはこちら→プログラムリスト / QRコード (ファイル名:OCHAOSP)
《 使用方法 》
ボーカロイドならぬ棒歌ロイド です。
パラメータを手動設定する必要が無く曲に合わせて自動的に歌わせることができます。
ver.1では私の独自MML演奏プログラム「OMP」 と一体型となっていましたが、ver.2は歌唱エンジンが独立したものになったので自分の好きなMML演奏プログラムと組み合わせることが可能になっています。(※OSP2単体では使用できないためMML演奏プログラムが別途必要です)
あらかじめK$に歌詞データを入れておいてMML演奏プログラムでBEEPで音を鳴らす代わりにGOSUB @OSP とすれば良いです。
歌詞データに関しては1つの音符ごとに「:(コロン)」で区切ります。(※歌詞の最後にも「:」は必要です。)
その際にはあらかじめ変数T、X、Y、Zに指定された値を入れておく 必要があります。
変数T(テンポ) その曲のテンポ(1分あたり四分音符いくつ分かという一般的なもの)
変数X(歌詞データの位置) その歌詞データの最初から歌う場合はOSPを呼び出す前にX=0 <とする(※基本的にX=0以外にすることはないと思います。)
変数Y(音長) 全音符=1、二分音符=2、四分音符=4、八分音符=8(※小数による指定も可能ですが、MML演奏プログラムの方に音ずれ対策の必要性があります)
付点をサポートしているMMLで音長が変数L、付点の有無が変数Fに入っているならばY=L/(F/2+1) とすればよい
変数Z(音高) 「低いド(C3) が0」で半音上がるごとに1大きくなります。(※Zの値は -24≦Z≦35 の範囲で指定できますが、あまり高い音や低い音は音程がずれる可能性があります)
MML演奏ルーチンへの組み込み方がよく分からない人のためにOMPとOSP2を組み合わせたものも用意したので参考にしてみてください。
OMP with OSP2
QRコード (ファイル名:OCHAOMPS)
OMPとの組み合わせであればMML演奏ルーチンを込みでも1画面に収まります。
K$に歌詞データ、M$にMMLデータを入れてGOSUB @OMP とするだけで自動的に曲に合わせて歌ってくれます。
例 童謡「春が来た」より最初の4小節
MMLデータ $9:4H2EF4HJH2EF4HMJH6E2A<C4*
歌詞データ ハ:ル:ガ:キ:タ:ハ:ル:ガ:キ:タ:ド:コ:ニ:キ:タ:
《 データ形式の説明 》
音階データは「音長・音高」という組み合わせになっています。(※音長を省略時には前回指定したものが維持される)
休符は「*」です。
4A ・・・ 4の長さAの高さの音を鳴らす
8* ・・・ 8の長さ休む
音長は指定した数字に比例した長さが鳴ります。(4が四分音符ならば2が八分音符、8が二分音符になる)
音高は「A」が「低いド(C3) 」 で半音上がるごとにB、C・・・とアスキーコードが1ずつ増えます。
テンポは「$」と「:」で挟んでください。(※曲の最初に必ずテンポ指定が必要)
テンポ1で音長1の音が1秒間鳴り 、テンポに比例して曲が速くなります。
MMLデータそのものはポケコン用のOMPと同じであるため詳しくはこちら を見てください。
あと歌詞データ内でTALKコマンドはすべて使えるので活用してください。
OMPは使いにくいという人もいるかもしれません。
そこで今度は一般的なMMLに近い「プチコンMML」と組み合わせてみました。
プチコンMML with OSP2
いつも使っているMML演奏プログラムにOSPを組み込む場合の詳細な方法も書いているので参考にしてみてください。
複数トラックをサポートしている演奏プログラムならば1トラックをOSP用にすれば和音演奏しながら歌わせることができます。また制御用に適当なMML演奏プログラムを用いてBGMPLAYで定義した曲を伴奏代わりにして歌わせることもできます。
《 BGMPLAYを使用して上手く歌わせるためには 》
◎制御用のMML演奏プログラムにはWAITではなくVSYNCを使う。(WAITでは音がずれてしまう)
◎最初のVSYNCのウエイトの前に必ず1回はVSYNCを実行しておく。
◎VSYNCによるウエイト値が小数にならないようなテンポや音長にする。
◎TALKはタイムラグが大きいのでBGMPLAYのMMLの先頭に16分休符や32分休符を付けるとタイミングが合いやすい。
《 実行動画 》
VIDEO
《注意》この動画ではBGMPLAYとの対応を分かりやすくするためにOMPを一般的な値のテンポで使用可能にしたものを使っています。
ちなみにOSPはOchame's Song Programの略であり、Otegaru Song Programの略でもあります。
ver.1からの主な改良点
◎OMP以外のMML演奏プログラムが使用可能になった。
◎長い音符もほぼ正確な長さで歌えるようになった。
◎長い音符の発声タイムラグが減った。
※このOSPは自作プログラムに自由に使用してもらって構いません。
自作ゲーム内で歌わせたりするのはいかがですか?
このプログラムの簡単な仕組みや自分でTALK命令を使って歌わせたいという人はTipsコーナーの「TALKを使って歌わせる方法」 に書いているので参考にしてみてください。
↑TOP
【プチコン/mkII 両対応】 2011年11月16日 公開
QRコード (ファイル名:OCHAPTKB)
《 使い方 》
超シンプルなキーボードプログラムです。
プチコンのソフトウェアキーボードを押せばそれに設定された音が出ます。
簡易キーボードならプチコン内蔵のSAMPLE3 があるからわざわざ入力する価値があるかは微妙ですがキーの追加が容易なのと処理速度が速いというメリットがあります。(プチコンは速いから速度面のメリットは体感できないけど)
キーを押した時のシステム音が気になると思うので事前にSYSBEEP=0 としてシステム音を消しておくことを推奨します。(元に戻すにはSYSBEEP=1 とすれば良い)
あと、デフォの設定は下記のようになっています。
[W][E] [T][Y][U] [O][P] [*][(][)]
#ド #レ #ファ#ソ #ラ #ド #レ #ファ#ソ #ラ
[!][A][S][D][F][G][H][J][K][L][;][:][<][>]
シ ド レ ミ ファ ソ ラ シ ド レ ミ ファ ソ ラ
《 改造点 》
1行目の変数O の値を変えるとオクターブを変えることができます。(デフォのキー設定だと1〜2に設定可能)
使用するキーも設定変更可能です。2行目の変数K$に「ド、#ド、レ、#レ、ミ、ファ、#ファ、ソ、#ソ、ラ、#ラ、シ、ド」の順に書き込んでください。プチコンで出せる音域分だけ使用するキーは増やせます。
なお、「ド」からではなく別の音から設定する場合は1行目の変数P の値を変えればできます。
ド P=0
レ P=2、もしくは、 P=-10
ミ P=4、もしくは、 P=-8
ファ P=5、もしくは、 P=-7
ソ P=7、もしくは、 P=-5
ラ P=9、もしくは、 P=-3
シ P=11、もしくは、 P=-1
BEEPの引数の「22」を変えれば別の音色が鳴らせますが、任意のボタンを押すことで実行中に音色を変えられるようにするのもいいかもしれません。
ちなみにこのプログラムはポケコン用の1行プログラムを移植したものです。ポケコン用の方は2行で録音再生機能を付けた「2LINEオルガン」 を公開しています。
mkII 用にリメイクした(というか、完全に別物となった)PETIT KEYBOARD mkII も作りました。
↑TOP
【プチコン/mkII 両対応】 2011年11月13日 公開
2011年11月14日 追記
《 使用方法 》
この音階演奏ルーチンは自作ゲームなどへの組み込みを前提にしたものです。
基本的な使用方法はOMP和音対応バージョン と同じです。ただし、BGMとして使用するためにはメインルーチンから常にGOSUB @OMP とする必要があります。
BGMは自動ループ設定となっているため途中てやめたり別の曲に変えたりして再び最初から鳴らしたい場合にはGOSUB を実行する前に FOR I=0 N-1:Z(I)=0:NEXT として演奏を初期化してください。
《 注意点 》
ウエイトにMAINCNTL を使用している関係上、1/60秒単位でしかウエイトを入れることができずW(I) の値が小数になった場合はメインルーチン1回分の処理時間(もしくは1/60秒)だけ音ずれしてしまう可能性があります。
またメインルーチンが60fpsよりも遅いゲームのBGMに使用する場合には音ずれの可能性があります。20fpsでなおかつ高速な演奏をした場合にはこの動画 のようになります。遅いゲームのBGMに使う場合は個別対策をしてカバーするか、和音は諦めて単音演奏にするといいでしょう。
あと重大な注意点としてプチコンで扱える数字に上限があるためMAINCNTL にウエイト値を合算した場合に8738秒に1回オーバーフローになってしまいます。実際にゲームに組み込む場合にはフラグ処理をしてオーバーフローにならないようにする方が良いでしょう。(この処理を加えると1画面に収まらなかったのでごめんなさい)
メインルーチンが十分に速いならばMAINCNTL ではなくOMP和音対応バージョン と同じくVSYNC でウエイトをとればテンポは若干狂ってしまうもののオーバーフロー対策が不要になります。
※このOMPは自作プログラムに自由に使用してもらって構いません。
このOMP for BGM でも「リストが長い」という人のためにさらに機能縮小版を作ってみました。
プログラムリストはこちら
機能縮小に伴い、若干MML表記方法は変わっています。
主な仕様変更は音長指定機能、区切り機能の削減です。(アスキーコード64以下はすべて休符として機能している)
曲頭から演奏する場合にはあらかじめV=0 を実行して演奏を初期化しておいてください。
音長指定が無くなっているため音長を表記したい場合は「*」を入れてウエイト調整をしてください。(従来のOMP用のMMLデータを変換する場合は、長さ指定からマイナス1つ分だけ「*」を入れる)
《使用例》
通常のOMPの場合 2MO4Q → OMP miniの場合 M*O*Q***
MMLの表記方法は変わっていますが、通常のOMPでもそのまま再生可能 です。(ただし、最初に音長1を指定する必要がある)
MMLのデータサイズは通常のOMPよりも大きくなりますが、基本的には音ずれが無いというメリットがあります。
※上記のように音長指定値がすべて2の倍数のデータならばMOQ* としてテンポを2分の1にすれば良いので一概にデータサイズが大きくなるとは限らない。
あとMAINCNTL ではなくVSYNC を使用したバージョンも用意しました。
MAINCNTL で「オーバーフロー対策をしたらリストが長くなる」と敬遠している人はこちらのバージョン を使用ください。
VSYNC を使用している関係上、演奏速度はメインルーチンの実行速度に依存してしまうためテンポは微調整が必要です。
※60fpsのゲームならばテンポは2倍、30fpsのゲームならばテンポは3倍に設定する必要がありますが、60fpsのゲームでメインルーチン内でVSYNC 1を使用している場合はメインルーチンかOMPで使用しているVSYNCのどちらかを削ることで補正は不要になります。
このminiを見てもまだ「一番小さいプログラムを頼む」と言っている人のためにさらにコンパクトサイズの「OMPプチ」 を作ってみました。
テンポ設定機能を省き単音演奏のみに限定した超シンプルなBGM演奏ルーチンです。(演奏速度は完全にメインルーチンに依存するため「*」を適当に使って速度調整してください)
「そんなプログラムで大丈夫か?」「大丈夫だ、問題ない」
↑TOP
【プチコン/mkII 両対応】 2011年11月13日 公開
《 使用方法 》
この音階演奏ルーチンはは自作ゲームなどへの組み込みを前提にしたものです。
あらかじめ配列変数M$ 、配列変数W 、配列変数Z を演奏するトラック数の分だけ確保しておいてください。配列変数M$ に音階データを入れてGOSUB @OMP とすれば和音で音階演奏ができます。(変数N にも演奏するトラック数を入れておいてください)
データ形式はポケコン用と同じなので詳しくはこちら を見てください。
《 注意点 》
単音版OMP にはあったテンポ指定機能は省かれているためGOSUBを実行する前に変数T にテンポを入れておいてください。これは1画面に収まらなかったと言う理由ともう1つテンポ指定による音ずれ問題があるからです。
ウエイトにVSYNC を使用している関係上、1/60秒単位でしかウエイトを入れることができずW(I)の値が小数になった場合は1/60秒ほど音ずれしてしまう可能性があります。(テンポは極力60の約数で指定してください)
とはいえ、和音演奏にもかかわらずMMLをリアルタイム解析し、リストも短いためゲームに組み込むのは容易でしょう。
各トラックの演奏時間が異なる場合は短いトラックが演奏し終わった時点で終了します。
※このOMPは自作プログラムに自由に使用してもらって構いません。
ver1.0とver2.0のデータ互換性について
ver1.0である単音バージョンはポケコン版と完全互換となっていましたがver2.0は和音に対応するために下記の2つの点においてポケコン版のデータと差異があります。
(1)テンポ指定がMMLでできない
これは和音演奏で行うと音ずれが発生してしまう可能性が高いためです。
(2)1オクターブ低い
ポケコン版と同じ高さだと3オクターブしか出せないためです。
これによってプチコンのスペックである4オクターブ分が出せるようになりました。
↑TOP
【プチコン/mkII 両対応】 2011年11月1日 公開
《 使用方法 》
このソフトは自作ゲームなどへの組み込みを前提にしたものです。変数M$ に音階データを入れてGOSUB @OMP とすれば音階演奏ができます。
データ形式はポケコン用と同じなので詳しくはこちら を見てください。
すでに和音演奏ルーチンが存在する中であまり意味があるとは思えないですが、プログラムサイズおよびMMLデータのサイズが小さいため手入力がメインのプチコンではそれなりに価値はあると思います。
隠し機能 簡易和音演奏機能
この単音版OMPは「プチコンMML」 と同じ簡易和音演奏機能を備えています。
使い方は簡単で音長0を指定して一度に鳴らしたい音を羅列 するだけです。(0AEH でコードCとなる)
あとは必要に応じて休符を使って時間調整すれば簡単な楽曲なら問題なく和音演奏できます。
例1 $8:0AE4H0AEH4K0ADH C、C7、Cm(一般的なMMLでテンポ120の四分音符相当の速度)
例2 $8:0AE4TQ8Q0FH4O8O0AE4MOQR0H4TT8T 童謡「ちょうちょ」(最初の4小節)
※ポケコン版OMPとデータ完全互換性を謳うため隠し機能とさせていただきました。
※このOMPは自作プログラムに自由に使用してもらって構いません。
↑TOP
このページは2011年11月〜2012年10月に初公開した1画面プログラムを記載しています。
1画面プログラムのページ → 1page 2page プチコンオリンピック
RETURN /RETURN *MAIN