tron-Factory業務日誌

相変わらず日誌じゃない。

【MDrummer】リズムパターンをMIDIキーボードでうまく鳴らす

MDrummerのリズムパターンはノートナンバー0を起点に並べられている。そのため、ノートナンバー36から96をデフォルトの範囲*1としている61鍵のMIDIキーボードでは、トランスポーズを使わない限りLONG BREAKとOUTROしか鳴らすことができない。

デフォルト設定時

キーボードごとトランスポーズしてしまうと今度は他のパートの音を確かめたいときに困るし、いちいち切り替えるのは面倒すぎるので、なんとかMDrummer側の設定でMIDIキーボードから鳴らせる範囲にリズムパターンを動かせないかと思った。

結論、できる。

Settings内のMIDI SETTINGSにあるMIDI transposeを設定することで、MDrummer限定でトランスポーズをかけられるので、これでMIDIキーボードの鍵盤にリズムパターンが収まるように変更すればよい。

61鍵の場合、-36することで一番左の鍵盤がノートナンバー0相当になり、INTROの一番始めのパターンを鳴らせるようになる。

このとき、ちょうど全てのパターンが鍵盤内に収まる*2

MIDI transpose設定時

ベロシティによるパターンの切り替えもあるので狙ったパターンを自在にというのはまだ難しいが、ひとまず全てのパターンにMIDIキーボードからアクセスできるので、これだけでもかなり便利なはず。ただ、MIDIの10chを使ってDAWシーケンサーでパターンを組む場合にも(おそらく)トランスポーズは適用されるので、その点は注意。具体的にはこれがズレる。

gyazo.com

MIDI OUTを10chにすると自動でこれが出てくるので、気にせずに使うしかないか。

*1:少なくとも手元のものはそう

*2:厳密には一番右の鍵盤だけ余る

FL Studio覚書:Make UniqueしたらTime Signatureが残る事象に対処する

FL StudioでPatternをSliceしたあとMake uniqueした際、Time Signatureが元のパターンに設定されていると、そのTime Signatureがそのまま保存された状態でノートだけ前に詰められてしまう。

と、言葉で説明してもわかりにくいので実例を示すと、

gyazo.com

こういうパターンがあるときに、3小節目だけMake uniqueで抜き出すと、

gyazo.com

こういうことになる。

これの対処法。

まず、パターンをプレイリストに配置し、メニューの「Use current time signature from」内にある「Pattern to playlist」を使用する。

gyazo.com

これで、プレイリストにパターンのTime Signatureが転写される。

この状態でSliceとMake uniqueを行い、抜き出されたパターンに対して今度は「Use current time signature from」内にある「Playlist to pattern」を使用する。

gyazo.com

これでプレイリストのパターンが配置されている部分に設定されたTime Signatureがパターン側に転写され、(ノートが存在している部分については)正しいTime Signatureが設定される。

gyazo.com

しかし、後ろにはノートがなくTime Signatureだけ設定されている部分がまだ残っている。

そこで、実際にノートがある部分だけを選択し、ピアノロールメニューの「Edit」内にある「Trim selection」を使用する。

gyazo.com

gyazo.com

これで後ろの、ノートはないのにTime Signatureだけ残っている部分を(ほとんど)消せる*1

gyazo.com

今回の例ではさほど必要性はないが、もっと長いパターンから切り出す場合にはこれをしないとパターンが無意味に長くなってやりづらくなる。

以上。楽曲制作よりもむしろ既存のMidiを読み込んで分析するようなときに使えるやり方だと思う。

*1:なお、後ろに一つだけ残るTime Signatureがどのように決定されているかはわからない。ここでは5/4になっているが、このProjectのTime Signatureは4/4である

引っ越してきました

元々のブログはtron_kmcってアカウントでやってたけど、別にKMC部員としての内容ばっかり書いてるわけじゃないし、いずれは現役KMC部員でもなくなるわけだしなあ……とかねてより思っていたので、こっちのアカウントに移動しました。

