プレイ日記
おちゃめ ochame_nako
以前作ったQSP「PETIT KEYBOARD QSP」をさらに限界までリスト短縮をしてバージョンアップしました。 演奏しやすい鍵盤機能はそのままにリアルタイムでの音色変更機能に対応しています。 (リストや公開キー等はコメントにて)
16そうだね
プレイ済み
返信[1]
親投稿
おちゃめ ochame_nako
プログラムリストはこんな感じでもはや1文字も短縮や追加の余地はありません。 公開キーは【 7K3NYP46 】です。
0そうだね
プレイ済み
返信[2]
親投稿
おちゃめ ochame_nako
使い方は簡単で画面に表示された鍵盤にタッチすれば演奏ができます。 押している間は鳴り続け、離せば鳴りやむのでスタッカート的な演奏も可能です。 音色変更は任意のボタンを押しながら演奏することで可能です。 ボタン番号が音色番号に変換されるため十字ボタン右(8)だとチェレスタ(音色番号8)、Lボタン(256)だとノコギリ波(音色番号256)になります。 ボタンの同時押しを行えば非常に多彩な音色を自由自在に使い分けられます。(プチコン3号の仕様上音色番号512以上には対応していません) なお、音色番号は画面左下に表示されています。
0そうだね
プレイ済み
返信[3]
親投稿
おちゃめ ochame_nako
1年前に作った「PETIT KEYBOARD QSP」ですが、今見直すとリストに無駄な部分が多く、1行分くらい(20文字くらい)短縮可能なことが判明しました。 短くするだけではつまらないためQSPでできる範囲内での限界に挑戦すべく様々なバージョンアップ案を検討しましたが、文字数的に一番現実的なのが音色変更機能だし使っていて楽しめるという点が大きいためこれを採用しました。 しかし、現実的な選択といっても実際に行ってみるとどうしてもQSPには収まらず更なるリスト短縮を繰り返してようやく今回のバージョンアップにたどり着きました。 QSPでこれ以上の鍵盤演奏ソフトを作るのは不可能ではないかと思います。 なお、今回はバージョンアップのためにリストからACLSを削ったので他のソフトを実行した直後に鍵盤が正しく表示できない場合はダイレクトモードでACLSを実行してください。
0そうだね
プレイ済み
返信[4]
親投稿
MIKI ifconfig
>もはや1文字も短縮や追加の余地はありません 一体いつから短縮できないと錯覚していた? つ bgmplay@0+str$(b)
2そうだね
プレイ済み
返信[5]
親投稿
おちゃめ ochame_nako
MIKIさんへ バージョンアップの途中で「@が文字列として認識される」ということを利用して短縮を試みたのですが、リスト短縮に繋がらなかったのでやめたんですよね。 しかし、今見たら見事1文字短縮できています! すばらしいです。 1文字短縮はできたものの後者の「機能の追加の余地がない」のは変わりませんが。
0そうだね
プレイ済み
返信[6]
親投稿
おちゃめ ochame_nako
うえこうさんへ NEXTの後のコロン(:)が無かったらラベルとして認識されないため必要です。(NEXTの後はコロンが省略できない)
0そうだね
プレイ済み
返信[7]
親投稿
MIKI ifconfig
for文は for 変数 = 開始値 to 終了値 [step 増分] 文 next [変数] という文法なので、[変数] を見に行ってるんじゃないかなあ??
1そうだね
プレイ済み
返信[8]
親投稿
おちゃめ ochame_nako
基本的にプチコン3号においてNEXTのように命令の後に変数名が省略できるもの引数が省略できる命令において省略をした場合はコロンが省略できません。 これは、MIKIさんが書かれているように変数名を見るためだと思います。 プチコン3号では意図的にコロンを可能な限り省略可能にする仕様にしています。
1そうだね
プレイ済み
返信[9]
親投稿
nobu divine-creator
相変わらず凄いですね♪
0そうだね
プレイ済み
返信[10]
親投稿
おちゃめ ochame_nako
nobuさんへ やっていることは画面に鍵盤を表示して鍵盤をタッチしたらタッチしている鍵盤に応じた音を出す、鍵盤をタッチしてない場合は音を消す、ボタン操作で音色を変更するというだけのことなので難しいことは一切していません。 とはいえ、これをQSPにすべて導入するのは簡単ではないですが、 普通に作れば鍵盤表示だけでもQSPに収まらないと思います。
1そうだね
プレイ済み
返信[11]
親投稿
おちゃめ ochame_nako
作った私でさえ作ってから数ヶ月もすれば「限界のQSP」であっても無駄な部分がたくさん見つかってしまいます。(作っている最中はなかなか気づかなかったり、新しいリスト短縮方法を見つけたりするため) 無駄な部分を短縮したバージョンを発表すること自体は容易なのですが、私はQSPというのはQSPという制限でどれだけのことができるかに価値を置いているため短縮するだけでは無意味で短縮したことで何ができるかを重視しています。(短くするのは「できること」を増やすために他ならない) とはいえ、SIMPLE PAINT QSPは作ってから半年以上経ちますが依然として無駄な部分が見つからないのは限界まで完成しつくされているのか、自分が成長できてないだけなのか悩んでいます。
1そうだね
プレイ済み
返信[12]
親投稿
nobu divine-creator
OSPやQSPといった極端に短いプログラムでこんな事ができるのか?!と驚かされます! OSPやQSPを作れるくらいプログラムに詳しい人なら、それ以外のプログラムでも無駄が少ないようにできるでしょう?! 無駄に長いプログラムは初心者でもできますが、効率の良い短いプログラムは上級者でなければできません! なので、とても凄いと感心させられます♪
0そうだね
プレイ済み
返信[13]
親投稿
おちゃめ ochame_nako
nobuさんへ リスト短縮は単に短くなるというだけではなくQSPの場合はリスト短縮によって完成度を高められるのが何よりも大きなメリットであると思います。 それが驚きに繋がっていると思います。 詳しくは本日書いたこちらのトピックスをご覧になってください。 もちろん、QSP以外でもリスト短縮はいくらでも可能です。 ただし、私の経験則から言ってQSPと同じ密度でのリスト短縮を行った場合にはリストのサイズの2乗に比例したくらいの時間がかかります。 10KBのプログラム(ベーマガ掲載サイズでは普通程度の大きさ)だとQSPの34倍のリストサイズ(1文字1バイトとして考えた場合)となり、約1164倍の時間がかかります。 これが限界と言い切れるQSPに1週間かかる場合にはこれが限界といえる10KBのプログラム(10240バイトに限りなく近づけたプログラム)を作るには20年の歳月が必要です。 (続く)
1そうだね
プレイ済み
返信[14]
親投稿
おちゃめ ochame_nako
(続き) 実際は10240バイトという制限を設ける必要は何もなくQSPレベルの短縮であればそれよりもずっと短い時間で作れますが、それでも普通に作るのと比べて何倍も時間がかかります。 メモリ搭載量が少なかった昔のポケコン等であれば普通のプログラムであってもリスト短縮をすることが非常に有用だったですが、メモリが8MBもあるプチコンで数KB程度のリスト短縮にはほとんどメリットとは言えないでしょう。 むしろ、可読性が著しく下がるというデメリットの方が大きいと思います。 もっとも、私の場合は無意識にリスト短縮してしまう部分も多いしある程度のリスト短縮は可読性を高める際に有用だと思います。 したがって、「リスト短縮=可読性を低下させるもの」ではなく適度なバランスを考えて行うのがベターではないかと考えます。
1そうだね
プレイ済み
返信[15]
親投稿
nobu divine-creator
私の場合は、自分が作りたいプログラムに必要なことだけを少しずつ覚えてきただけなので、応用的な知識がまるでなく、基礎的な知識すらもきちんと理解せずに使っているような状態です。 本当は「とりあえず正常に動いていれば良いや」という考えではダメなのは理解していますけど、「プログラミングを究めたいというわけじゃない」ので、今のところ意図した通りのプログラムになることを重視しています。 でも、かなり無駄が多いプログラムになってしまっているなぁ…と反省はしています…。
0そうだね
プレイ済み
返信[16]
親投稿
おちゃめ ochame_nako
趣味でやるプログラミングは楽しいのが一番ですね。 ただし、上達したいならば少し話は変わってきて自分の意図した通りに動くものが作れるということが求められてきます。 プログラムの処理をちゃんと理解してそれができるようになれば中級者だと私は思います。
0そうだね
プレイ済み
返信[17]
親投稿
nobu divine-creator
この着せ替えソフトは、誰にも相談せずに一人で作れたのですけど、エラーの原因がなかなか分からず、時間がかかったりして、基礎ができていないせいだと思い知らされました…。 まぁ、これは初心者でも作れるような簡単なソフトなので、何とかなったという感じです。
0そうだね
プレイ済み