雑記 OBSに向かって喋ったら尚良かった話/ワクワクワクチンチンチン

先日投稿した Visual Studio CodeでSpigotのnms依存なプラグイン開発を行うには - 名有りさんの日記 という記事の最後に今回の内容についてひたすら30分喋り続ける動画を貼ったのだが、時系列的にはまず先にこの動画を作り、その次に記事を作るという流れだった。これが結構良くて、キーボードを叩くより先にある程度の段階までの言語化を達成することができたので記事作成がかなりスムーズだった。特に書かなければならないことの順序立てとか、どのレベルで詳細を書くべきか?みたいな部分は先に動画を作ったこともあって記事作成段階で完全に決定できていた。このあたりの言語化の話は アヒルのおもちゃとかテディーベアとかと話して解決するやつ - 名有りさんの日記 で書いたんだけど、これを記事作成に反映することができた形になると思う。もしかして、普段やってるツイキャスとかも喋ってる内容をそのまま文字起こしすればひとつの記事になるんじゃないか??とか思った。


本当に良くないんですが、生協で定期的に買っている食パンを食べきる前にカビらせることが多くなってきた。単に飽きたのだと思う。とりあえず注文を停止して、今はもう別のものを頼むようにした。同じ値段帯で定期的に別の「朝食になりうるもの」を届けてくれる何かとか存在しないかなあ、とにかく食事の用意が面倒なので極力簡潔に、かつ上記の問題を解決できるようにしたい。


ワクチンの3回目の機会があり、かつ今回も職域接種だったのでそのために久々に物理出社した。出社が久々すぎてどうすれば会社に辿り着けるか一瞬わからなくてちょっと焦った。

接種前は勿論仕事をするのでフリーアドレスになった机を適当に選んで仕事していたが、かなり仕事しやすかった。まず周りに変なものはひとつも落ちていないし、皆真剣に仕事に向き合っており、椅子も適切で、デスクには4Kのモニターが備え付けられているし、コンセントまで生えている、近くにはかなり安めに設定された自販機や、休憩スペースにはちょっとしたお菓子まで常備されている。何もかも僕の部屋と違う……。「出社したくない」という気持ちが強くてリモートワークを実践していたが、こうも働き心地が良いと正直ちょっとだけ考えてしまう(実際にこの日のアウトプットは他の日と比べてもちょっとよかった気がする)。おそらく自堕落な生活を送っている僕に週5の出社は厳しいのでやらないと思うが、忙しい時とかに限れば実践しても良いかなと思う。

となると、やはり自分の部屋をいつでも快適に保っておくのは必要なことで、定期的に掃除をしたり、何か置くべきものを置いたりするという労力はちゃんと自分に恩恵として返ってくるのではないか?とも思った。土日は予定がないから、とりあえず荷解きでも完遂させようかな……

そいえばこのタイミングでiOS15.4にアップグレードした恩恵を受けられた。このバージョンから、マスクをつけていてもFace IDが有効になったのだ。これまでは毎回パスコードを入力していたが、外とかいう誰がどこから見ているのかわからない環境でこれを入力するリスクより、Face IDの精度を多少犠牲にしても有効にするほうが漏洩リスクは少ないと思う。15.4になる前であってもApple Watchをつけていればマスク有りでも反応していたようだが、僕は正直どちらも変わらないのではないかと思った。なんなら15.4のこの機能が来るまではこれのためだけにApple Watchを買おうとしていたくらいなので、この機能は本当にありがたい。

定刻になったのでワクチンを接種して、すぐ帰った。途中で薬や食料を買って帰って、24時くらいに寝た。このあたりはまだ体温は普通だったんだけど、その3時間後に急に目覚めた時にはもう体感でわかるくらいに熱くなっていた。しかもくそほどだるい。その後二度寝をして、9時頃目覚めたタイミングで解熱剤を飲み、前日購入しておいたレンチンできるタイプのお粥を食べた。おいしかった。会社に「今日は無理です」と連絡した後にまた寝て(12時くらい?)、次に起きた時(19時くらい?)にはもう楽になっていた。寝ている間に良くなったことを考えると、おおよそ14時間程度の戦いだったのではないかなと思う。2回目もこんな感じだったっけ?覚えてないな……。

ピーク↓

今回も前回と同じく体温を計測してプロットを取っていた。うちには何故か体温計が2つあって、片方は10秒ほどで計測できるもの、もう片方は1分ほどで計測できるものがある。この2つの結果は結構(おおよそ1.0℃くらい)ズレるので、毎回両方で計測した。

f:id:naari_3:20220326034705p:plain

まあそんなかんじですわ 乙

Visual Studio CodeでSpigotのnms依存なプラグイン開発を行うには

