2021年末にRiJを見た

あけおめ~年末はゲーム系のストリーム配信をたくさん見た。

自分は昔からRTA系の大きなイベントをよく見るが、その流れがずっと続いていたため例に漏れず今年もRiJを見た。

その期間中に行われた獣道4も見た。このイベントに常々追ってるテトリス勢のkazuとあめみやたいようのビッグマッチが組み込まれており、このために見る必要があった。これはこれで本当に凄かったから別で書こうかな

RTA in Japan Winter 2021

さっき書いたとおり、昔からよくRTAのイベントを見ていた(具体的にはAGDQ2015あたりから)。好きなゲームのRTA英語圏で流行っていたのもあり、自分の習慣として根強い。今年も例に漏れずRTA in Japan Winter 2021を見た。

基本的な姿勢として、気になるタイトルは事前に自分のカレンダーに挿し込んでいて、そうでないタイトルの場合はバックグラウンドだったりサブモニターに置いたりして基本ずっと視聴者数のカウンターを温め続けていた。そのため、全く知らないタイトルも結構見ている。

以下、見て印象に残っているものをスケジュール順に感想と共に挙げる。今後アーカイブを見直す度にちょっとずつ追記されるかも

クロノトリガー

自分の思い出のゲームが壊される様は見ていて本当に気持ちが良い。LSSを一発で決める、乱数調整、からのグランとリオン戦の行動予測が本当に痺れた。最高。

www.youtube.com

ルートとか各技とかすごくわかりやすくまとめられているWikiがあり、かなり丁寧だった

chrono.wikidot.com

Trials Rising

迫真バイク部でしか見たことのないゲームで、該当動画では大変に苦労している様をよく見ていた。それだけあって超絶技巧とも捉えられるスタイリッシュなプレイングは大変素晴らしかった。

www.youtube.com

Don't Spill Your Coffee

このゲームのひとつ前がTrials Risingだったので落差がひどく、印象に残っている。

www.youtube.com

WHAT THE GOLF?

このあとすべてのゲームが「実質ゴルフゲー」と言われる要因となったタイトル。完全に知らないゲームだったが、ゲーム自体の出来栄えとゲームプレイと解説のうまさがかなり良かった。解説が随時に挟むネタがとても面白かった。

www.youtube.com

ジャイロセット

前提として、自分は任天堂のロボットが好き。スマブラ経由でロボットのかわいさに目覚めてから、ロボットのグッズだけは収集している。だからというのもおかしいが、結構気になっていたタイトルだった。

大好きなロボットの機能特性や売り出し方についてマニアックに解説してくれたのがとても嬉しかった。

TASの動画も見たことはあるが、あれはロボットの存在が無視されたゲームプレイだった。今回は正統なゲームプレイだったのでなおさら嬉しかった。

www.youtube.com

星のカービィ 参上! ドロッチェ団

乱数の確認とか目押しの無敵キャンディー当てやばすぎる…まじかよ…

www.youtube.com

NINTENDOパズルコレクションパネルでポン

走者の声と喋り方の雰囲気がまじでかわいかった。

パネポンの基礎から発展、それ以降のRTA的な向き合い方までかなり詳しく解説してくれていて良かった。

www.youtube.com

TETRIS

やった~~~~CTWCが採択されるぞ~~~一体誰が見るんだ~~~~とか思ってたら少し前にこんなnoteが投稿され、注目度が10倍くらいに跳ね上がった印象がある。

note.com

自分のYouTubeのおすすめ欄には常に英語のCTWCの動画が出てくるし、それをちゃんと見ているので日本語で盛り上がっている様が見れた。嬉しい。

しかも実際のレースとしても予選に近い形を採ってくれてかなり嬉しかった。さらにレースとしても結構競っていたし。DAS溜めもhyper tapもrollingも見れて大満足。

www.youtube.com

スーパーマリオ 3Dワールド + フューリーワールド

ゲームだけ買ってやってないゲームのひとつ。割と新しいゲームなのにテクニックとしてVectoring Dashやアイテム保有判定のバグが存在するっていうのが面白かった。これを消さないのは任天堂が割くリソースの優先順位的な問題が大きそうだけど、姿勢としては結構好感が持てるし、ゲームプレイとしてもかなり映えたものになるから嬉しい。

実際のゲームプレイもかなり快適で最高だった。あと解説の声が可愛かった。

www.youtube.com

スーパーマリオ64

昔からマリオ64RTAは追っていて、走者についても知ってはいた。前に16枚の目隠しRTAの動画でごろうさんが言及されていたので。

だが、目隠し70枚カテについては完全に初見だった。16枚と比べても記憶しなければならない操作量が桁違いな気がしており、プレイ中はその正確さにずっと驚き続けていた。

自分はかなり昔スーパーマリオブラザーズの目隠しプレイをやったことがあり、ピーク時は8-1に到達するくらいにはやり込んでいた。完走できなかったのはシンプルに覚えることが多くて大変だったからなんだけど、ゲームの特性が全く違う、しかも難しい方向に違う3Dのゲームで割と完璧なリカバリーをしながら踏破していくのが本当に凄かった。

それと、解説の宇佐美まさむねさんはかなり凄い人なのにその点についての自己紹介を全くしないのが凄いなと思った。解説に徹する心を感じた。

www.youtube.com

BIOHAZARD Operation Raccoon City

4人のCo-opだった。全然知らないゲームだったが、とあるベクトルの方向では一番すきなタイトルだったかも。

4人がず~~っと楽しそうにひとつのゲームに向かっているため、何かゲーム内で起きたことに対する反応が全員に共有されて全員が楽しそうに反応する、というのが本当に心地よかった。そういうゆる~~~い雰囲気のことを僕は個人的に「深夜枠」と呼んでいるのだが、そういった雰囲気があった*1

自分はRTA系の大きなイベントが主にオンライン開催になってしまったことについて結構悲しく思っている側の人間で、というのもRTA中の大技/なにかのおもろいネタを決めた際に会場がドッと盛り上がる瞬間がかなり好きだったのに、それがなくなってしまったというのがかなり悲しかったわけです。やはり盛り上がりに欠けている気がする。

このタイトルはその穴を擬似的に埋めてくれるような、そんな感じがあった。本当に良かった。ありがとう。たくさんbits投げた。

タイトル中のネタもかなり良かったな~~、カテに必要なDLCが200円だったのにオペラク本体は中古ゲームショップで35円で購入した(1オペラク=35円)とか

www.youtube.com

塊魂アンコール

すきなゲームなのでちゃんと見てた。

やったことない人と一緒に見てて、その人はピンと来てなかったみたいなんだけど、あのゲームは操作性に癖があって綺麗に進めるのがかなり難しい。その前提でコース取りやルートの選定、へんな技とかがあって、かなり難しいはずなのにここまで綺麗にやってくれるとかなり嬉しい。

www.youtube.com

ドラゴンクエスト

スゲ~~~~~~~本当に狂ってる これまじで脆弱性を考える気持ちと同じなんじゃないか??エンジニア的な心がくすぐられた

その後、ピロ彦Pさんのバックアップ的な解説記事が挙げられた。

