譜面を”作らない”、という選択。
カッカカドカカカ
どうも、Zwiebelです。
突然ですが、皆さん
譜面作るの、疲れませんか?
実は譜面って自分が作らなくても、誰かに任せてしまえばいいんです。
なんとなく譜面を作りたくないな、でもそろそろ譜面を出したいな。そんな時に頼りになる、頼めば勝手に譜面を作ってくれる存在があります。
そう、Pythonですね。
Pythonはまあその道の人からすればとてつもなく遅くて忌避( ◜ᴗ◝)されてしまいがちな言語ですが、記述が簡便な上にモジュールも充実していて、速さを競う必要がなく趣味で扱うレベルならとてもいい言語だと思っています。
ということで今回は私がPythonにお願いして代わりに作ってもらった譜面を2つ紹介します。
(UMIGURIで全然譜面上げてないので、Seaurchinでのお話になります)
①Bad Apple!! feat.nomico[映]
1つ目はBad Apple!! feat.nomico[映]です。
Seaurchinに搭載されていた「visible/invisible」の機能を上手く使えば、あのMVを再現できるのでは?
学校帰りのつぃべに電流が走りました。
早速作業に取り掛かろうということですが、フルで約3分半、30fpsとしても6000フレーム以上もあるわけです。毎フレーム16×12=192ノーツそれぞれをvisibleにするかinvisibleにするか決めてsusファイルに記述するなんてものを手作業で作るのはとてもじゃないですが無理です。
そこでPythonを使って自動化しようと考えました。
【よくわかる!Bad Apple!![映]の作り方】
①動画からフレーム画像を切り出します
②画像(360×480)から30×30の正方形を切り出します
③切り出した画像の黒いピクセルと白いピクセルを数えて黒くするか白くするか決めます
④全部のフレームでやってノーツのタイムラインを作ります
⑤192ノーツ全部でやります
⑥完成!
幸い調べてみると全ての工程に対して可能にしてくれるようなモジュールが存在しました。ということで2日くらい頑張ってコーディングしました。とは言ってもプログラミングなんて時々2-30行で終わるようなものをちょこちょこっと作るレベルだったので、処理の最適化など全く考えずに作ったわけですが。
おかげで走らせてみたら13時間(!?)かかりました。人生で一番Mac Bookくんをいじめてたと思います。
しかし完成してちゃんと動いているのを見ると、感動しましたよ!!!感動しすぎてリアルに涙流してました。これマジね。
めっちゃ頑張ってPythonにお願いした譜面なので、もっとみんなに見てほし
②Vexations[狂]
https://m.youtube.com/watch?v=Lt2_860iPYo
2つ目はVexations[狂]です。
エイプリルフールで「4分33秒」の譜面を作ってる人は何人かいらっしゃいました。
どの譜面を見ても「4分33秒」の曲調を活かしながら上手く静寂を保っていて、感動させられる譜面ばかりでした。
そんな中で、Vexationsで作っている人は誰もいなかったので、ならばと作ることにしました。
Vexationsは19世紀の終わりにエリック・サティが作曲したピアノ曲です。52拍(演奏によっては78拍)のフレーズを実に840回繰り返すという構成であり、「4分33秒」とともに往年のテレビ番組「トリビアの泉」で紹介され、有名になった曲です。
トリビアの泉の中では18時間18分かけて演奏したらしいです。
Wikipediaによれば「4分33秒」を作曲したジョン・ケージが初演をしたそうです。そこえらい仲ええね。
この譜面を作るのはBad Appleほど苦戦しませんでした。やることが単純だったので。
【よくわかる!Vexations[狂]の作り方】
①まずはM4pleで78/4拍子の小節で譜面を作って1ループを作ります
②打ち出したsusファイルから譜面データを抽出、小節数をダメージノーツに変換して表示するモジュールと一緒にPythonで840回繰り返させる
③完成!
Vexationsはフランス語で「嫌がらせ」とかを意味するらしいので、譜面も少し嫌がらせのようなストレスが微妙に溜まる配置を置いてみました。
譜面自体は簡単にできたものの、この曲には別の面で非常に困ったことがたくさんありました。
1.音源がない
まずこの曲、音源がないんですよ~。当然ですよね、こんな長さの音源どこにあるんだっていう話ですよ。
いっそのことエリック・サティのCDでも買ってやろうかと思いましたが、ふと思えば楽譜自体はYouTubeで確認できたので、これを使って音源を自作してしまえばいいんじゃね...?
ということで、普段からお世話になっているMuse Scoreで1ループ分の音源を作り、それをAviUtlで840倍にして音源を作ってしまおうということになりました。
これにて音源問題は解決!とはいかず...
2.YouTubeの動画時間の限界
普段配信者などの長時間配信を視聴している方はご存じかもしれませんが、YouTubeの動画って12時間以上のものは投稿できないし、ライブ配信しても絶対に12時間に収まるように切られてしまうんですよ。
だからトリビアの泉内で演奏した18時間という長さでは投稿ができないということになりまして、泣く泣くBPMを上げて12時間に収まるようにしました。
ところで先の楽譜のBPM93.6って数字なんか気になりませんか?
これ、1ループがちょうど60fpsで整数フレーム時間になるように調整してあるんですよ~。1フレーム未満の誤差でも840倍も繰り返せば顕著になってしまうので、ほんとに苦労して合わせました。
3.全てが規格外で、ぶっつけ本番。
11時間40分のwavファイル、できるだけの軽量化をしたうえでどれくらいのサイズだと思います?
1.87GBですよ!動画ファイルかっつーの!
こんなの普通に撮影して投稿したら僕のパソコン止まっちゃいますよ
ってことでライブ配信で投稿することになったんですね~いやはや、ライブ配信で譜面動画投稿する人後にも先にも僕しかいないでしょ、天才。
ただ僕もYouTubeライブ配信はやったことなかったですし(ゲーム実況でもしてテスト配信してやろうかと思いましたがマイク付きヘッドホンがなかったのと露骨すぎるのでやめときました)、当日になるまでマジでドキドキしながら準備してました。
一応譜面は開いてみたんですが何せ45万ノーツを立ち上げるわけですから、動き始めるまでにリアル8分くらいかかるんですよ。DRAGON LADY5回分くらい。
ライブ配信中にパソコンは落ちないか、Wi-Fiの機嫌が悪くなって通信が落ちないか、ず~っと不安のまま当日の0時を迎えて、配信を始めました。
結果としては特に事故も起きず、無事11時間44分間SeaurchinもOBSも戦い抜いてくれました。ありがとう~~~~~!!!
ということで、そんな僕の苦悩と感動に溢れたVexations[狂]、ぜひ皆さんもプレイして理論値を目指していただければと思います。
(鳥許容は2,288アタ、SS許容は9,154アタなのでスコア取りやすいんじゃないかな?)
以上、僕の変に頑張った譜面2つを紹介しました。ありがとうございました。
(箸休め程度に短く済ませるつもりがこんなに長くなってしまった...
余談ですが、昨今話題のAI小説とか、AIイラストなんかを見ていると、今後AIが譜面を作る時代も来るんじゃないかと思っています。
そうなった時、ハイセンスでナンセンスな譜面や夢が始まるような譜面やきゅうりがそびえる譜面はAIにも作れるのか、個人的にすごく気になるところです。)