Javaのエコシステムをわからない所から頑張って諸々覚えた。半分はべつにvscodeの話ではないが、今回のじぶんの環境がvscodeだったのでそのようにタイトルに付けることにした。

tl; dr

  • もちろんBuildToolsを使用してビルドをする必要がある
  • Java Decompilerをインストールする
    • Spigot API--generate-sources して *-sources.jar を入れると良い
  • --remapped してmapsを考慮したビルドを行うようにする
  • なにか問題が起きたときはちょっと待つか、WSL2を使う??
  • nmsへの依存を複数バージョンにまたがって実現できるようにするには

nmsって何、という人向けセクション

知っていれば飛ばしてください。

Spigotで使えるプラグインを作成する際、spigot-api に依存することになる。これはSpigotのうち、開発者に対して大まかな互換性の保証をもてる範囲のAPIだけを集めたものとなる。主に org.bukkit.* (以下bukkit)が対象。では、この「範囲」というのはどういう意味なのか?についてだが、まずは下のレイヤーから順番に説明する。

まず最初に来るのが net.minecraft.server (これの頭文字をとってnms。以降もnmsと表記する)。こちらはバニラのMinecraftのサーバーを起動する時に動作するプログラムとおおよそ同じものだと捉えてよいものとなる。これはバージョンアップごとに大きく変動する可能性があり*1、サーバーに対して変更を加えたい開発者からすると直接追従するだけで大きな労力となり得る。

これをどうにかするために、まずは好きな挙動を差し込めるようにしようとしたのが org.bukkit.craftbukkit.* (以下craftbukkit)で、これはMinecraftのバージョンと1:1で毎度同じようなインターフェイスを提供してくれる。ただ、これはバージョンごとにパッケージを切るような対応方法になるので(例: org.bukkit.craftbukkit.v1_18_R1.inventory.CraftItemStack など)、そのまま依存すると例えば一つのプラグインを複数バージョンにまたがって対応したいときにReflectを使わないといけないとかでちょっと大変になってしまう。

それでようやく現れるのがbukkitで、craftbukkitに対しておおよそ1:nくらいの感覚で対応している。これによって、上に上げたような問題を解決できるようになる、ということっぽい。

それで、craftbukkitではすべての機能を拾い上げているわけではないので、従ってbukkitでも叩くことのできない機能が存在する。例えばNBTタグあたりの機能は殆ど使えない。これをどうしても使いたい場合には保証外であることを認識しながらnmsなどを叩くことを検討する必要がある。という感じ。他にも各プレイヤーに直接パケットを送信したりできるようになる。

もしかしたら違うかもしれないので、今回のソース元とした以下の動画も参考にしてみてください。

www.youtube.com

BuildToolsを使用してビルドをする

DMCAの騒動の問題もあり、配布されるようなコードにnmsを同梱することはできない。そのため、BuildToolsというビルド支援ツールを使用してSpigotをビルドする必要がある。これによって、Minecraftのjarファイルのデコンパイル結果から spigot-apispigot をビルドし、mavenのローカルリポジトリ( ~/.m2/repository/ 以下のよしななところ)に配置してくれる。その際のコマンドは以下を実行する必要がある。詳細については後で書く。

java -jar BuildTools.jar --rev [version] --remapped --generate-source --generate-docs

これによって spigot-apispigot のjarがローカルリポジトリに適切に配置される。mavenでの依存解決の際、もしローカルリポジトリに該当するものがあればそちらを先に利用するようになるため、これによって解決できるようになる。

最後に、pom.xmlartifactId としてspigot-api を指定している箇所を spigot に変更すれば良い。

<!-- pom.xml -->
<dependency>
    <groupId>org.spigotmc</groupId>
    <artifactId>spigot</artifactId>
    <version>1.18.1-R0.1-SNAPSHOT</version>
    <scope>provided</scope>
</dependency>

Java Decompilerをインストールすればだいたいどうにかなる

vscodeにてExtension Pack for Javaをインストールした後、Ctrlを押しながらbukkitのクラスやメソッドなどをクリックするとその詳細を見に行くことができる。のだが、この環境でのデフォルトの状態だと(例えばメソッドでは)メソッドの返り値の型やメソッド名、引数の情報あたりしか見ることができない。メソッド内の処理がどうなっているか?等がすべて隠れてしまう。例えば以下のように。

// Failed to get sources. Instead, stub sources have been generated by the disassembler.
// Implementation of methods is unavailable.

public abstract class JavaPlugin extends PluginBase {
   // snip
   public final File getDataFolder() {
      return null; // 本来は `this.dataFolder` が返るはず
   }
}