pirohiko.hatenablog.com

過去NESのエミュレーターを作った時の知識が活きて、結構話についていけた。NESエミュレーターについての記事をはやく作らないとな~

www.youtube.com

R4-RIDGE RACER TYPE4-

このゲーム、本当に1ミリも知らないけどBGMが本当に大好きで、サウンドトラックだけはちゃんと買っている。20th anivのやつも買っていて、たくさん聞き回していた。

今回初めてゲームのプレイ画面を見たが、僕の大好きな曲が本当にかっこいい場面で使われていてひどく感動し、普通に涙を流してしまった。これはゲームプレイじゃなくてゲームについての話なのでは?と思われそうだが、ゲームプレイが激烈にうまいからこその涙だったと思う。

解説がBGMを聞かせてくれたことも確実にその要因だったと思う。ゲームの内容すべてやプレイのうまさを引き立てる最高の解説をありがとう。

www.youtube.com

パリ・ダカール・ラリースペシャ

ゲームが面白すぎた。全然知らんゲームだけど最高だった。

www.youtube.com

スーパーマリオワールド

まさに僕の故郷のようなゲームで、ここまでエンジニア的になったのもこのゲームが要因だった。もちろんRTAのシーンも見ていたが、正直海外で96exitが流行りまくっていた所までしか見ていなかった。簡単に言えば最近のシーンを追えてなかったのだけれど、昔から頑張り続けているメンバーは勿論のこと、最近のRTAブームによって参加してきた方もトップ層として活躍している、というのが伺えてよかった。

ETAが過去のAkistoさんの時と比べて速くなってる気がしていて、シンプルに精度の進化が垣間見えた。ていうか昔は一位だったAkistoさんがこの順位だったのはとてもおもしろい結果なんじゃないかと思う。そもそも昔のRiJだとx速度が51かどうかってAkistoさん以外みんな見えてなかったよね、面白い。

www.youtube.com

月風魔伝

バグの使い方と解説の感じがかなり面白かった。

www.youtube.com

ゼルダの伝説 時のオカリナ

なんでみんな当たり前の顔して色々呼び出してるんだ…いやきっとstratの安定化みたいなのがあるのだろうけど…

www.youtube.com

まとめみたいなやつ

いや~いろいろよかったですね、熱が収まるところを知らず、というかんじ

僕がこのイベントに置いている心としては「知ってるゲームは過去の自分と照らし合わせ、知らないゲームはゲーム紹介のショーケースとして受け取る」という感じで、特に最近は解説がかなり力を入れてくれるケースが増えているので大変ありがたい。新たな出会いは確実にあったし、いい効果だと思う。

外伝的にリアル会場での開催も決まったみたいだけど、本筋の方もそうなってくれるとありがたいな~

*1:僕が好きな深夜枠はこれ。個人的にマジの伝説で、一番好き。

2022年の目標

昨日振り返ったので、今日は雑に目標を立てる。

↓去年立てた、今年の目標

naari.hatenablog.com

  • PCの環境をもうちょっとよくする
  • 録画鯖を作る
  • 音MADを作る
    • 去年1つしか作らなかったので
    • YTPMV
    • セリフ合わせ
  • 誘われの音源をちゃんと作る
    • 素振りとかもして多少くらいは満足したい
  • レーベルとか何かのDIscordサーバーに音源を投げてみる
  • なにかのイベントに出たい
    • ちゃんとmix作ったりね
  • このブログをちゃんとやる
    • 下書きを消費する
  • 本棚を完成させる
  • そして荷解きを完遂する
  • 継続して生活にちょっと気をつける
  • 継続して食事に気をつける
  • 貯金のことを考えてみる
  • 転職のことを考えてみる
  • 趣味のプログラミングのプロダクトをもうちょっと真面目にすすめる
  • SRE頑張る
    • クラスタ引っ越し
    • 会社のほうでひとつ技術記事を書く

2021年の振り返り

naari.hatenablog.com

目標は振り返ることに意味があるのだ

項目を振り返る

今年やった技術的なことについては別記事にまとめる予定

(追記↓)

naari.hatenablog.com

音MADの映像を作る

そろそろ川谷絵音と決別する

183を消費する

とあったけど、ニコニコに投稿出来た音MADはこれしかなかった。一応動く画は乗っているが…

www.nicovideo.jp

183もひとつも進むことなく、残念ながら失敗です…

DTMでトーナルやコード進行から逃げない

これは去年よりは出来た

秋のM3(以下埋め込み)ではボキャ貧ながらもコードとかメロディっぽいものについて考えることが出来たし、通話相手の言っていることがなんとな~くでもわかるようになったのは良い傾向と言えよう。

emotive.bandcamp.com

レーベルにトラックを投げてみる

やらなかった

何度か考えてみたものの、まだその時期じゃない…実力が追いついていない…

mixを3ヶ月に1つは作る

雑にひとりでrekordboxを触ることはしていたが、ちゃんと組んだmixはひとつしかなかった

www.nicovideo.jp

保険証を再発行する・マイナンバーカードを再発行する

どちらも達成した!!

ちゃんと計算してないけどたぶん10ヶ月くらいは不所持の状態だった。ようやく病院に行けるようになったし、夜イベントで自分の年齢を証明できる術を取り戻せた、、、、

引っ越しをする

した!!!

詳しくは書かないが、近くに新築のマンションが出来たのでそちらに移動した。

引っ越しという最難関の行いもなんとかこなすことが出来た。ただ、まだ荷解きが終わっていない、、、

部屋の不満は多少あれど、今もまだ満足しています。

このブログをちゃんとやる

溜まっている下書きを消費する

下書きの消費はほとんどやらなかったが、2021年はこの記事の執筆時点で9記事も存在する。いいことだと思う。

この記事はだいぶ拙い感じだったけど音MAD Advent Calendar 2021に参加した。id:kaikityouさんありがとうございました。

naari.hatenablog.com

整理整頓のスキルを身につける

荷解きをしておらず、ほとんどダンボールに入っている状態なので問題なし!というわけにも行かず、おそらく何も変わっていない。

本棚を完成させたあとにもう一度書こう…

おしゃれに気を使ってみる

う~~~~~~~~ん、一応去年やその前よりはマシになった気はするが、、、、、、、、、、、、、、、、、、

このシーズンに着たい服は現状1セットしかないので、ちょっと微妙

チェーン店でない好きな飲食店を見つける

後述するが、今年は様々な人に飲食店に連れて行ってもらい、その時にちょっとだけ色々な店を知ることが出来た。

例えば、この間連れて行ってもらった中華屋がとても良かった。今度一人でも行ってみようかな~

goo.gl

よく使うようなコードをギターですぐ弾けるようにする

まず、ギターを全然触らなかった。来年に持ち越しです(;_;)

キーボードに再度向き合う

特に秋のM3なんかは顕著で、まったくキーボードを触らなかった。これは引っ越しも関係しているので、仕方ない、と正当化しています。来年に持ち越しです(;_;_;)

ブラウン管でプレイしながらキャプチャできる環境を作る

各パーツは購入できたので、あとは組み立てるだけ、、、来年に持ち越しです(;_;_;_;)