元のブログもとりあえず残しますが、更新はこっちだけです。

「超獣王来烈伝」覚書

書いてたら結構な文字数になったし、覚書程度に上げておく。当たってたら「俺には先見の明があった!!」って主張できるし。

 

(禁断文字読めないので、DMWikiが出典)

DMSP-02 - デュエル・マスターズ Wiki

禁断文字のやつは(他の人もそう見てるようだけど)全く別のクリーチャーのこと書いてたらディスペクターで、それ自体のこと書いてたらレクスターズでKGMとして登場するんだと思ってる。
根拠は、
・アルファディオスのとこにどう見てもバロムのことが書いてあって、これが聖魔連結王と合致する
・ドキンダムのとこに書いてあるのは明らかにミラダンテだけど、これは商標登録されてる第2弾のタイトルと合致する(個人的にはVV-8との連結かと思ってたけど……)
というところ。具体的な連結先について:
ガイアール→よくわからん。時間を操るとはなんだろうか。エクストラターンが「時間を止める」とか言われるけど、エクストラターン得られる「悪魔」っぽいのってエンド・ジャオウガしかいないんだが。ジャオウガがガイアールの力を取り込むとか……?夢幻の無も実質エクストラターンだけど、あれに時間操ってる感はないし、ゲンムエンペラーも悪魔って感じではないしなあ。あと、呪文封じも時間停止って言われることあるけど、あれはミラダンテ周りだけっぽいし、「悪魔」とは絡まなさそう。
カツキング→ギュウジン丸(exiledとか言ってちょっとアウトレイジに寄せてきてるのがちょっと腹立たしい)
ガイギンガ→起源神(名前どうなるんだ)(神帝も6体いるけど同時にリンク出来るのは4体までだしそもそもこの弾にいるから違う)
アルファディオス→ドルバロム(既出)
HDM→よくわからんけど、HDMのことでないのは確か。「青いバラ」がルシファーの象徴的なアイテムということ、王になるなら相応の格はありそうなこと、正義とか言ってること、《真・天命王 ネバーエンド》は既に連結先決まってることを考えるとヘブンズロージアあたりかなあ。ただ格ちょっと足りない感じはするし、ネバーエンドがしれっと2回連結されたり、別のクリーチャーですが何か?みたいな感じでネバーラストが来たりするかもしれん。
ロマノフ→シャングリラ
ライオネル→シーザーかな。他にも銃はあるけど、次元を突き抜けてそうなのはこれぐらいかと。
ドキンダム→ミラダンテ(上述)
神帝のが一番わからん。神帝自身のことなのか、他にいるのか……他にいるとしてもいっぱいいそう。「誇り高き」「真の」あたりから考えるといいのかな。
ザ=デッドマンがやたら「邪悪」って言われてるけど、あいつは果たして誇り高いのだろうか……?
最初に思いついたのはブラックモナークなんだけどね。覇王だし。

それ以外:

ボルホワもワンチャン別の指してる説なくはないけど、多分ボルホワ自身でしょ。「反撃を許さない」を「攻撃されない」と解釈もできるけど、シールド焼却でトリガー封じと見るほうが妥当だろうし。

ボルシャックについてはモモキングNEXのことを指していて、ボルシャックの始祖です、ってことでこういうふうに書いてあるんじゃなかろうか。

 

しかし、これだとディスペクターばっかりになってしまうな。既にレクスターズ2体出てるし、神帝がレクスターズ側だとしてもディスペクター3体の弾ができてしまう。実はレクスターズ側のクリーチャーのことを指していて、そのクリーチャーに力を貸す形で出てくるとかももしかしたらありえるのかもしれん。それともレクスターズはモモキング以外KGMにはならないパターンも……?

マルコフ連鎖でデュエマの能力テキストを作る

この記事は KMC Advent Calendar 2020 第22日目の記事です。昨日の記事はAotsukiさんの「Zoom授業録画自動化した話」ですが、まだ書かれていません。

 