過去にIntelliJ IDEAを使用してSpigotのプラグインを作成していたときのことを思い出していたのだが、上に挙げたものはそれぞれ適切に確認できた覚えがある。最初はvscodeがこのあたりのソースコードの情報を誤って取得できないようになっていたのではないかと思っていたが、どうやらこれはデコンパイラーの性能差によるものであり、ソースコードとの連携によるものではなさそうということが分かった*2

ということで、vscode側のデコンパイラとしてもう少し力のあるものを使うことでこのあたりの問題が解決するようになる。それの一例がJava Decompilerで、インストールするだけでうまく動くようになった。

 // Source code is unavailable, and was generated by the Fernflower decompiler.

public abstract class JavaPlugin extends PluginBase {
   // snip
   public final File getDataFolder() {
      return this.dataFolder;
   }
}

それか、ちゃんとsources.jarを用意する

実は、ホンモノのソースコードの情報を利用することもできる。先程BuildToolsでのビルド時、 --generate-source というフラグを立てて実行したが、これを実行すると spigot-api の範囲であれば sources.jar を生成してくれる。これは名の通りソースコードをそのまま*3バンドルすることで、実際のコメント文も表示されるようになる。特に、引数に対するDoc的なコメントもあるおかげでマウスオーバー時の挙動が格段と良くなる。

しかし、フラグを立てるだけで適切に使えるようになるわけではなく、ただ sources.jar を生成するだけなので、これをローカルリポジトリに設置する必要がある。以下のように↓。

cp Spigot/Spigot-API/target/spigot-api-1.18.1-R0.1-SNAPSHOT-sources.jar ~/.m2/repository/org/spigotmc/spigot-api/1.18.1-R0.1-SNAPSHOT/
cp Spigot/Spigot-API/target/spigot-api-1.18.1-R0.1-SNAPSHOT-javadoc.jar ~/.m2/repository/org/spigotmc/spigot-api/1.18.1-R0.1-SNAPSHOT/

--remapped を使用して難読化前の名前を使用する。

nmsを利用する際、一番たいへんなのが「欲しいメソッドがどれなのか分からない」だと思う。これはMinecraftのjarを利用する兼ね合いで、難読化された状態のファイルに対してパッチをあてるため。一部のCraftBukkitより利用されるメソッド以外はほとんどアルファベット一文字の名前を持つようになる。

この件の素晴らしい対応として、1.17リリースと同時に更新されたBuildToolsから、--remapped を付けることで難読化されたnmsをMojangでの開発時の名前にマッピングできる機能が追加された。これによって、これまで a() とか b() みたいな本当に苦しい名前を利用する必要があった所を、getTag() とか setLocation() のような人間らしい名前を利用できるようになる。

方法としては1.17の時のリリース記事に書いてあるが、現時点では以下の通り↓。

<!-- pom.xml -->
<dependency>
    <groupId>org.spigotmc</groupId>
    <artifactId>spigot</artifactId>
    <version>1.8.1-R0.1-SNAPSHOT</version>
    <classifier>remapped-mojang</classifier>
    <scope>provided</scope>
</dependency>

dependencyの差として classifier が増えたことが挙げられる。実際、ローカルリポジトリに設置されるjarが増えていて、 remapped-mojangremapped-obf が増えている。きっとこれを使うように変更されるのだろう。

<!-- pom.xml -->
<plugin>
    <groupId>net.md-5</groupId>
    <artifactId>specialsource-maven-plugin</artifactId>
    <version>1.2.2</version>
    <executions>
        <execution>
            <phase>package</phase>
            <goals>
                <goal>remap</goal>
            </goals>
            <id>remap-obf</id>
            <configuration>
                <srgIn>org.spigotmc:minecraft-server:1.18.1-R0.1-SNAPSHOT:txt:maps-mojang</srgIn>
                <reverse>true</reverse>
                <remappedDependencies>org.spigotmc:spigot:1.18.1-R0.1-SNAPSHOT:jar:remapped-mojang</remappedDependencies>
                <remappedArtifactAttached>true</remappedArtifactAttached>
                <remappedClassifierName>remapped-obf</remappedClassifierName>
            </configuration>
        </execution>
        <execution>
            <phase>package</phase>
            <goals>
                <goal>remap</goal>
            </goals>
            <id>remap-spigot</id>
            <configuration>
                <inputFile>${project.build.directory}/${project.artifactId}-${project.version}-remapped-obf.jar</inputFile>
                <srgIn>org.spigotmc:minecraft-server:1.17-R0.1-SNAPSHOT:csrg:maps-spigot</srgIn>
                <remappedDependencies>org.spigotmc:spigot:1.17-R0.1-SNAPSHOT:jar:remapped-obf</remappedDependencies>
            </configuration>
        </execution>
    </executions>