いいかげん録画鯖を作る

ちょっと色々あって物理的なコンピューティングリソースを手放すこともあった。なにもないことを願って、来年に持ち越しです(;_;_;_;_;)

グラボを買う

高くなりすぎ、無理!安くなることを願いつつ、来年に持ち越しです(;_;_;_;_;_;)

自宅のk8sクラスタを構築する

前述した通り、自宅にサーバーを置かなくなったので物理的に触れる位置にはないが、代わりにGKEを借りるようになった。

こちらでは自前のサービスが数個動いていて、ちゃんとSSOTになっているリポジトリによって管理されている。これについては別途記事が書きたいな~

アドセンス広告を貼れるようなサービスを作る

イデアはひとつだけあるが、諸々に追われて手にかけられなかった。忙しさについては後述する。

SRE的な力をつける

やはりCI/CDをちゃんとやりたいし、自分がアプリ開発メンバーとしてjoinしたい環境がいい

現職のチームではSREのロールをやっているが、今はどちらかというと過去積み重ねられた負債をひとつずつ消費している状態になっている。

オンプレのk8sからEKSに移行させているが、考慮するべき点や実装しなければならないものが多く、かなり時間がかかっている。大変むずかしい。はやくいい感じになりたい。

給料を上げることを考える

上がった!めでたい!詳しく聞きたい人が居たら僕に直接聞いてください。

項目にない事項の振り返り

生活の話

今年は2020年とは色々と違った生活を送っていた気がする。リモートワークも2年目となり、その勝手に慣れつつある中で自分の仕事のやり方や、生活式用を向上させるための活動をしていた。

引っ越しもその一環で、引っ越しによってユニットバスではない孤立した風呂とトイレを手に入れた。孤立した風呂が存在する実家に帰る度に思っていたが、浸かることの出来る風呂というのはやはりとても素晴らしいものだった。これを手にしたかった。とても嬉しい。

他にも、部屋自体の設備が良くなったので、それによって良い生活を送れるようになった。具体的には風呂場を利用した室内乾燥機能や、前の部屋より数段賢くて特に設定をしなくても年中適温に保ってくれるエアコンが挙げられる。本当に素晴らしい。

この甲斐があってなのか、関係ないのか知らないが、睡眠が少しだけまともになった。これまではギリギリ日例前(12時直前)に目覚めたり、ひどい時はほとんど毎日寝過ごしていたが、今はどちらかといえば朝に起きられるようになってきた。まだ1日24時間が安定していない状況だが、本当にひどかった2年前と比べれば大きな変化だと思う。

コミュニケーションの話

リモートになってから、生活の大半を占める仕事中の雑談が出来なくなった。これは自分には大きなダメージだったらしい。一時期本当に何も手につかなくなってしまった。

この代替として、最近はDiscordサーバーに籠もりきっている。幸いにも音MAD界隈の一部の方々と交流をもたせてもらっており、また良く話し相手になっていただいた。これからもどうかよろしくお願いします。

また、同じような理由でインターネット経由で知り合った色々な人とご飯に行った。

これに関しては上記の理由に加え、自分が今住んでいる地域に知り合いが一人も居らず、気軽に誘える知り合いがインターネット上で親密にしている方に限定されてしまう、という事情も絡んでくる。

自分が人と食事に行く理由は2つある。片方は「様々なごはん処を教えてもらうため」、もう片方は「より円滑なコミュニケーションのため」。

様々なごはん処を教えてもらうため

前述の通り、今年は生活の質を上げることを目標にしていた。その中でも、まともな食事を摂るというのはこれまで疎かにしていた部分だった。朝昼晩の三食を食べる、バランスの取れた食事を摂る、などを気をつけていたが、それに加えておいしい食事を摂るというものも気にかけていた。

ただ、自炊は大変に疲れるので、外食の、もっと言えば「コスパのことをあまり気にしなくても良いような、かつ採って飽きないユニークな食事」を考えると、チェーンでないお店というのがマッチしそうだと考えている。「そういうお店を知ってるとおしゃれだな」というのもあるけど。

しかし、自分ではなかなかそういうお店に入れない。なんならチェーン店でも知っているお店以外は入るのが億劫になる。そこで、同行者おすすめのお店に便乗して入ることで初見の状態を軽々突破しよう、というのが狙いになっている。

実際にこれが功を奏しており、去年と比べて様々な飲食店に入る事ができるようになった。いつか列挙する記事ができるといいな~

より円滑なコミュニケーションのため

当たり前の話だが、リアルな場での会話には実効的なラグは存在しない。自分から発したメッセージは音速で相手に届き、相手からも音速でメッセージが届く。対するインターネット上での通話的コミュニケーションの環境は年々良くなっているのだが、それでも微妙なラグが円滑さを阻害してくる。

また、PCの前に座って別の作業をしているわけでもないので、食事をしながら/終わったあとの会話にはとても注力することが出来る、という利点もある。

普段からDiscordで通話している分、現実での会話のスムーズさというのが快適に思えてくる。僕はあまり喋りが上手くないが、それでも心地よい会話がしたいので、積極的に人と食事に行っている。

忙しい話

上記の諸々を頑張っていたせいか、今年は創作系の活動に全く注力出来なかった。例年と比べて体力がなくなったのか?と思っていたが、気をつけるべきことを気をつけた結果、そちらに体力を取られていたと考えたほうが自然そうに思った。

そもそもシンプルに仕事が重くなってきたという話もあったり、今年に至っては実家の方面でも大きめな出来事が多くあったり、もしかしたら普通に大変なのでは??という気持ちになってきた。仕事、プログラミング、ビート、音MADを並列してやっていくにはもうちょっと仕事への向き合いを軽くしたり、他にも気の捉え方を変えるなどする必要がありそう。

それでも、世間の方々はこんな状況の中でも時間を見つけて創作をしているというのだから難しい。その方々はきっと僕よりも忙しいと言うのに。自分もほどほどに追いつかねば。

とは言っても、2つの音の企画、1つのアドベントカレンダーに参加できたのはシンプルに良い成果だったし、それなりに頑張っていたと思う。

nigurarecords.bandcamp.com

emotive.bandcamp.com

adventar.org

2022年の目標は?

明日別記事に書きま~す 書いた

naari.hatenablog.com

Rustのゲーム用ライブラリpistonがWindowsの上だと60fps出なかったのを直した

github.com

tl;dr

  • pistonで60fps出なかった
  • WindowsSleep はデフォルトだと精度が悪い
  • sleepを呼ぶ前に timeBeginPeriod を呼んで精度を良くしたら60fps出るようになった

pistonで60fps出なかった

趣味でNESエミュレーターを作っていた時に発生した事象として、pistonというライブラリを使うと60fpsを出せないというものがあった。

60fpsという要件を達成するには、1回の更新毎に約16.6msずつ待ち合わせる必要がある。考えられる実現方法としては、ゲームのロジックを実行する際にその処理が何ms掛かったのかを記録しておき、16.6msからその時間を引いた時間だけ処理を停止する、というものがシンプルで良さそうだ。

use std::time;