皆さんごきげんよう。デュエプレの無料10連で5枚目のガルバロスが出ました、tronです。これで5弾のパックから出たSRのうち62.5%がガルバロスなんですが、何かデュエプレに嫌われるようなことでもしましたか?

https://i.gyazo.com/aca1554c112496403b6b802228d4a8d8.png

持ってる5弾SR。デスフェニはイベント報酬でスターマンのうち1枚は生成。

さて、今回はデュエマはデュエマでも紙の方です。

やったこと

マルコフ連鎖を使ってデュエマの能力テキストを作った。

本当はカードの全情報(コストとか種族とか……)について、それぞれ関連付けて生成したりしたかったけど、初心者がいきなりやるのは難しそうなので……

使ったもの

プログラム

Learn from aozora bunko and output markov chain · GitHub

[Python] MeCab とマルコフ連鎖ライブラリ markovify を使い、文章を学習して自動生成する方法 - Qiita

このへんを参考にして書きました。気をつけた点として、

があります。これは元カード1枚のテキストごとに1文として認識させるため。そうすることで生成したものも複数の能力を持った、「1枚のカードのテキスト」になるというのを狙ってます。

学習データ

デュエマ(紙版)で殿堂入りしているカードの能力テキスト。出典はデュエマWiki

これを1枚につき1行に収めて、コンマで区切ってあります。

ドラグハートやツインパクトなどの複数のカードが1枚になっているタイプのものは、それぞれ分けました。

結果

state_sizeごとに結果をいくらか貼ってみます。

state_size=2
  • 自分のターン中に他の「S・トリガー,自分は、コマンド、イニシャルズ、あるいは名前に《禁断》とあるクリーチャーであれば、自分の墓地に置くかわりに持ち主の墓地に置く。その後、山札をシャッフルする。,
  • シンパシー:自分のクリーチャーをバトルゾーンを離れる時、かわりにこのクリーチャーがバトルゾーンに出た時、そのクリーチャーは相手のマナゾーンから召喚してもよい。,
  • このターン、自分の墓地からマナゾーンに火のコスト3のクリーチャーとして合体させる。
  • このクリーチャーが4枚を、マナゾーンに置く。,
  • S・トリガー,自分の墓地から手札に加える。このターンのはじめに、バトルゾーンを離れるかわりに自分のクリーチャーを2体まで破壊する。,
state_size=3
  • S・トリガー,自分のクリーチャー1体の上に置く。その後、相手はカードを1枚、自分の墓地からコストを支払わずにすぐ唱えてもよい。,W・ブレイカー,このクリーチャーがバトルゾーンを離れる時、自分の手札をすべて捨てさせる。,
  • W・ブレイカー,自分の墓地からバトルゾーンに出た時、このD2フィールドを自分のマナゾーンから唱えてもよい。,
  • パワー3000以上のクリーチャーは攻撃できない。,禁断機動:このクリーチャーがバトルゾーンにある自分のクリーチャーが攻撃する時、相手のシールドを1枚、自分のマナゾーンからバトルゾーンにある相手のクリーチャーを1体、自分の墓地から手札に戻す。,
  • このクリーチャーがバトルゾーンにあるクリーチャーを1体、自分の墓地からバトルゾーンに出した時、自分のクリーチャー1体の上に置く。,このクリーチャーがバトルゾーンに出た時、自分の山札の一番下に置く。,
  • ニンジャ・ストライク4,このクリーチャーがバトルゾーンを離れない。,このカードがバトルゾーンに出してもよい。,
state_size=4
  • このウエポンをバトルゾーンに出した時、自分のマナゾーンにあるカードをすべてアンタップする。,
  • この呪文を自分のマナゾーンから墓地に置く。,
  • S・トリガー,クリーチャーを1体、自分のマナゾーンからバトルゾーンに出す。それ以外なら山札の一番下に置いてもよい。,
  • G・ゼロ-自分の墓地に置かれる。,
  • 自分のシールドをひとつ相手に選ばせ、見る。その中から多色クリーチャーを1体、破壊する。,