</plugin>

新規にpluginを追加し、新たなexecutionを追加する。remap-obf はcraftbukkitとnmsを難読化するようなもの。remap-spigotremapped-mojang で置き換えたメソッド名をすべて元のわかりづらいものに戻すような変更を加えるもので、remapped-minecraft が適用されていない(おそらくほぼ全ての)環境で正しく使えるようになる、というもの。この状態で mvn install などでビルドすると target に追加で2つのjarが生成されるようになる。

なにか問題が起きた場合、待ってみたりWSL2を使うと動くようになって何もわからん

これは何も分かっていないんですが、たとえばこれまでは spigot-api に依存していたが、急に spigot に依存するようになる時、手元の mvn は通るのにvscode上では解決できなかったことになる、という事象が発生したりする。この際、Java: Clean Language Server Workspace を実行することや、vscode自体すべて再起動とかでもあまりうまく治らなかったりする。僕の場合、既に2回くらい「待ってたら動くようになった」みたいなものが発生したのだが、これは一体どういうことだったのだろうか。

上記問題はWindows環境で起こっていたため、一度WSL2上で実行したらいいように動くようになった。そもそもWindowsを選んでいたのはfabricのmod開発環境で、デバッグ用のクライアントを立ち上げるのにWSL2だとちょっと道のりが遠そうだったから、というのがあった。Spigotのサーバーであればそのような気遣いは特に必要ないと思うので、素直にWSL2上で組んだほうが良いと思う。

nmsへの依存を複数バージョンにまたがって実現できるようにするには

残念ながらこれはReflectを使うしかない。発想としては以下のgistの getNMSClass を参考にすると良さそう。

NMSManager.java · GitHub

つまり今のMinecraftのバージョンを取得しておいて、そのバージョンがパッケージ名に入っているものを取得する、というもの。ニュアンスを見てなんとなく理解して欲しい。

ただ注意しないといけないのが、最近のバージョンだとクラスだとかの構造が完全に違っているっぽい。これは前述した保証外通りのことだと思う。最近だと1.17と1.18で大きな変更があったようだが、それについては以下を参照。

https://www.spigotmc.org/threads/not-finding-nms-class.548475/#post-4372869

こんな感じで、毎バージョンでおそらくSpigotのチームが行っている努力と同じものをを多少なりとも実行する必要がある。頑張っていただきたい。

さいごに

以上です。一昨日だとかにここに書いたようなことを一人で喋りながら録画するやつをやったので、もし声のほうが良いという人がいればそちらもどうぞ。網羅的じゃないかもしれんけど。

youtu.be

*1:恐らく難読化によるものだと思う

*2:最近のSpigotに限ればであって、過去のバージョンはどうやらそういう時期がなかったらしい

*3:詳しい人から見ると語弊がある気がする

雑記 最前が良い/bukkitのnmsあたりについての理解

FFFに出向いていた。かなり楽しかったのだけれど、イベント自体の詳しいことはあまり書きたくない(というか書く技量がない)ので書かない。ちょっとだけ書いておくとお目当ての方々が殆ど2階に集まっていたので2階が中心で、他に聞きたいものがある時だけ他のエリアに向かっていた、という感じだった。楽しかった。

今回のような勢いが強めなイベントについて、個人的に「唯一他人の目を(そこまで)気にすることなく暴れることができるもの」性を感じている。流れる曲調や周りの雰囲気がそうさせているのだと思う。今回もそれに漏れることはないようだったため自分も大暴れしていた。普段は取れるだけ最前を取るように動いているのだけれど、今回は体力のことも考えて一度だけ最前を取るようにした。そういった行動を経て思ったのは、やはり最前は暴れるのに一番適しているということだった。理由はこんな感じ↓

  • 演者が目の前にいる
  • 自分の直前にスペースがある
  • 手すり(あのパイプって手すりって解釈で良い?ただの区画分けだったりする?)がある場合、掴むことができる

1つ目について。自分の家に最高のリスニング環境があっても、イベントの一体感に勝ることはないと思っていて、そんな一体感の向かう先の先頭、演者の目の前に立っているというのはとても気持ちがよいものだと思っている。2つ目について。目の前にスペースがあるということは、腰を使って上半身を大きく動かしたり、腕を大きく振ったりしても迷惑がかからないので素晴らしい。3つ目。手すりを掴んだことのある人ならわかると思うけど、その状態からであれば腕の力によって体を動かすことができるようになり、ヘッドバンギングの際に腕の力を借りることができるようになる。これは体力の少ない我々にとっては是非とも活用したい設備だと思っている。