fn main() {
  let frame_rate = 60;
  let sleep_ms = time::Duration::from_secs(1) / frame_rate;

  loop {
    let start = time::Instant::now();
    game_logic(); // ちょっと時間がかかる
    let elapsed = time::Instant::now() - start;
    if sleep_ms < elapsed { // 経過時間より1fの規定時間のほうが長かったらスキップ
        break;
    }
    time::thread::sleep(sleep_ms - elapsed); // 16.6ms - Nms 分だけ停止する
  }
}

この基本方針はRustのゲーム用ライブラリであるpistonも同じだった。同じようにフレーム毎の待ち合いに std::thread::sleep を使用する。

piston/lib.rs at 380dad8fe2ac21bfd581f6f7338ae45546d6fd9a · naari3/piston · GitHub

                State::UpdateLoop(ref mut idle) => {
                        # snip
                        let current_time = Instant::now();
                        let next_frame = self.last_frame + ns_to_duration(self.dt_frame_in_ns);
                        let next_update = self.last_update + ns_to_duration(self.dt_update_in_ns);
                        let next_event = cmp::min(next_frame, next_update);
                        if next_event > current_time {
                            # snip
                            sleep(next_event - current_time);
                            State::UpdateLoop(Idle::No)
                            # snip
                        }
                        # snip
                }

ただ、このコードをWindowsの環境上で動かすとうまいこと行かない。60fpsには届かず、自分の手元の環境だと34fpsくらいしか出なかった。

WindowsSleep はデフォルトだと精度が悪い

僕はあまり知らなかったが、有名な話としてWindowsSleep で実際にスリープされる秒数はタイマー割り込みの周期に依存している、というものがある。

例えば Sleep(1) と実行しても実際にスリープされるのは10msくらいだったり16msくらいだったり、場合によっては55msくらいだったりするらしい*1

また、Rustの std::thread::sleep は内部でWindowsSleep を使用している。

github.com

github.com

つまり、ゲームのロジック実行で13ms掛かった場合、本来は3msだけ待たなければならない所をそれを大幅に超える16msも待ってしまうということになる*2

sleepを呼ぶ前に timeBeginPeriod を呼んで精度を良くしたら60fps出るようになった

問題の原因としてはデフォルトのタイマー割り込みの周期が結構広いことが挙げられるので、これを調整してやれば良さそう。

幸いにも timeBeginPeriod というAPIが用意されているのでこれを叩いてやるように変更する必要がある。

今回この対応をpistonにも導入した。

github.com

pistonの方針があまりわからなかったので、WindowsAPIである timeBeginPeriod をどのように 呼ぶべきか分からなかった*3。とりあえずこのあたりをうまく実装していそうなライブラリの spin-sleep に依存するようにした。

-                            sleep(next_event - current_time);
+                            spin_sleep::sleep(next_event - current_time);

spin-sleepは sleep というAPIを持っているが、Windowsの環境で実行する場合は std::thread::sleep を実行する前に timeBeginPeriod を実行し、std::thread::sleep 実行後は timeEndPeriod を実行する。他の環境に向けてもよしなな実装が入っているため、sleepの精度が良くなりそうだった。

これで無事に60fpsが出るようになった。めでたしめでたし。

*1:http://hp.vector.co.jp/authors/VA007219/rtc_pic.html

*2:13ms + 16ms ≒ 約29ms ≒ 1s / 34

*3:素直にwinapiに依存させるべきか迷ったが、後述の理由もあるのでやめた

音TIP

この記事は音MAD Advent Calendar 2021の18日目の記事です。

adventar.org

概要

最近は音MADにあまり手がつかず、どちらかといえばDTMのような事ばかりやっているんですが*1、今回せっかくこの企画に誘われたので音MADにも手軽に活かせられそうな知見を雑に列挙したいと思います。

原曲に寄り添う形でサンプルを配置することが基本となっている音MADの技法に対し、直接使えるのか怪しいものもありますが、皆様の目に触れることで有効活用されることを期待しています。

尚、ページ内に音声ファイルの埋め込みが多数存在します。それぞれ音量が大きめですので、再生前にご自身のスピーカーの出力を小さめにしておいてください🙏🙏🙏

以下、目安です。

オーディオエフェクトとミックスに寄ったような話

エフェクトをチェーンにする

まず基礎として、エフェクトを重ねがけする「エフェクトチェーン」について考えます。

音作りを根ざしたエフェクト場合、エフェクト一つで劇的に音が改善するようなことはないはずです*2

このアプローチは、何か理想の音を思い浮かべた後に音の役割を分割し、要素ごとにエフェクトを掛けることで理想とのギャップを埋めていきます。

そのためにはエフェクトごとの特徴を知る必要があります。

組み合わせ例: ディストーション と EQ

例えばディストーションなどの音量が大きくなるようなエフェクトを掛ける場合、聞かせたい部分以外の音は真っ先にEQで落としておくと良い結果になりやすいです。これは、使いたい部分以外の音が大きくなると後々の工程で音が切りにくくなるためです。

音割れなどの表現であえて残した方が良い結果が出る場合や、トラック数が控えめなどの理由によりむしろ残しておいた方が良くなる場合もあるので、ケースごとに対応できれば良さそうです。

組み合わせ例: ディストーション と リバーブ

同じように、ディストーションとリバーブの順序関係も考えると面白いです。

ディストーション*3バーブ*4 の場合、単純にディストーションが掛かった素材の音に対してリバーブを掛けますが、

バーブディストーション の場合、リバーブによって得られた残響音に対してもディストーションが掛けられます。

順番によって意味合いが全く変わってきてしまうので、ひとつ考慮出来ると良さそうに思います。

コンプレッサーのサイドチェインについて

コンプレッサーは閾値以上の入力があった際に音量を小さくすることが出来るオーディオエフェクトです。

基本的には同一トラックの音量に対して作用するエフェクトですが、外部のトラックの音量に対して作用するサイドチェインというモードが存在します。

つまり、外部のトラックの音量が大きくなり閾値を超えた時に対象トラックの音量が小さくなります。

こちらを利用することで外部トラックのタイミングで対象のトラックの音量を変えることが出来るため、使いようによっては大変便利なものになります。

よくある例として、キックやスネアをサイドチェインの入力に指定するとキック/スネアが鳴っている間にトラックの音量を抑えることになり、相対的にキック/スネアを目立たせることが出来る、というものがあります。

f:id:naari_3:20211218161620p:plain
① - ② = ③ 伝わるとよいのですが…

以下の例が実物なんですが、キックが鳴っている間だけベースと元ネタの音量が極端に下がっていると思います。

また、音量に対してだけでなく、エフェクトの掛かり具合に対しても同じような指定が出来ます。これについては音MADでの使用例の項で取り上げてみます。

音MAD制作での使用例

音MADの場合も先程挙げた例と同様で、素材のトラックを入力としたサイドチェインを原曲に掛けることで有効的に使えるのではないかと思っています。

REAPERにサイドチェインの対象をエフェクトの掛かり具合にすることが出来る機能があるのですが、これをEQの掛かり具合に当てはめることで「この素材が鳴っている間だけ原曲のこの帯域を小さくする*5」のような挙動が組めます。