state_size=5
  • S・トリガー,自分のクリーチャーすべてに「スピードアタッカー」を得、種族にガイアール・コマンド・ドラゴンを追加する。,
  • カードを2枚まで、自分の墓地からコストを支払わずに召喚してもよい。,
  • コスト7以下の呪文を1枚、自分の手札に戻す。,
  • S・トリガー,クリーチャーを1体選び、相手に見せてから自分の手札に戻してもよい。,
  • この呪文を自分のマナゾーンから、コストを支払わずに唱えてもよい。,
state_size=6
  • S・トリガー,自分のクリーチャーを1体破壊してもよい。そうしたら、相手のクリーチャーをすべてタップする。,
  • バトルゾーンにある自分の闇のクリーチャー1体の上に置く。,W・ブレイカー,
  • このクリーチャーをバトルゾーンに出した時、そのターン、自分のクリーチャーすべてに「スピードアタッカー」を与える。,
  • このクリーチャーがバトルゾーンに出た時、自分の手札を1枚山札の一番下に戻す。,
  • コスト7以下の呪文を1枚、自分の墓地から手札に戻してもよい。,
state_size=7
  • S・トリガー,クリーチャーを1体選び、持ち主の手札に戻してもよい。,バトルゾーンにあるクリーチャーを1体選び、持ち主の手札に戻す。,
  • このウエポンをバトルゾーンに出した時、クリーチャーを1体、自分の墓地からバトルゾーンに出す。,
  • このウエポンをバトルゾーンに出した時、クリーチャーを1体、自分の墓地から手札に戻してもよい。,
  • S・トリガー,クリーチャーを1体選び、持ち主の手札に戻してもよい。,W・ブレイカー,
  • このウエポンをバトルゾーンに出した時、クリーチャーを1体、自分の墓地からバトルゾーンに出す。,

どうでしょうか。最初のうちはかなり怪しいテキストですが、サイズを上げるごとに安定してきます。一番安定してるのは6ですね。7は完全に固定されてしまって、面白さが皆無になっています。

 

傑作選

最後に、できたテキストの中から良かったものをいくつか紹介。なお、この先のテキストは適宜見やすく修正しています。

まずはstate_size=6から。

  • 自分のターンのはじめに、相手はカードを1枚、自分自身のマナゾーンから選び、持ち主の手札に戻してもよい。
  • W・ブレイカ

よっぽどコスト低くないと使いたくないな。

  • 自分のマナゾーンに火のカードがあれば、カードを1枚引いて、自分の手札を1枚、自分のマナゾーンに置く。

火に反応してマナブーストする効果、珍しくない?

ちょっとおとなしい気がするので、ここからはstate_size=4。

  • カードの名前をひとつ選んで言う。その後、自分の手札をすべて捨てる。

言うだけ。何も嬉しくない……

  • W・ブレイカ
  • このクリーチャーがバトルゾーンを離れる時、自分の山札の上から3枚をすべてのプレイヤーに見せてもよい。

見せるだけ。そんなに辛くはないけど嬉しくもない。

  • 相手のクリーチャーを2体まで破壊する。
  • このクリーチャーがバトルゾーンを離れる時、バトルゾーンを離れるかわりにとどまる。
  • W・ブレイカ
  • このクリーチャーが攻撃する時、自然のクリーチャーをすべて、自分の墓地からマナゾーンに置く。

最初のはcipかな?ちぐはぐ感はあるけどこれまでのと比べると悪くない。

  • 自分の山札の上から5枚を、マナゾーンに置く。その後、クリーチャーを1体、自分の墓地からマナゾーンに置く。

6マナブースト。コストによっては強そう。

  • G・ゼロ-バトルゾーンに自分のサイバーロードがあれば、カードを1枚引く。その後、自分のマナゾーンのカードを5枚、墓地に置く。