こんな感じで、今回は体力に気をつけつつ暴れたつもりだったが、まだイベントの中頃にも達していない頃に体力が限界を迎えてしまい、しばらく座り込んだりしていた*1。こういったイベントを全力で楽しむには普段からの体力づくりが大事であると再認識した。でも体力づくりってどうやればよいのだろう。有識者はおしえてください。


最近Minecraftのサーバーの実装であるspigotのプラグイン機構に関心を寄せていて、昨日bukkitやnmsあたりについて諸々の理解をした。文章でまとめるのはそれはそれでやりたいんだけど、まずは口で説明してみた。↓

youtu.be

*1:階段や床などには座ってはいけないらしく、2回注意されてしまった。椅子に座ろう。

ざっき

最近色々な行動を制限していた。例えばゲームとかコーディングとかTwitterとかDiscordでの通話とかがその対象で、それによって時間を捻出して、参加したコンピの提出期限に向けての音源制作に当てたりしていた。とは言ってもフルで捻出できるわけではなく、その時間のうちの半分ほどは何もしたくない気持ちを落ち着ける時間として消費した。何かをやる時間というのはそういった何もない時間をバッファとして考慮しておく必要がある、というのは仕事から良く学んでいたので割と心置きなく何もしなかった。この期間というのは実は3月の初め頃からで、少し前に一週間の休みを頂いていたわけだが、実はこれも殆どDTMを触る時間に宛てるために取得していたものだった。

ただ、勿論なんだけど、これはどちらかというと気持ちの良い時間の過ごし方ではなかった。当たり前だが、無視することのできない距離にある締め切りを前に何もしていない時間を生んでしまうと、罪悪感と焦燥感が跳ね上がってしまうのだ。

今回についてはこれが特にひどかった。一週間の休みのあとに訪れた締め切りの日、なんとか完成まで持っていって提出したのだが、大事な部分を見落としていた。実は今回参加したコンピには大事なお題が存在していたが、なんと完全にこれを失念してしまっていたのだ*1。ありがたいことに、主催の方は締め切りの日程にバッファを設けてくださっていたため、これをどうにかするために5日間の猶予を捻出して頂けた。この5日間も同じく何もやれない時間が割とあったが、こちらもまたなんとかすることによってなんとかすることができた。3月前半だけで締め切りが2つもあったということになる。ずっと落ち着かない気持ちで過ごさなければならない3月前半だったというわけだ。

まあそんな感じで2mixは提出できたわけなので、後は成り行きに任せることができるだろう。気楽になったところで色々なことに手を出せるようになった。特筆すべきは、さっき壺をやっていたら記録を更新することができたというもの。3:29くらい。雪山で40秒も溶かしてしまう、という大ぽかをしてしまった。これ込みでsub 3:30なので、3分切りも夢じゃないなと思っている。今後もがんばるぞ~

youtu.be

他にも、nmsを使わないでNBTを取る機構を用意したプラグインとか、ひとのDiscord botリポジトリに勝手にDockerでの開発環境を作ったりとか、終わった途端にかなりの進捗を出すことができた。前者については多分おもろいので明後日記事を書くかな。

あと昨日はマリオカート8DXに追加されたコースのプレイが解禁された日だった。事情として、マリオカート8DXは久しくなんの新情報もない状態だったのだが、一つ前のNintendo Directにて急に「2023年末まで定期的に追加ステージが来るよ~^」みたいな情報が発表されたのだった。僕は急に来たアプデは完全に予想外という認識でたいへん驚いたし、観測範囲内のプレイヤーは皆喜び狂っているように見えた。音MAD作者のなぽりさんがニコ生でフレ限部屋を立てていたので自分も参加した。この部屋が上限いっぱいの12人で埋まったというのが結構凄いことだったのではないかなと思う。今回追加されたステージのうちGBAスカイガーデンはDSアレンジでかなりお世話になったコースで、これに今回また出会うことができたのは結構感慨深かった。今回追加された各ステージはそれぞれ難しめな部類な気はするが、少しの間TAを粘ってみようかなとも思っている。本当にやるかはわからん。大変なのでやらんかも。

*1:これは決して依頼に問題があったというわけではなく、完全に自分が悪い一件だった

雑記 連休終了 スシロー ゲーセン

身内で回転寿司を食べたい、という話が出た。ので、連休最終日の今日、昼食として3人でスシローに行くことになった。

まず行くまでがちょっと大変だった。連休の影響で完全に昼夜逆転していて寝付けたのが昼前の10時とかだったので、まず起きれるのか?という心配があった。幸い、集合時間に間に合うように起きることはできたので一安心。昼に起きることで昼夜逆転を治すきっかけにもなって一石二鳥。さて外に出ようというタイミングで謎の勧誘の電話に出てしまい、断るタイミングを探すのにちょっと戸惑って時間ギリギリになってしまった。とにかく、そんな感じで集合場所の新宿に集合した。