方法を紹介すると以下の通りです。

  1. 素材のあるトラックから原曲のトラックにセンドするルーティングを設定しておく
  2. 原曲トラックにEQを挿入し、動かしたい帯域をへこませておく
  3. EQのゲインをクリックしておき、上部にある パラメータ から パラメータモジュレーション/リンク を選択
  4. パラメータモジュレーション有効下、基準値設定 をオンにし、音声信号制御(サイドチェイン) をオンにする
  5. トラックの音声チャンネル に先程センドしてきたチャンネルを選択し、各種パラメーターを調整する

これでお手持ちの好きなEQがサイドチェインをトリガーに動くようになりました。

f:id:naari_3:20211218215810g:plain
Pro-Q3付属のダイナミックEQの機能を使わずしてダイナミックEQを実現する

音MAD制作でさらに手を抜くために使う

例えば音MAD制作の際、原曲やその他のトラックからキックやスネアが鳴っている間だけ音量を下げたいが、キックやスネアの音は作りたくない!という場合には、次のような手が取れます*6

  1. 原曲のキック/スネアのタイミングをMIDIに書き起こす
  2. 任意の素材(キック/スネアのような音)を読み込ませたサンプラーを用意する
  3. サンプラーのトラックをミュートにする*7
    1. の音をサイドチェイン(音量/EQ)のトリガーに設定する

この手順によって、原曲のキック/スネアのタイミングで音量が小さくなるサイドチェインが実現出来ます。これを各素材のトラックに置くことにより、原曲のキック/スネアが相対的に浮き出る形になるため、その良さを活かしつつ音MADの制作が出来るという点がとても大きく感じています。

原曲の音を残しつつ、音MADの良さを書き加えることが出来ます。

参考

www.ableton.com

www.ableton.com

帯域ごとの聞こえ方の表

f:id:naari_3:20211124014248p:plain
周波数帯ごとの音の特色について*8

音の鳴っている周波数帯というものがあります。各種EQの裏にあるアナライザーなどを見ている方は、この帯域はこんな音で~という知見を感覚として身につけていると思いますが、このようにチャートの形式でまとめてくれているサイトがいくつか存在します。

これを見ながらEQを操作してみて、音がどのように変化するか?を体験してみると感覚がさらに身につきやすくなると思います。

今回はこの音を例にして少しだけ弄ってみましょう。

Low Mids (125 ~ 500hz)を持ち上げてみると、次のようになります。

チャートではここを持ち上げると "Muddy"「ドロのよう」と表現していますが、低音が大きくなった分少し重めな印象を受けられるようになったかと思います。

次に、High End (8khz ~)を持ち上げてみると、次のようになります。

チャートではここを持ち上げると "Fatiguing"「つかれる」と表現していますが、確かに声に多少の刺々しさが加わり、ノイズ感が強く感じられるようになったかと思います。

チャートではどちらも悪い言葉を使用していますが、これはあくまで音楽的なMIXを志した場合の話であり、音MADの場合だと素材単体であればむしろプラスな聞こえ方になることもあります。前者の例は存在感が増す音になりましたし、後者の例は他パートよりも声が浮きやすくなるでしょう。音MAD的なボーカル処理として考えればアリな加工だと思います。

上記の画像は僕が好きだったコミュニティのものなので、情報や語彙に偏りがあるかもしれません。
別のコミュニティで作成された同類の画像も多々あります。「frequency spectrum chart」で検索すると複数ヒットしますので是非ともご確認あれ。

例としてもう一つだけ挙げると、以下のページはマウスカーソルを合わせることで各帯域、楽器ごとの特性を表示してくれます。特に楽器ごとの特性についてはYTPMV的な音作りをする方にとっては重宝するものなのではないかと思います。

alexiy.nl

f:id:naari_3:20211218070441p:plain

個別のオーディオエフェクトとか音作り関連の話

エフェクトの概要を知りそれぞれの特色を掴むことで、より目的の音に近い結果を得やすくなるはずです。

LRチャンネルどちらか片方の位相を反転させることによる音声のステレオ化

音源についてステレオな音が欲しい場合、例えば iZotope Imager を始めとしたステレオイメージャー系エフェクトやコーラス系エフェクトを使う場合を見かけるかと思います。

これはお手軽に広げることが出来る一方、性質上どうしても音像がボヤけてしまいがちで、その後のエフェクトチェーンで雑に音量を上げる等で解決してしまう場合があります。

そんな場合の狭い範囲での対応手法としてこの手法があります。

チャンネルLRのうち片方を位相反転させることで真ん中で鳴る音を打ち消すことが出来ます。

REAPERの場合、トラックに JS: Stereo Channel Volume/Pan/Polarity Control を刺し、LかRチャンネルのどちらかを Invert にすることで達成できます。

音としては次のようになります。

f:id:naari_3:20211216035916p:plain
真ん中の成分が全くない図

音MAD界隈に近い例としては2号兄貴の柴又ボッサのベースが該当しそうです。

www.nicovideo.jp

特徴として、わかりやすく左右に分かれる音像と、他種類の(例えばコーラス等)のようなぼやけたステレオ化と違う聞こえ方をしてくれます。とてもお手軽なので是非。

Convolution ReverbとIRの話

Convolution Reverbというリバーブのためのエフェクトが存在します。こちらは通常のリバーブとは違い、 Impulse Response というデータを使用して残響を作成します。

このデータは単一の音に対してどのように変化が現れるか?というのを記録したファイル(基本はwavの音源)になっており、狙った音に対してその残響と同じような結果を作成することが出来ます。

つまり、本物にとても近い残響を得ることが出来るのです!

例えばPS1のリバーブチップから得られたIRを使用することで、

shirobon.bandcamp.com (こちらの1~4トラック、末尾に IR とあるものが該当)

さながらPS1実機のようなリバーブを掛けることが出来ます。

性質上、細かな調整は出来ないことが多いのですが、場合によっては通常のリバーブのパラメータをこねくりまわすより手軽に理想的なリバーブを得ることが出来るかもしれません。

さて、REAPERにはReaVerbというとても普通のリバーブのような名前のエフェクトがあるのですが、実はこれ自体がConvolution Reverbなのです!

使い方もシンプルで、トラックにReaVerbを挿入したあと Impluse response generation の欄に好きなIRのwavファイルをドラッグ&ドロップすることで利用可能です。

色々な音をIRとして使ってみる

また、IRは基本的にwavであるという特性を活かし、任意の音をIRとして利用する例があります。

例えば次のようなコードスタブをIRとして使用すると、まるでボコーダーを通したような音になります。

ホワイトノイズだと、とても細かい単位で声が繰り返され、それ自体がノイズのような音になります。

バイオリンのような長いストリングだと、ストリングの音に多少引きずられながら声が広く響きます。

クラップだと元々の形がIRと似ているだけあり、使いやすそうな残響感を与えてくれます。

ものによっては小回りが効かせにくい場合もありますが、ひとつの特徴的な音を用意したい場合に有用かもしれません。

それ以外のエフェクトについて自分で試すときに心がけると良さそうなこと

新しく手に入れたエフェクトについて、一度自分で試してどのような効果を持つか体験しておくと候補として捉えやすいと思います。

