のI-shaped balance
Windows Me
Windows Me
以下のcode snippetsをWeb browsersの
((r,b,m,n)=>{for(var i=0,o=[];i<n;i++){o.push({y:r*b*i+m})}console.log(JSON.stringify(o))})(240, 3.5, 24000, 32);
Code末尾の数値4つは、"resolution"
, beats per measure, start "y"
, number of bars。前述の例であれば、一拍を240等分する座標空間に対して、"y"
24000
の位置から32本の小節線を出力する。値3.5
を3
に変えれば37
に変えれば7
拍子が頻繁に変わる曲なら、拍子および各音声の開始位置だけをBMS形式で組んでおき、それを後からBMSON形式に変換したほうが早い。拍子のSkeleton図表をBmsONEにdropしても変拍子が変換されない場合は、
((d,f,t)=>{for(var y=f,o=[];y<t;y+=d){o.push({c:true,l:0,x:0,y:y})}console.log(JSON.stringify(o))})(60, 24000, 28000);
Code末尾の数値3つは、"y"
24000
–28000
の範囲に対して、"y"
60
足される毎に(拍分解能が240
なら16分音符間隔相当)、音声に切れ込みを入れる。余計な裁断点はBmsONE上で範囲選択から一掃できるので、
"info"
Qwilight v1
BMPのほとんどを描画でき、
[追記] まとめには載せなかったが、#BANNER
#STAGEFILE
でのみ描画された。
#RANDOM
は入れ子もsupportされるが、
[追記] “sevenscape”
{
"name": "aaa .wav",
"notes": [
{"y": 134472}
]
}
{
"name": "aaa .wav",
"notes": [
{"y": 134472, "c": false, "l": 0, "x": 0}
]
}
正確にいえば"c": false
"l": 0
"back
"preview
Qwilight v1
私はQwilightに関するfeaturesをまとめた。私の調査には誤りが含まれるかもしれない。
拙作BTS差分が選曲画面にさえ現れなかったので、慌てて修正して当site上に再度uploadした。しかし現段階ではこの差分をQwilightで演奏することは推奨しない。
先月のLNs
元図表において最初のLNは全音符相当の長さを与えられている。が、このKEY音の「波形自体のrelease point」はおそらく四拍目にある。末尾一拍分は残響成分。残響をLNに含める作例は珍しいが、演奏者が「notesを押すべきtiming」を決定するために視覚に頼らざるをえない曲頭4小節において、元図表の最初のLNは理想的な正解のひとつだろう(視覚への依存度が最も低い形)。
残響音はspeakersとhead-phonesで聴こえ方が異なる場合がある。また同時に鳴っている音声次第ではBGMに埋もれる(KEY音として視覚化するに能わざる)場合もある。視覚化できる閾値が明確なら図表著者としてもplayerとしても都合がよい。
レミニッセンスの最後のLNは視覚に頼るしかないように見えて、じつは65 BPMのmetronomeを頭の中で働かせ続ければrhythmとして処理できるのではないだろうか。これを思いついて実践してみたところ、いきなり最良判定で最後2個のnotesを処理できてFULL
ジャングルの最後も似たような仕掛けだが、こちらは視覚に頼るしかないように見える。
トラペゾヘドロン(H)の最後のLN区間内に#STOP
sequenceが仕込まれている。私はFULL#STOP
sequenceに気が付いていなかった:
#STOP
eventに気付かないままでも最後のLN終点で緑GREAT判定は取れてしまった。#STOP
eventに気付かないまま最後のLNをすぐにKEYUPすると「scrollingが停止中であることを示す視覚的な指標」が画面内に一切存在しなくなる。小節線も描画されないし。と理由をいくつか挙げてみたが、結局のところ私は「あのKEY音を即座にKEYUPすること」について特に違和感を感じてはいなかったのだろう。というか最初から最後まで私にはわからなかったので、最後だけとりたてて奇妙に思うようなこともなかった。私は目押しが苦手だが、そんな図表もありだろう。
Pulsus 0.5.3の"resample
"Highest"
Angolmois 2.0 alpha 2版のWindows用EXE file
Angolmois 2.0 alpha 3以降はSDL
BMSのchannel変更に特化した単機能tool。
μBMSC 3.3.0.22以降で「オブジェを縦移動させない(Disable vertical moves)」
#00101:0000000000000000000000000000000017
#00101:00000000000000000000000000000000000019
#00101:0000000000000000000000000000000000000000000023
#00101:0000000000000000000000000000000000000000000000000000000029
このBMSを読み込み、全notesを列zに移動させて保存すると、
ちなみにiBMSC
という違いがある。
BSOPのprocess名
大型BMS eventの開催を前に、満を持して正式公開された。
「出力ファイル指定テンプレート」が空欄の場合、変換時に出力先を毎回指定しなければならない。それで不都合がないなら空欄のままで構わない。私はD-drive直下にBMX2WAV出力用のfolderを作成し、そこに変換結果をまとめている。私の「出力ファイル指定テンプレート」の値は以下のような感じ。
D:\bmx2wav _output \@@input _bms _basename _auto _extension _change@@
他にはlogを出力したり、後処理でFLACに変換したり。
今回command-line引数はbmx2wav
”
BMSE
Ver
[16日追記] 起動直後の状態から設定を変更せず、同梱sampleを「重複なし」で切り出して、そのまま「BMS出力」すると、#00001
は00010102
になる。演奏されるtiming次第では、0101
において同一音声のreloadingが発生しうる。このときnoiseが発生しうる。これを避けるために、#WAV01
の定義内容を#WAVZZ
とかにも定義して0001ZZ02
のように不連続に並べたい。不連続に並べるところまでプナイプ先生に任せられると便利かも。そうでもないかも。という文意でした。
BMS書式は³⁄₄拍子と⁶⁄₈拍子と¹²⁄₁₆拍子を区別しない。前述の動画では#SCROLL
定義を用いて「見かけ上」拍子と判定線明滅間隔を整合させている。#SCROLL
非対応環境では直感と異なる見え方になる。
“Ceebu Yapp”#025
–#032
のみ⁶⁄₈拍子)。四つ打ちdance musicの感覚なら約135 BPMとなる。
これを実践した譜面を最近見かけたので、ご紹介したくweb拍手を送らせて頂きました。
すべての同時押し配置が
#RANDOM
によって抽選されることで、プレイヤーに事実上S-RANDOMを強制する譜面となっています。極めてノーツ密度の高い超高難易度譜面では同時押し配置の無作為性が演奏感の問題にはならず、むしろ上達練習の意味で実用的である、という文脈のもとこの譜面が成立していると考えています。
特殊な文脈ではありますが、無作為性を実践的に取り入れたBMS譜面として興味深く感じました。ご参考になれば幸いです。
教えていただきありがとうございます! これはきっと固定運指さんの準備運動にお誂え向きな図表なのでしょう。全押しを基準状態とした「休符の無作為化」とも受け取れました。全小節に無音notesを追加するこの差分、特に先頭8小節は全部が無音同時押しですが、これをあえて『音を鳴らすgame』の文脈に載せるなら「BGMの倍音成分まで演奏したい気持ちの表れ」という感じになるでしょうか。さすがにそんなお気持ちでは説得されませんか。ならばいっそのこと
ちなみに44380–44386行目のように、#RANDOM
を伴わない全押しもちょくちょく現れます。このあたり、機械的に出力されたのかhand-codingの産物なのか絶妙にわからないですね……
倍音成分で思い出したけど、
先日の日記のBMS差分の動作確認中に、演奏しやすそうに見えるpatternが降ってきた。通常の7鍵盤BMS図表の正規の鍵盤列内容を便宜上ABCDEFGと表すなら、件のpatternはGFBCDEAとなるように列内容が並べ替えられていた。このpatternを#SETRANDOM
で再現したい。
非入れ子版では#RANDOM 5040
”#SETRANDOM 4954
”
#RANDOM
が6回連続で乱数1
を生成すれば、いわゆる正規譜面ABCDEFGになる。7
→6
→5
→4
→3
→2
の順に生成されれば、いわゆるMIRROR譜面GFEDCBAになる。7
→6
→2
→2
→2
→2
の順に選択肢を辿れば、内容GFBCDEAが再現される。分岐の構造を把握している私自身にとっては、入れ子版のほうが読みやすい。
先日の日記の続き。
「入れ子をsupportし、
そしてindent styleの入れ子図表は、少なくとも今回のような構造なら非入れ子版と大差ないfilesizeになる。入れ子を外せばbeatorajaやLR2でも遊べるようになるのだから、あえて入れ子にするべき理由はどこにもなかった。私は間違っていた。
“(^^)”#RANDOM
に8分割する。各小節内では以下の8種類の分割間隔が一度ずつ選ばれる。ありうる組み合わせは8 * 7 * 6 * 5 * 4 * 3 * 2
通り(を4小節ぶん)。
(1/2) + (1/4) + (1/8) + (1/16) + (1/32) + (1/64) + (1/96) + (1/192) = 1
「小節長さの合計が1
になる間隔」を恣意的に選び、それらに対して「元のnotes配列」を機械的に分配しただけなので、あらゆる組み合わせ結果がAnzu BMS Diff Tool上で元のBMSと一致する。
無作為さはそれ単体では面白くもなんともなく、音や映像との関わりを持たない限り「ふ〜ん」で済まされる代物なのだなあ。なので192分音符間隔の小節線が唐突に出てくるよりは、この曲の最小rhythmたる8分音符間隔の小節線が音声に同期して降ってくるほうが、まだしもplayersを幻惑する効果が期待できそう。この曲なら(1/2) + (1/4) + (1/8) + (1/8)
あと、この方法だと必ず4拍おきに小節線が降ってくるので無作為感が弱い。本気で取り組むならもっと作為的に無作為さを演出する必要があるだろう。使える小節線の上限は1000本と決まっているので、これを演奏時間内の高密度地帯から優先的に分配していく、とかだろうか。
そしてそもそも分岐を入れ子できない環境でこれをやるのは筋が悪すぎる。たとえば同じような発想で「『演奏者側のRANDOM option』の挙動をemulateする図表」は普通に成り立つが、入れ子なしで7鍵盤のRANDOM optionを模するなら7 * 6 * 5 * 4 * 3 * 2
通りの組み合わせ全部を予め記述しておく必要がある。常時RANDOM適用状態が説得力を持つ曲って
Atopic eczemaで滅茶苦茶痒い!
Allergic rhinitisで涙と鼻汁が垂れ流し放題! 目まで痒い!
#RANDOM
BMS list#OPTION
command