スシローの新宿三丁目店についた。店内が思ったよりも広く、ちょっと入り組んでいてスロープもあったのでどこかの子供がキャッキャと騒いでいた。気持ちはよくわかる。何なら僕もそうしたかったので。店内の専用機を使って順番待ちをする。QRコードが印刷された紙を受け取り、待ち時間を確認すると約35分という表示があった。時間帯も相まっていたし「まあそんなものだよな~」と思っていたけど、なんと受付後10分程で自分らの番が来た。自分の前に予約していた方々のうち大半は受付後に外に出ており、そして来ることがなかった様子だった。その人達が諦めた結果として機械の想定よりもかなり早く入ることができたっぽい。これでもし自分らも想定時間分だけ「外で待つ」をしていたらすっ飛ばされていたんだろうな、運が良かった。

スシローではサーモン、マグロ、カツオを主に、昔は食わず嫌いなどで食べられなかった白身魚とかも食べた。とても美味しかった。久々に魚類を食べたんだけど、いつもと違う方向性の味という時点でかなり美味しいものと感じられますよね。一人暮らしで用意できる食事の材としては魚類は少し難易度が高い。これくらいのお金*1を払うことで魚にありつけるのは嬉しかった。最後にクレームブリュレみたいなのを食べた。地元のスシローでよく食べていた同メニューと同じ味を感じられた。

その後、一日が終わるまではかなり時間があったので、ビリヤードをやりに行った。あまり経験がないのでかなり下手くそだった。エイトボールのルールで本来落としてはいけないタイミングで8を落として負けたり、突く時の予備動作で間違って白い玉を触ってしまったり、結構散々だったと思う。でも最後にやったナインボールは漁夫の利を得て勝利することができたのでよかった。このゲーム、うまくなれば本当に面白そうだしなんならかっこいいまであるので機会とやる気に恵まれれば練習したい。2時間くらいで退出した。

近くにあったゲーセンに行った。一度潰れた場所にまたできたゲーセンなので様子を見たかった。昔たくさんあったビデオゲームは殆どなくなっていて、プライズものか最新のゲーム機しか置かれていなかった。2,3回くらいしか足を運んだことのないゲーセンだったのだけれど、それでもちょっと悲しかった。ここでは太鼓の達人を1回やった。ダンスロボットダンスの鬼をノルマ落ちした。もう老いぼれのような僕には初見☆9すら難しい。

ゲーセン内にあった自販機でリアルゴールドを買う時、決済の方法にクレジットカードのタッチ決済が使えることに気づいた。電車に乗る時に使うICカードの例はよく見るが、クレカの例は初めて見た。一体どういう仕組みで決済が行われたのだろうか。もしゲーセン内の無線ネットワーク経由で外と通信しているのであれば、傍受のタイミングはいくつかありそうだなと思った。ゲーセンって頑張ればネットワーク機器を直接触るところまで達成できそうにも思うし。実際のところどうなんだろう。

新しいゲームしかないゲーセンに悲しみを覚えた一同は、高田馬場のミカドというゲーセンに行くことになった。僕は行ったことがなかったんだけど、かねてから噂に聞いていたゲーセンなのでとても楽しみだった。まずレトロ館のようなところに足を運んだが、こちらはレトロなゲームがたくさん置いてあった。具体的には大山のぶ代でおなじみアルカノイドとかパックマンとかそういう8bitな系統と、日本一周旅行ゲームみたいな物理寄りの系統と、ピンボールの系統。

アルカノイドをやりたかったが、既に先客がおり、かつかなりお上手な様子だったので、これの続編にあたるアルカノイド リベンジ オブ Dohというものをやった。卓上ゲームの形式で、ダイヤル型のコントローラーが付いていた。

あと、ピンボールをやった。具体的な名前は全然わからんのだけれど、いろいろやった。この動画を雑に飛ばしながら見てもらえるとすぐわかると思うけどこういうやつ。こういうやつにも種類が結構あって、3段階くらいあるように感じられた。まずはかなりプリミティブなもの、80年代っぽいやつ、90年代っぽいやつ。プリミティブなやつはそれ専用のマイコンが雑につけられてて簡単なベルの音とか電飾がピカピカするとかそういう程度のもの。80年代っぽいやつはそれに加えて電子音が鳴るようになったよ~という程度のもの。90年代っぽいやつは音が豪華になって、電光表示がリッチに見えるやつ。特に90年代っぽいやつは雰囲気がかなり良かった。ゲーム特有の物理感と合わせて流れる16bitなPCM音源がベストマッチだった。これ、今の時代にまた作り直すと面白いんじゃないか?と思う。インターネットランキングとかも用意したり、ね。多分叶うことはないだろうけど、期待してみた。プレイしてみた感想だけど、ピンボールって思ったより難しい。フリッパーで雑に弾いた玉がそのままフリッパーとフリッパーの間(もうどれだけフリッパーを振っても当たることはないエリア)に落ちてしまう、という場面が何度もあった。数回のプレイでは勘所を掴むことはできなかったが、コツがありそうで、スコアアタックの文化がアツそうだと思った。