その際、純粋に素材にエフェクトを掛けて耳で変化を確認する以外にも、平坦なホワイトノイズに対してエフェクトを掛け、スペクトラムアナライザーを見ることでどのような変化があるのかを視覚的に確認することが出来ます。

新しいエフェクトを導入した際、変化が全くわからない時 や 何か変わっているのはわかるが言語化しにくい といった場合に有効な手段です。

注意するべき点として、もし対象のエフェクトが基音や倍音に対して明示的に機能を掛けるような場合、ノイズだと基音がわかりにくくなってしまうのでサイン波やノコギリ波が良いと思います。

やってみる

今回はREAPERで以下を準備してみます。

  • ホワイトノイズ: JS: White Noise Generator
  • 確認対象のエフェクト: Sondtoys Radiator
    • f:id:naari_3:20211216010908p:plain
      Radiator
    • 掛けると音にチューブ的な厚みを得られる
    • Altec 1567Aという真空管アンプのシミュレーターとして位置づけられているらしい
    • 確認対象のパラメータ: MIC/LINE MICとLINEの違いを確認する
  • スペクトラムアナライザー: SPAN

ちなみに音で聞くとこんな感じですが、あまり違いが分かりませんでした(;_;)

まずはホワイトノイズ単体が鳴っている時のスペクトラムアナライザーを見てみます。具体的にはエフェクトのDry/Wetノブを0%にしています。

f:id:naari_3:20211216005421p:plain
見事な平坦

次に、MIC/LINEスイッチがMICになっていることを確認し、Dry/Wetノブを100%に近づけていきます。

f:id:naari_3:20211216011931g:plain
MICでDryからWetに

最後に、MIC/LINEスイッチがLINEになっている状態で同じことをもう一度試してみます。

f:id:naari_3:20211216011517g:plain
DryからWetに

この結果から分かりそうなこととして以下が挙げられます。

  • MIC/LINE両方で15Kあたりからローパスが掛けられている
  • MIC/LINE両方で100hz以下が持ち上げられている?
  • MICの場合は100hz ~ 200hzあたりが抑えられる
  • LINEの場合は15K以降のローパスにレゾナンスが発生する

今回の場合、耳で聞いた時の変化としてLINE入力のほうが高音がうるさいことだけ分かっていたのですが、もう少し詳細に変化を知れるようになりました。

ドキュメントも読んでみる(蛇足)

今回は時間があったので、実際にドキュメントでMIC/LINEの違いを確認してみます。

曰く、模造元のAltec 1567Aはインピーダンスに依存してレスポンスが大きく異なるようで、マイクとラインそれぞれでよく使われているインピーダンス(150Ωと600Ω)を模したモードだということらしいです。

f:id:naari_3:20211216013019p:plain
Mic/Line Frequency Response*9

今回はドキュメントまで確認してみましたが、ドキュメントというのは常に読みにくく、あまり手が出しやすいものではない気がしています。今回提示した確認方法はそういった場合に良い塩梅の確認方法として役立つのではないでしょうか。

WAVESの高いバンドルを積極的に買う理由はあんまりない気がしている事とその理由

この項目の導入はあえて割愛します!

WAVESプラグインはそもそも機能自体が飛び抜けているようなものではありません。

それぞれのエフェクトはシンプルでわかりやすい機能と名前を有していることが特徴です。それにより、様々なスタジオにも導入されているそうです。

逆に言えば良さはそれだけで、機能自体が飛び抜けているわけでもなく、新しさがあるわけでもありません。

そのため、一番最初の駆け出しで何を買えばよいか分からない!という場合に購入するのが良いのではないかと思います。それ以外の場合はあまりおすすめ出来ません。

また、最近のVSTWAVESプラグインのような最低限の機能に加え、各社各プラグインごとに強い特色が出ていることが多いです。選ぶのであればそのようなものが良いでしょう。

いくつかおすすめを紹介します。

Melda Production MFreeFXBundle

www.meldaproduction.com

無料のバンドルなのですが、最初に必要そうな機能はおおよそ入っている上、特徴的な音作りのためにも使える素晴らしいバンドルです。

個人的には MSaturatorMWaveShaperMWaveFolderMRecorder をよく使っています。

注意点として、インストーラー経由で各プラグインをインストールする際に無料でない範囲のプラグインもインストール出来ます。こちらはデモバージョンとしてDAW上で使用可能なのですが、制約として一定時間ごとにホワイトノイズの音だけを流すようになります。知らずにMReverbなどを使用していると、「何故か知らないがホワイトノイズだけの音が聞こえる」といった事になりかねないので注意しましょう。

また、GUIに少しだけ癖があるので、その部分は慣れが必要かもしれません。

KiloHearts Toolbox

kilohearts.com

KiloHearts社のプラグインバンドルです。無料のものもありますが、有料のものが望ましそうです。セール時をうまく狙って購入してみてください。

GUIがとてもシンプルでわかりやすく、視認性もかなり良いです。また、KiloHeartsのプラグインをさらに連携させるためのプラグインが存在し、こちらを使うことで手軽に帯域毎のエフェクト分離などが行えます。

Soundtoys

www.soundtoys.com

Soundtoys社のプラグインバンドルです。

それ自体が古いハードウェアのシミュレーション+αであることが多く、結果的にアナログ感のある色付けになるようなプラグインが多いです。

アナログ感というのがとても良く作用するのか、掛けるだけでそのまま音の分厚さに繋がることも多く、個人的に大変重宝しています。

ReaPack JSFXたち

reapack.com

ReaPackとは、大まかに言ってしまえばエフェクトやスクリプトの集合である、リポジトリを一元管理するためのいわゆるパッケージマネージャーです。

世界中に公開されているリポジトリをインポートするだけで大量のエフェクトやスクリプトをインストールできます。欲しい機能の名前が最初から分かっているのであれば、もしかしたら検索するだけでそれ相当のJSFXが見つかるかもしれません!!!

中にはとても優秀で、他社で製品として出されているプラグインと同等の機能を持つものも存在します。かつ、基本的にほとんどが無料なので、積極的に導入するのが良さそうです。本当に凄いです。

難点としては、性質上どうしてもVSTよりも重くなってしまう傾向にあるため、同一プロジェクト内で大量に使う場合はマシンリソースの消費の面で厳しくなってしまうかもしれないという点です。しかし、デメリットを上回るメリットはあると思うので、まだ導入されていない方がいれば導入してみるのもアリかもしれません。無料です!

さいごに

僕個人の音MADの楽しみ方のひとつに「ノリの良さ」というものがあります。ノリの良さを増幅させてくれる要因の一つとして「より良いMIX」があると思っています。とはいえ、コンテキストがその大部分を占める音MADにとって、今回挙げた諸々の話は本質とは逸れた部分の話だと思っています。

なので、もし音MADを作成する際に余力があったのなら、その時は是非ともこの記事のような部分にも何かを注ぎ込んで頂けるととても嬉しいです。

以上です。よろしくお願い致します。

ふろく

元々アドベントカレンダーに向けて書こうとしてたストックを全部書いたので、それぞれ独立させて別の記事にしました。よければ合わせて読んでみてください。

