以下の内容はhttps://risette14.hatenadiary.jp/より取得しました。


表紙

音ゲーを中心に気まぐれで趣味のことを書くブログ

両皆伝、残サイ(サニパまで)、桃皆伝でした。
天下一音ゲ祭グルコス部門北海道・東北ブロック優勝。
最近は音ゲーおやすみ中です。


リゼット(14新)とは?

Aerophoneのトランペット運指を考える

AE-20を買って1年ほどたまに吹いています。
できるだけ運指を覚えずシンプルにしたい、また絶対音感型なのでトランスポーズせず音と運指を1:1対応させたいと思い、昔ちょっとだけ金管を吹いたことがあるのでトランペット運指を使うことにしました。
AE-20だと運指を自分用にある程度カスタマイズできるので(AE-10以下はできない)デフォ動作と合わせてメモします。


Aerophoneの各キーは押すことでn半音上下し、その組み合わせで音高を調整します。
トランペット運指は、左手で2キー、3キーを常に押さえた状態を標準として、右手の4、5、6キーがトランペットの1~3番ピストンに対応し、それぞれ-2、-1、-3半音の計6半音下がります。
他のキーが金管では唇で制御する倍音の調整にあたり、加えてサイドキーの一部は全音上げ、半音上げでトリルに使用することができます。
キーには複数キー同時で反応するAND回路のキー、複数キーのうち片方ずつしか反応しないOR回路のキーが混在しており、使いこなすためにはある程度役割の理解が必要です。

トランスポーズしていない状態だと、何も押さなければC#5が出る