別館にも向かった。こちらは物色がメインだった。まず1階、メタルホークの実物があった。初めて見たので感動した。知っていてとても好きなBGMが流れている。こちらも既に先客が居たのでプレイするのは諦めた。TGMのいわゆるTAPと呼ばれるバージョンが置いてあった。これは1クレやったけど、なんと8分かけてレベル500に到達できなかったくらいの戦績で終了してしまった、情けない。あとはBeatmaniaが存在した。一緒に来ていた人とバトルモードをプレイした。20, November (Hard mix)なんかをやったけど、ちゃんと二人用譜面になっていて感動した。2階に向かうと、格ゲーとシューティングゲーがたくさんあった。最新っぽい機種から70年代みたいな機種まで幅広く置いていた。あと、なにかのゲームの生放送をやってた。

それでもう空は完全に暗くなったので解散して帰った。寝不足のままだったし、かなり疲れた。眠い。連休も終了して明日からは仕事なのではやいところ寝てしまって適切な時間に起きたい。

*1:1,700円分食べた

雑記 連休終わってまう

トラックメイクは割と順調に進んでいて、なんとかなりそうだな、という雰囲気。いまはイントロとアウトロがただドラムを置いただけになってるけど、なんかを思いついて詰めたい。後は普通にまだ声ネタが詰め込めていないので、もうちょっと頑張る必要がある。


完全に昼夜逆転した。ここ2ヶ月のあいだ、あまりそういうことがなかったので不思議に思っていたんだけれど、よくよく生活を振り返ってみるとDTMに精進している時は本当に昼夜逆転しやすくなっているような気がしている。プログラミングの時とかもそういう傾向があるんだけれど、大きな音を聞きがちなDTMはより目を覚ます方向にあるのだろう。

そのせいなのか知らないけど、昨日に至っては目が勝手に閉じるくらいの/スマホを持つ手がガクンとなるくらいの眠気が来ていたのに何故か寝に入ることはできず、そして「スマホを見なきゃ!」という依存症的な焦燥感に駆られて続けていた。ツイキャスをやってみていたら50分くらいやったタイミングで一瞬寝落ちして、ようやく寝れるのかという思いと共に枠を終了して就寝した。朝の10時くらい。


lee(asano+ryuhei)さんの新しいアルバムがリリースされた。2,3年ほど前にSoundCloudでmixを発見してから、唯一無二と言えそうなサンプリングセンス(特にラップという手法に拘らない日本語の使い方、染み入るようなメロディ/コードの引用や、本当に独特なリズム隊)やかなりザラついた音作り が自分の心に強く響き続けていて、そんな方の新しいアルバムというわけです。また今回もその方向性は光り続けていて、本当に良い時間だった。

open.spotify.com

今回は特にPersian EmpireとBallheadがコラボレーターとして存在しているのも嬉しかった。理由はどっちもまた大好きなので。

f:id:naari_3:20220304235604p:plain

FK_LV、AJKN、FKFKFKFKFが特にお気に入りかも。他も全部とても好き。

これは別にこの方に限った話じゃないけど、ビート系の方々は一曲の中で曲の方針を2つほど持ち、かつ急に別の方針に変更する技を見せてくることがあって、あれが本当にかっこいい。別の曲として分けるわけでもなく一曲の中でそれをやるのがかっこいい。このアルバムの中でも数曲そういったものがあってかなりうれしかった。


さっき寝落ちの話を書いたけど、起床してから*1lee(asano+ryuhei)さんの個展 YENO に行った。本当はオープニングイベントでの本人のアクトも見たかったけど、自分がポカしたので仕方がない。

lee(asano+ryuhei)が個展『YENO』をANAGRAで開催|オープニングイベントにKILLER-BONGやNAGAN SERVERなどが登場 - FNMNL (フェノメナル)

YENO

YESでもNOでもない。

あれでもこれでもない。

白でも黒でもない。

あいまいではっきりしない。

それは終わりであり始まりである。

lee (asano+ryuhei)