naari.hatenablog.com

naari.hatenablog.com

*1:こちらも最近はあまり手がつけられていません(;_;)

*2:Ozone等のオールインワン系のエフェクターは除きます。あれに至っては内部に独自のエフェクトチェーンが実装されていますし…

*3:iZotope Trash2

*4:Khz Reverb

*5:簡単に言えばダイナミックEQ

*6:パーカスの音作りは難しい

*7:REAPERの場合、ミュートにしたトラックからサイドチェインで使うための入力を受け取るには Pre-Fader で送信すると良さそうです

*8:https://www.reddit.com/r/edmproduction/comments/3gc0tf/i_just_found_this_awesome_frequency_spectrum/

*9:引用元: ドキュメント p. 6

Ableton Liveを使っていて分かった、音MAD制作においてREAPERを使うことのメリット

概要

最近の自分は音MADを含め音源制作にAbleton LiveというDAWを使っているのですが、音MADを作る点ではREAPERを使用したほうが良いのではないか?と常々思っているので、その理由を複数連ねてみます。

あくまで自分の考える音MAD制作過程に軸を置いた時の個人的な考えであり、それがDAWの絶対的な優劣ではないということを念頭に置いてから見ていただきたいです 🙏

この記事は音MAD Advent Calendar 2021自分が書いた記事の付録記事です。

naari.hatenablog.com

ショートカットキーによるピッチ変更

個人的にはこの存在が音MADの制作工程に最も大きく作用しているのではないかと思っています。もはや音MADの基本アプローチと言っても過言ではなさそう。

普段からREAPERを使っている方々はあまり意識したこと無いかもしれませんが、これが音MADの出来具合いにも関わってくるものだと思っています。

例えばREAPERで音合わせをする場合、アプローチとしては例として以下のようなものが考えられます。

  • ショートカットキーによるオーディオアイテムのピッチ変更
  • サンプラーとMIDIアイテムによるピッチ変更

単純に音合わせに焦点を合わせた場合、後者の方が大変にお手軽ではあると思うのですが、手軽さ故に細かい部分の対応がなおざりになってしまう場合があると思っています。例えば主旋律に対して素材を当てはめている時、以下のような…

  • ここの部分だけもう少し素材の頭出しを変えたいが、わざわざサンプラーの画面を開くのが面倒
  • 面倒臭いので同じ音ばかり使ってしまう
  • 結果として単調な結果になってしまう!!!

対比として、直接オーディオアイテムのピッチを変える場合、アイテム単体のスタート位置の変更は造作もないことだと思います。

ここで、ピッチ変更の手段としてのショートカットキーが存在しないDAW(ここではAbleton Live)の場合を考えると、おおよそ以下のようになるのではないでしょうか。

  • オーディオアイテムのプロパティからのピッチ変更
  • サンプラーとMIDIアイテムの兼用によるピッチ変更

前者の場合、ひとつのサンプルの音程を変えるために一度アイテムの画面を開き、トランスポーズを+1する必要があります。これは純粋に手間な行為なので、手数の問題でサンプラーを使わざるを得ないのではないかと思っています。すると、前述したオーディオアイテム単体の凝り方が出来なくなってしまうのではないか?と考えています。

後者の場合については先程色々書いた通りです。

流石に極端な考え方ではあり、いくらでも回避策が考えられるかと思います。例えば、

  • サンプラーに対してエンベロープを設定する
  • サンプラーを複数種類用意する
  • 頑張ってオーディオアイテムを並べる

等々……

ですが、REAPERの場合は基本とも言える操作の副作用としてカスタマイズ性が高まっていることが重要であると考えています。

この図らずともバランスが取れていると言える状況で、素材の複製(Ctrl + D) → ピッチを数個ずらす(Shift + 9 * N回) の手順が確立しているのはとても大きいはずです。

オーディオアイテムに限らず、MIDIアイテムに対しても一括でピッチ変更が適用されるので、プロジェクト全体の転調も思いのままなのが本当に羨ましく思います。

豊富なJSFX/ReaScript

REAPERにはJSFXやReaScriptなどの独自なエフェクトが存在します。REAPERは機能の一部のAPIが外から叩けるようになっているので、これを利用することでエフェクトが実装出来る、という仕組みです。

幸いなことに、REAPERのコミュニティはそれなりに大きく、ある程度までのエフェクトであれば既に実装されています。また大変嬉しいことに、基本的に無料なので大量にインストールしておくことも可能で、それだけで引き出しが増えている!と捉えても良さそうです。

豊富かつカスタマイズ可能なアクション / ショートカット

先程力説したピッチ変更はREAPER上ではアクションという概念で、実行することで何らかの操作が行われるというものなのですが、REAPERにはこの類のアクションが大量に存在し、かつそれぞれ好きなショートカットを割り当てることが出来ます。

例えばピッチを1オクターブを変えるアクションや、グリッド線の幅を変えるアクションが存在します。

カスタマイズという点ではこれだけでもかなり豊富なのですが、自分の手でスクリプトを作成することで、更に便利に動かすことも出来ます。

前述の通り、REAPERは機能の一部をAPIとして提供しているのですが、これはオーディオエフェクト関連だけではなく、REAPERの設定値やタイムライン上のアイテムを自由に触るなど、割と色々な事が出来てしまいます。

これらの良い使用例としてMIDIアイテムからオーディオアイテムを自動生成するという時短ワザが存在するので、確かめてみてください。

また自分の方でもスクリプトとアクションを用いたグリッド線の楽な変更方法について記事を公開しています。もしよければご覧下さい。

naari.hatenablog.com

豊富なReaPackリポジトリ

これらのJSFXやアクションについて、ReaPackというインストールの支援ツールが存在します。

JSFXやアクションがリポジトリという単位に大量にまとめられており、ReaPackはそのリポジトリを一元管理するために用意されています。

つまり、ReaPack上で世界中にある様々なリポジトリをインポートすることで大量のJSFXやアクションを一気に集めることが出来ます。先程述べたように、基本的にすべて無料なはずなのでどんどんインストールすると良いと思います。

ffmpegを備えている

REAPERではDAWに直接動画ファイルを並べ、レンダリングをすることも出来ます。これは音声に動画を紐付けることの多い音MADではわかりやすいメリットになるでしょう。

実はAbleton Liveでも動画の出力はできるのですが、REAPERはそれに加えて動画の入出力にffmpegを使用する設定が存在します。

ffmpegは各種メディアファイルのフォーマットを統合的に扱うことが出来るツールで、REAPERはこれを利用しているためにおおよその場合に問題なく動画の読み書きが出来るというわけです。

Ableton Liveはそうではないので、動画の出力に問題がある場合が多いです。REAPERが大変に羨ましい。

界隈にREAPERを使っている人が多い

音MAD作者は十中八九REAPERを使っており、事実上デファクトスタンダードとなっていると思います。この状況は同じくREAPERを使っている方には大変望ましく、REAPER自体の操作方法やノウハウについて集合知として溜めやすい状況にあると思います。