運指 キー名 回路 デフォ(±n半音 カスタマイズ
左人先 X 単体 +3
左人先 1 単体 -5
左人先 P 単体 無効
左人根 C2 単体 無効
左人根 C1 単体 無効
左中先 1 AND(2) -1 単体-2
左中根 C4 単体 無効
左薬先 2 AND(1) -1 単体-1
左小先 G# 単体 無効
左小先 B 単体 無効
左小先 C# 単体 無効
左小先 Bb 単体 -7
右人先 4 単体 -2
右人根 C3 OR(Tc,Ta) +2 無効
右人根 Tc OR(C3,Ta) +2 無効
右人根 Ta OR(C3,Tc, +2 単体-1
右中先 5 単体 -2
右中先 C5 OR(Tf) +1
右薬先 6 単体 -3
右薬先 Tf OR(C5) +1
右小先 Eb OR(C) +4
右小先 C OR(Eb) +4


左手側は常に押しっぱなしの2キーと3キーを独立した全音下げ、半音下げにすることで、2キー・3キーだけを押した状態でBbが鳴るようにし、トランスポーズしなくともBb管の感覚で右手を操作できるようになり、左手の操作で半音トリル・全音トリルが可能になります。
右手側についてはC3とTcはどうせ使わないので無効にし、Taは「右手だけで7半音下げたい」シーンで456キーの6半音にプラスワンできるよう半音下げに変更しました。左手を使わずに操作できる範囲を増やすことで脳のリソースを節約できます。
本当は昔吹いていたのがユーフォニアムなのでEbキー・Cキーが4半音上げじゃなく5半音下げだといいのですが、カスタマイズでは3半音以上の変更ができず、ユーザー運指機能も全指の組み合わせに個別音階を割り当てるもので36パターンしか登録できず、汎用性が低いので使っていません。改善を望みます。

M5StackでMIDIハーモナイザーを作る

経緯

ここ数年、定期的にバンド形式での音ゲー楽曲のコピー演奏を行っており、主にキーボードを弾いていますが、演奏の際に頭を悩ませがちなのが、打ち込み系楽曲を中心にときおり現れる、三度~六度2和音ハモりの速いフレーズの手弾きです。
音を機械的にn半音上下させるトランスポーズ機能ではキー・スケールに対して自然なハモりが得られませんが、手持ちのワークステーションシンセ(FANTOM-0やJUNO-DS)にはハーモナイザー機能がなく(むしろついてるシンセを知りたい)、1音ごとにトランスポーズした音をレイヤーする、サンプラーシーケンサーによる部分的な同期を使うなどの対策が求められますが、前者はレイヤーできるパート数の制限、後者はインテンポで進行しなければズレるためドラムに負担をかけてしまう、といった問題があります。
一方で、市販のハーモナイザー系エフェクター(手持ちはBOSS PS-6)は音の波形を処理するため、どうしてもやや(50ms程度)遅延が発生し、速いフレーズには向きません。
そこで、ワークステーションシンセ内のコントローラー部(鍵盤)からシンセサイザー部(音源)に送信されるMIDI信号に割り込んで新たな信号を付加すれば遅延なくハーモナイズできると考えました。DAWでできそうですが、鍵盤がすでに重い中でいちいちPCまで音楽スタジオに持ち込みたくないので、マイコンMIDIメッセージの勉強がてら、M5StackでMIDIハーモナイザー(あるいはインテリジェントピッチシフター)を開発することにしました。

用意したもの

シンセのMIDI OUT→M5StackのMIDI INおよびM5StackのMIDI OUT→シンセのMIDI INとなるようにMIDIケーブルを2本接続し、シンセから出力されたMIDIメッセージをM5Stackでハモり音に加工してシンセにループバックさせます。あとシンセのUSB MEMORY端子使って給電。
当初よくわからずラズパイでできるのかな…などとつぶやいていたところ、@GRNRGと@chloe_chatから大変実用的なアドバイスをいただきました。ありがとうございました。

完成形


タッチパネルによる送受信チャンネル設定、キー設定、和音1・2設定、ベロシティ比率設定、画面ロック機能を備えています。特に遅延なく、想定通りハーモナイズすることができるようになりました。

構築

環境構築

M5Stack Core2の公式サイトのドキュメントの手順通り、Arduino IDEおよびCore2用ボード、ライブラリの追加を行い、特に詰まる点はありませんでした。

コーディング

コーディングに関しては、C++は競プロの入門サイトで触りをやったぐらいで全然自信がありませんでしたが、GPT-4にMIDI送受信のサンプルコードを読み込ませつつ要件提示したところ、数秒で完成度6割程度のコードが出てきたので、手で書き換えつつさらにGPT-4と質疑やコードレビューを重ねることで数時間で完成形まで持っていくことができました。
公式ドキュメントの翻訳含め、生成AIのおかげで非常にスムーズに構築でき、個人開発には手放せないツールになるなと感じました。

MIDIモジュール

本体の裏蓋を開けてバッテリーソケットを外したところにモジュールを差し込むだけだったので、電子工作苦手な人間にも簡単でよかったです。Core2の場合はソルダジャンパを切り替えるよう記載されていましたが、GROVEポートは使用しない&ハンダ付けする能力がないことからそのままの設定で使用しました。
Core2用のサンプルスケッチは準備中とのことでしたが、CORE1用のサンプルスケッチを

#include <M5Stack.h>

から

#include <M5Core2.h>

に書き換えれば動作しました。
また、

CORE2+Arduinoで使う時の注意点
Serial2の入出力ピンが変更になった関係で、
MIDIライブラリの「MIDI.begin();」は使えません。
代わりに「Serial2.begin(31250, SERIAL_8N1, RXD2, TXD2);」
を入れてください。

と公式サイトに記載されていましたがこのままだと動かず、

Serial2.begin(31250, SERIAL_8N1, RX2, TX2);

としたところ動作しました。

以下は主な動作ロジックのメモです。素人コーディングなのでスケッチは個人的に連絡いただければ共有します…。

基本ロジック

受信チャンネル宛のMIDIメッセージを受信したら、以下のように変換して送信チャンネルに送信します。

ノートオン

設定したキー・スケールに従ってノートナンバー(音程)を変換し、設定比率に従ってベロシティを減らして送信します。

ノートオフ

設定したキー・スケールに従ってノートナンバー(音程)を変換し、送信します。

コントロールチェンジ

そのまま送信します。

その他

読み捨てます。

和音

スケール

メジャースケール(あるいはナチュラルマイナースケール)のみとし、ディスプレイには主調と対応する平行調を表示するようにしました。

和音

最大3和音化し、和音1、和音2それぞれについてOFF、-8th、-6th、-5th、-4th、-3rd、Root、+3rd、+4th、+5th、+6th、+8th、+10th、+12th、ORIGの各モードを切替可能としました。
ORIGは、原音に対し主音のみ-4th、他は-3rdに変換するモードです。

クロマティック音の扱い

BOSS PS-6の作りに合わせ、原音がクロマティック音の場合は、変換先にもクロマティック音があればクロマティック音を、なければ下側のダイアトニック音に寄せるようにしました。

ハマりポイント

  • Core2側のタッチパネルが、どこを触っても一瞬(0,0)を押したと認識するので、タッチの判定条件から(0,0)を除外する必要がありました。
  • ノートオン中に変換するキーや和音を設定変更すると、ノートオフ時の変換先がズレて音が止まらなくなるので、設定変更するたびにオール・ノート・オフメッセージを送信する必要がありました。

おわりに・今後の開発

マイコンMIDIへの苦手意識が少し払拭できてとてもよいチャレンジになりました。
現状、機器間でケーブル3本挿している状態なのが少し不格好なので、今後USB-MIDI化に取り組んでみたいと思います。

現代風ブー麻雀について検討2

以前検討した現代風ブー麻雀のルールを少し改定したので改めて掲載します。

目指す点は変わらず、
・現代の麻雀から最低限のルール変更に留め、ブー麻雀のエッセンス(場況を細かく計算しAトップを狙うこと)を抽出すること
雀荘のアルティマ卓で簡単に遊べること
の2点で、変更点はトバシ賞の追加と和了制限の廃止です。

以下、ルールで記載されていない部分は全て天鳳の喰有赤無東南戦に準拠します。

現代風ブー麻雀

10000点持ちアリアリ順位戦である。東風、半荘等の区切りはなく、各局終了時に「誰かが18000点以上になる」か「誰かが0点未満になる(トビ)」ことでゲームが終了する。
終了後、前ゲームのトップを東家として次ゲームを開始する。
以下、持ち点が10000点以上である状態を「浮き」、10000点未満である状態を「沈み」とする。
 

名称 浮き人数 1位 2位 3位 4位
Aトップ 1人 9 -3 -3 -3
Bトップ 2人 4 0 -2 -2
Cトップ 3人 1 0 0 -1

ゲーム終了時、浮き人数に従って上記のポイント計算を行う。
同点時は起家に近い側をトップとする。
ただし、南入していた場合はポイント計算を2倍、西入していた場合は3倍…と倍率補正する。
また、トビ者は、トバシ者に2ポイントを支払う(倍率補正なし、複数トビ者がいる場合はそれぞれ支払い)。

ゲーム中の詳細については以下のとおりである。
・場ゾロはつく。一本場1500点、リーチ棒1000点。切り上げ満貫あり。
・流局時は常に親流れし、ノーテン罰符はない。リーチ者のみ手牌を公開する。
・ダブロン、トリロンは頭ハネ。
・得点は高点法により計算する。
・1飜縛り。ドラは表ドラ、カンドラのみとし非役の1飜。一発、裏ドラ、カン裏ドラ、赤ドラはない。
・ツモピンフ、チートイツ、三色同順等の戦後役は全てを認め、飜数も通常通り。
役満成立時は得点にかかわらずAトップとする(数え役満を含む)。
・フリテンリーチ、リーチ後の見逃し可能。1000点未満の場合リーチできない。
・トビ時には箱下得点も計算する。
チョンボは、ゲーム終了時のポイントから他家に1ポイントオールを支払い、同一の本場をやり直す。
・チンマイ、自分が沈んだまま他家を飛ばすなどの和了制限はない。

天鳳で遊ぶ場合は大会ロビーを作成し、拡張ルールで以下のように設定すると近い感覚で遊べると思います。(トバシ賞はありません)

2回目の聖戦の系譜オールA攻略メモ

risette14.hatenadiary.jp
で初めてオールAをプレイしてから約2年、妻が聖戦やってるのを横目で見てるうちにまたやりたくなったので、2回目のオールAをやりました。
全体的な攻略方針は前回をベースにしつつ反省に従って改善、また全CP組んだことのない組み合わせにしてみることに。

CP

3周目さらに短縮目指すならエーディンxミデェール、ラケシスxベオウルフ、他5組は今回と同じ組み合わせでやると思う。

  • エーディンxアゼル

レスキュー運用を試してみるためこの組み合わせに。
でも結局前半では全然使わなかったし、後半でも九章のトラキア城戦がちょっと縮まった程度で、十章で道具屋売りが始まることを考えるとあんまり意味なかったかも…。

  • ラケシスxフィン

王道らしいので組んでみた。2章からほぼずっと隣接させ続けて3章46ターンで成立。
デルムッドもナンナもそこそこ強くはなったけど、ターン数制約厳しいのと継承イマイチなのとであんまりいい組み合わせじゃなかった。

  • アイラxデュー

この組み合わせは成長よくて太陽剣もあって強かった!ラクチェもスカサハも金いらないキャラなので値切り継承させるにはもったいない気もするけどここが収まりどころなんだろうな。

  • シルヴィアxレックス

リーンとコープルにエリートリング回さなくても踊ると杖振りで楽にLv30まで上がってくれてとてもいい組み合わせでした。攻略速度と育成の両立には最適の組み合わせっぽい。

  • フュリーxクロード

わりと感触よかった。フィーの火力は必殺化勇者の槍で補えるし、リブローとか振れて万能。セティはレスキュー継承してきてリザーブ振ってただけ。

  • ティルテュxレヴィン

悔しいけど(?)フォルアーサー強かった。10章終章でレスキューがっちり運用するなら馬必須なのでもっとターン数詰めるならこの組み合わせは確定かな。
ただ思ったより能力上限が低くて、特に魔防がいまいちなせいでスリープの的になるのはちょっとな。

  • ブリギッドxホリン

月光パティは自力で闘技場わりと勝てるので早々にCCできて資金集めが楽でよかった。ホリンへの値切りの腕輪とリターンリングの継承は気をつける必要あり。

  • 子世代

ラクチェxシャナンとナンナxリーフしか成立しませんでした。

各章の流れ

全体336ターンで前回より40ターンほど短縮しました。

  • 序章

blog.livedoor.jp
序章~一章闘技場までこちらを参考にプレイして11ターン。

  • 一章

30ターン。開幕フィンの祈り地雷からフリープレイ。
エーディンとデューは遠くまで逃しすぎると戻るのに時間がかかるので海岸で耐久。
シグルドとキュアンだけで先行するとヴェルダン城手前で弓兵に足止めされたので、シグルドに手槍持たせたほうがいいかも。
あと知らなかったんですが、アイラってジェノア城を制圧すると攻撃してこなくなるんですね。キャラ逃がす必要がなくなって動かしやすくなりました。

  • 二章

35ターン。30ターンで制圧可能状態になってからラケシス育成で数ターンプラス。
前回プレイ時を参考にワープ・リターン運用を改善した結果少し余裕出ました。
値切りの腕輪は当面シルヴィアに持たせて進めます。

  • 三章

49ターン。ギリギリまで稼ぎ入れました。
前回はシルベール城・マディノ城間で全ユニットを移動させたことでかなりターンロスしましたが、今回は最小限の騎兵だけを森に陣取らせてシルベール城を攻略したことで改善しました。マディノ城攻略までにラケシスCCしておけば特に難しくないです。
17ターンでシルベール城攻略してから46ターンでぎりぎりラケフィン成立、ここがうまくいくか今回一番ドキドキだった。
キュアンLv24、エスリンLv26、フィンLv22、ディアドラLv20で離脱。

  • 四章

46ターン。こちらも稼ぎ多め。
特に難しい場面はなく、ディートバ隊を30ターンまで狩ってデュー、アゼル、ティルテュCCしつつ全CP成立、市民は全てアーダンに。

  • 五章

22ターン。開幕で継承表に合わせて売買しました。これ四章くらいのうちには作っておいたほうがいいですね。
急ぎすぎてレブトール戦シグルドとフュリーだけになってしまい、レプトール戦で2ターンくらいロスしました。せめてフュリーにライブ持たせておくか、リブロー持ちが砂漠側から支援できるように準備すべきだった。
シルヴィアLv21、アーダンLv26、他Lv30かLv29で計40レベルのロス。

  • 六章

36ターン。前回の反省から、セリスの装備がっちり固めてほぼ地雷で済ませました。シュミット隊3回狩ってセリスLv21。
選択はヨハルヴァとリザイアで、リターンはユリアへ、銀剣はデルムッドへ移動。ユリアは壊しかけワープの方がいいかもしれない。

  • 七章

33ターン。29ターンで制圧可能にはなってからレンスター組の闘技場とリターン持ちラナのCCまで粘った。ユリアは九章までずっとワープ振り。
リーフの斬鉄剣継承が非常によくていい感じに稼げました。フィンはLv22あれば鉄の槍だけでも戦力になる。
パティは値切りの腕輪・リターンリング継承で本城戻ってエリートリング購入から鉄の剣売買で稼ぎ。
反省はレスターが鉄の弓しか持てなかったこと、ブリギッド初期装備の鋼の弓を売っておくとここの道具屋に並ぶらしいです。

  • 八章

20ターン。この章がいまいちで3~4ターン浪費しました。前半でリーフとパティをCC。
レッグリングはもう開幕からリーンに回してよかったし、セリスとパティはレンスター城に飛ばした方がよかったです。コノート城周りにユニット集める必要もなかったな…。あとシーフの腕輪どうするか決めきれなくてターン数的に間に合ったフィーに持たせたけどアレスだったかなぁ…。

  • 九章

19ターン。トラキア城戦はレスキューバンバン振って早めに攻略。
アリオーンはファバル連れてきて無理やり倒したけどアーサーいた方がよかった。追撃リング回したら金欠になって左上の村で資金供給してました。
魔法剣持ったパティのプレイ感が非常によくめちゃめちゃ金稼いでくれました。
エリート持ちコープルはひたすら本城ワープ振って十章終わりでLv30になったのでヨシ。

  • 十章

17ターン。ここからはセリス・アレス・アーサー・リーフ(レスキュー)・リーン(レッグリング・ナイトリング)の5人で全面的にレスキュー振って攻略。
リーフがスリープ一発食らってピンチだったのでバリアリング回すべきでした。

  • 終章

18ターン。開幕で全員Lv30になり、同じ組み合わせでレスキュー振って攻略。
リーフの資金確保を重視しましたが、☆勇者の剣、光の剣、リライブ、レスト、レスキューを持って追加火力・周囲のサポートと獅子奮迅でした。
ここに来ると対スリープが最大の問題で、魔防が神器ブーストされないアーサー、リーン、リーフの3人はどうしても食らう。バリアリングは2個しかないので移動に影響が出るリーンとリーフに持たせてアーサーは食らったらリーフでレスト。
アーサー・リーフの魔防は少し吟味してLv30で素14あるとよさそうです。

まとめと今後

やっぱり聖戦は楽しい。またやる気が出たらオールA300ターン切り狙いか平民オールAにチャレンジしようと思います。




以上の内容はhttps://risette14.hatenadiary.jp/より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14