あまりビジュアル方面への語彙がなく、長々しく話すとよろしくなさそうなので一番思ったことを書くと、この方のアートは音楽にしてもこれにしてもサンプリングの扱いが本当に上手いのだなという感じだった。完全に彼自身の表現手法に昇華しきれた、という感じなのだと思う。うまいこと書けないな、まだ明日(2022/03/05 21:00 JST)まではやっているので東京近辺で行ける人は足を運んでみてください。凄かったです。


ゲーム実況です

youtu.be

つまりは、

  • Ableton LiveVocoder の Formant が高めな音を含んでいるサブベースと相性が良さげ
  • おそらく基音に対する倍音や、それよりも低い音のバランスをツマミ一つで移動させられることができる
  • 喋ることも定まっていないのに、はたして一発で喋れるのか?をやってみたかった
    • ダメダメでした
    • けどちょっと面白かったのでもうちょっとやってみたい

*1:17時だった

雑記 9連休の真ん中です

弊社は夏休みという概念がなく、代わりに各メンバーが勝手に休みを取るという形式でやっている。概念としてリフレッシュ休暇というものがあり、一年に一度、有給によって休みが5日ほど連続する場合にプラス1日有給を連続させることができる制度が存在する。自分は夏に夏休みを取ることなく過ごしていたが、前述のリフレッシュ休暇は年度が変わることによって消えてしまうので、その前に休みを取っておこうと思った。それで9連休を錬成したのだが、今日はその真ん中の日にあたる。

この時期に取ったのには理由があって、単に最近疲れていたから、というのと、某コンピレーションに誘われていたがその音源に対して全く着手していなかったから、というのがあった。今必死こいて作っています、頑張って完成させる予定です。これがうまくいったらブログで宣伝でもしてみようかな。

景気づけとして連休初日にリポビタンDを2本飲んでみたんだけど、明らかに体調不良になった。が、トラックメイクの調子はとても良くなった。一時期眠剤の乱用をしてしまっていた時も同じくトラックメイクの調子は良かったので、おそらくそういうものなのだろう。反動が辛かったので本当に「いざ」といわなければならない時の切り札にしたい。


息抜きの壺で4分切を達成した。毎度ながら、反省点はかなり多く見えるのでこれをどうにかしてさらなるタイム短縮を狙いたい。つぎは3分半。

youtu.be


某日本料理系音MAD作者が「DTMチュートリアル動画を見て学んだことをメモとして残している」と言っていて、えらいなあと思ったので自分も見習ってみる。ただ、今はとくに何も見ていないので、今取り掛かっているプロジェクトファイルを構成するにおいて思い出したことを書いてみる。

  • Erosion
  • 短いピンポンディレイで付けられる質感はいい
  • 別プロジェクトで作った変な音のチャンクは保存しておくと良い
    • 以下のM4Lが超絶便利である
    • Sample Renamer
    • Sample Exporter
  • 100hz~300hzあたり?が泥になりがちなのでノッチフィルターで殺すと綺麗に聞こえがち
    • 同じような理由でSaturnのマスター刺しの時に100~300あたりが過剰に潰されてるとサブベースの聞こえ方が大きく変わる場合がある
      • 最近っぽいベース系によく効く みんなそうしてるっぽい
  • 特にfoleyやhatなんかを埋めるとき、それが特定の間隔(例えば8分間隔)で置かれているものであれば開始地点はどれだけズラしても破綻しないすぎ
    • drunkは思い切っても良い
  • foleyは音程を変えたり伸ばしたりすると楽できる
  • 真ん中から多少LかRにずれるくらいなら芯は食ったままステレオ感出るので嬉しい
  • ボルタメントすき~

tips集みたいだ。見直しても自分以外なにも分からなさそうだからいつかちゃんとまとめてみたい。


今やってる音源、1分までは作れたけどそれ以降の展開をどうしようか迷っている。新しいパートに取り掛かるのが億劫すぎる。誰か背中を押してくれ~~~*1 あと、やはり2mixができない。全部潰れた音になってしまう。どうにかしてくれ~~


以下は箇条書き

  • いつもスマホからUber Eatsを頼んでいたが、パソコンから頼むようになった
    • ブラウザからいけることを知らなかった
  • 食事
  • 財布の中のお金がなくて、外の自販機で飲み物を買えない
    • キャッシュカードから金が出てくるようになるか自販機がカード支払い可能になってくれる必要がある
  • 前回記事に書いたメタップスペイメントの件がニュースになってた
  • ネットワークわからんな
    • Discordで離していて輻輳制御の話がでてきた

*1:この時、薬からくる体調不良は僕の背中を押してくれるのかもしれんなと思ってしまった。やめよう。