サイバーロードと一緒に使ってはいけないカード。

state_size=4はやっぱりまだ文に怪しい部分があって、それっぽいのを探し出すのが大変でした。ただ、面白さではstate_size=6より上だと思ってます。

 

まとめ

というわけでデュエマのカードテキストでマルコフ連鎖してみました。ゆくゆくは最初に言ったような、カード全体を生成するプログラムまで進めたいですね。

 

明日はtak0kadaさんの記事です。お楽しみに。

 

 

 

 

 

Googleドライブの容量を実質無限にする方法

自炊した本をスマホタブレットでも読みたいと思いGoogle Driveに入れていたが、容量が足りない。Googleアカウントは複数持てるから使い分ければ……と思ったが、スマホGoogle Driveアプリは一度に一つのアカウントしか開けないから、今開いているのと別のドライブに入っている本を開くときにはいちいちアカウントを開いて切り替える必要があり、面倒である。しかも、PC用の同期ソフトは3アカウントまでしか同時使用できないから、PC上のファイルとドライブ上のファイルで同期されないものが出てきてしまう。

どうしたものか……と考えて、共有を利用する方法に行き当たった。

turgenev.hatenablog.com

この記事によると、

  • Google Driveではショートカット(シンボリックリンク的)なものを作成して、元ファイルと違うところに置ける
  • これは共有ファイルに対しても利用可能で、この場合容量は元ファイルがあるアカウントでのみ消費される(共有されている側は消費なし)

らしい。これを使えば、複数アカウントのドライブ上にあるファイルを一つのドライブにまとめて管理できるということで、まさしく求めていたものではないだろうか。

具体的には以下のような手順を踏む。

  1. Backup and Syncでファイルをアップロード
  2. 容量を使い切ったら接続を切る*1
  3. メインのアカウントに共有する*2
  4. 各ファイルに対して、共有したものへのショートカットを管理するフォルダに作る
  5. 新しいアカウントで同期の設定をして、1に戻る

この方法の素晴らしいところは、共有ファイルに対してショートカットを作ると、そのファイルも同期の対象になって、メインアカウントと同期しているフォルダにダウンロードされるということ。つまりPC側のファイルも一元管理できる(その代わり、元ファイルと同期で現れたファイルとで2つ同じものが存在することになるので、容量を気にするなら元ファイルはちゃんと消さないといけなかったりするが)。

多少手間はかかるが、これでいくらでもファイルを置けるようになった。

 

*1:接続を切っても「マイドライブ」「パソコン」ともにファイルは保持されるはず。ちゃんと確かめてはないが

*2:上の記事によると「同期しているフォルダそのものを共有すると同期設定が消えるからしてはいけない」らしいが、どのみち設定は消すので関係ないと思う。多分……

FL Studioでノートをきっちりとストレッチする方法

FL Studioでは、ノートを選択したら右側に出てくる矢印をドラッグすることで、そのノートをタイムストレッチすることができる。

gyazo.com

ここでストレッチとは、ノートの長さと発音タイミングを同じ倍率で動かすことを言う。具体的には、四分音符4つからなる1小節のフレーズを2倍にストレッチすると、二分音符4つからなる2小節のフレーズになる。

これは便利な機能で、Domino使ってた頃にはよく使ってたんだけど、FLのそれは普通に使おうとするとストレッチが滑らかに、具体的には0.01%単位で(実際に0.01%ずつ増減させるのは多分無理なんだけど)行われてしまって、きっちり2倍みたいなことができなかった。

どうにかならんかなと公式ドキュメントとか見たり色々試したりした結果、なんと右クリックでやると25%刻みできっちりと動かせた。

gyazo.com

数値入力でやる方法は見つからなかったから33%とかは気合でやらないといけなさそうだけど、とりあえず大分使いやすくなった。

ちなみに公式ドキュメントにはAltと右Shiftで云々と書いてあるけど、これについてはわからなかった。