実際、Twitterのタイムライン上ではREAPERについての質問や、それに対する回答のリプライを見ることが昔から多々あり、これはとても良い流れだと感じています。

安い

最高です。個人利用であれば $60、 そうでなくても $225 で、どちらも安いです。

www.reaper.fm

おわりに

以上、自分がふんわりと考えていた音MAD制作にREAPERを使ったほうが良いと思っている理由でした。

音MAD制作以外でも、割と「あっ、この機能羨ましいな」と思うことがあり、実際にいくつかの作業においてAbleton LiveとREAPERを往復することもあります。

自分はメインの環境をAbleton Liveに置いているのですが、これらはあくまでも頭の中に浮かんでいるアイデアを実現させるためのツールなので、適材適所でいいかんじに利用していければよいかなと思っています。

REAPERのグリッド線をショートカットキーで変更できるようにする

概要

REAPER のグリッド線の幅は GUI 左上ツールバーのマグネットマークを右クリック、または Alt+L を押すことで開かれる「スナップ/グリッド設定」で変更が出来るのですが、変更の度にわざわざこの設定を開くのはなかなか骨が折れる手順なのではないかと思っています。

自分は主に Ableton Live を使用して DTM の作業を行っているのですが、こちらはショートカットキーを押すことでグリッド幅を広げることが出来ます。

今回はこれと似たような設定を REAPER でも実現できるように設定してみようと思います。

この記事は音MAD Advent Calendar 2021自分が書いた記事の付録記事です。

今回のゴール

もう少し具体的には以下の 3 つをショートカットキーによって実現できるように設定したいと思います。

  • グリッド幅を 1/2 にし、狭める
  • グリッド幅を 2 倍にし、広げる
  • 三連符幅の切り替えを行う

グリッド幅を 1/2 にし、狭める

こんな感じ

f:id:naari_3:20211214035921g:plain
狭くなっていく

グリッド幅を 2 倍にし、広げる

こんな感じ

f:id:naari_3:20211214035940g:plain
広くなっていく

三連符幅の切り替えを行う

こんな感じ

f:id:naari_3:20211214035953g:plain
三連符幅との切り替えが出来る

手順

途中で ReaPack を使用する手順と、そうでない手順に分かれるので、どちらか該当する方だけ読んでください。

1. 既存のアクションをショートカットキーに割り当てる

まず、?キーを押すか、 アクション > アクションリストを開く からアクションリストを開きます。

次に、絞込 に Grid: Adjust と入力し、以下の 2 つのアクションを見つけます。

  • Grid: Adjust by 1/2
    • グリッド幅を 1/2 にする
  • Grid: Adjust by 2
    • グリッド幅を 2 倍にする

それぞれのアクションをシングルクリックした後に左下の「選択アクションのショートカット」の追加ボタンから好きなショートカットを割り当てます。

自分の場合は Ableton Live と似た操作感を欲していたため、以下のように割り当てました。

  • Grid: Adjust by 1/2 → Ctrl + Shift + 1
  • Grid: Adjust by 2 → Ctrl + Shift + 2

この時点で、ショートカットキーに応じてグリッド幅が伸縮するようになっていると思います。

2. 三連符幅の切り替えのために独自のスクリプトを導入する

ここまではデフォルトで用意されているアクションを使用することで対応できましたが、三連符幅の切り替えは該当しそうなアクションがなかったので、今回こちらで自作しました。

2-1. ReaPack を導入している場合

もし ReaPack を導入していない場合は 2-2 まで読み飛ばすか、以下の記事を参考に ReaPack を導入してください。個人的には今回を機会に導入してしまうことをおすすめします。

peloreaper.blog.jp

拡張 > ReaPack > Import Repositories で出てくるウィンドウに以下のリポジトリを追加し、OK をクリックします。

https://github.com/naari3/ReaScripts/raw/master/index.xml

拡張 > ReaPack > Browse Packages で出てくるウィンドウの Filter: に naari3 と入力し、出てきた項目を右クリック → Install し、最後に右下の Apply をクリックします。

2-2. していない場合

?キーを押すか、 アクション > アクションリストを開く からアクションリストを開きます。

新規アクションボタンをクリックし、新規 ReaScript をクリックします。

出てきたファイル保存のウィンドウにて、ファイル名を Toggle Grid Triplet とし、保存します*1

更に出てきたスクリプト編集ウィンドウに以下のリンク先のスクリプトをコピペします。

https://github.com/naari3/ReaScripts/raw/master/Grid/Toggle%20Grid%20Triplet.lua

その後、Ctrl+S で保存し、スクリプト編集ウィンドウを閉じておきます。

3. 三連符幅切り替えのスクリプトにショートカットキーを割り当てる

ほとんど手順 1 と同じです。

まず、?キーを押すか、 アクション > アクションリストを開く からアクションリストを開きます。

次に、絞込 に Toggle Grid Triplet と入力し、以下の 2 つのアクションを見つけます。

  • Script: Toggle Grid Triplet.lua

このアクションをシングルクリックした後に左下の「選択アクションのショートカット」の追加ボタンから好きなショートカットを割り当てます。

こちらも同じく Ableton Live と似た操作感を欲していたため、以下のように割り当てました。

  • Script: Toggle Grid Triplet.lua → Ctrl + Shift + 3

これで、ショートカットキーに応じてグリッド幅が三連符幅になったりそうではなくなったりするようになったかと思います。

おわりに

大昔によく REAPER を使っていた時期は、あらかじめ 1/32 や 1/64 など、ある程度狭いグリッド幅にして最小間隔をすこし大きくすることで対応していました。

ですが、やはりこのような表示側の事前設定でどうにかするにはちょっと限界があります。今回は REAPER の豊富なカスタマイズ性を持ってしてよしなな設定を手に入れることができました。さすが REAPER。

余談 ReaPack のリポジトリについて

今回のスクリプトを公開するために、初めて ReaPack のリポジトリを作成してみました。

github.com

Reaper のスクリプトや JSFX は基本的にテキストファイルで管理されているため、github のような公開体制との相性がかなり良く、公開までの手順を組み立てるのも普通のリポジトリ用のデプロイパイプラインを組み立てるようでした。

リポジトリ自体の参考実装として以下を用意し、これと全く同じ構成になっています。

github.com

概要を少しだけ説明すると、 reapack-index という cli を使用し、ディレクトリ構成から自動で index.xml を作成する github workflows を用意しています。

これによって、新たなスクリプトを用意する時は新しいディレクトリを作り、そこに .lua ファイルを用意、あとは commit して push するだけで公開されるという素晴らしい開発体験を得ることが出来ます。本当に素晴らしい。

ひとつの DAW に対して、このようにパッケージ管理の仕組みや、各種スクリプトのためのエコシステムまでもが備わっている点が最近のプログラミング言語コミュニティの方向性と似たものを感じました。もうすこしふんわり言うとハッカーコミュニティのようなものですね。

REAPER の方向性からコミュニティまでもが一貫してハッカー的思想に基づいているような気がして、個人的にそういう部分が結構好きです。

*1:もしファイル名に半角スペースが入るのが気に入らない場合は、好きな名前に変えてあげてください。この後の手順ではそのファイル名に置き換えて読んでください。