shingoushori's dialy

音信号処理を専ら研究していた元博士後期課程の学生によるメモ

EarthQuaker Devices / Rainbow Machine v2 or not ...

EarthQuaker Devices / Rainbow Machine という, 素敵なエフェクターがいます.

素敵。なにこれ、素敵。

特にオススメの動画がこちら、素敵。

で、購入してしまったのです.イシバシ楽器さまで. 


しかし、やはり癖が強い.
かけっぱなしで耐えられる設定となると、このエフェクト特有のエグさを薄〜くする感じに. それはそれで素晴らしい風合いなのですが, 惜しい.
本記事の最初に貼った動画では、いい感じでラッチとアンラッチが使い分けられていそう. 

しかし、私の手持ちではどうもできない ... そんな風に悩んでいました.

で、おかしいなと思うこと四ヶ月くらい (購入したのは昨年のクリスマス for 自分)

ようやくわかりました.

アンラッチもできるのは、 v2 なのですね ...
スイッチと種類と、インジケーターのライトの位置が違います.
購入時にはぜひご確認を ...

どうしよう, v2を見つけたらそちらも買ってしまおうかと.今持っているやつは, 掛けっぱなしよう薄い設定として, v2の方はエグめ設定でアンラッチでレインボー ... したい ...

Simutrans を Win10 でビルドしてみた

Simutrans の自リポジトリを Win10 でビルドしてみました

主に参考にしたページ

qiita.com

しかし, 手間取ったり, 載っていないエラーに苦しみました
ので, ちょっとメモしておきます

・msys2をインストールしても, simutrans をビルドするのは mingw32.exe のほう msys2 じゃない

・make で "x86_64-w64-mingw32-windres.exeが見つからない" とエラーがでた

github.com

「In /mingw64/bin there is no x86_64-w64-mingw32-windres.exe but there is a windres.exe. When I manually copy windres.exe to x86_64-w64-mingw32-windres.exe everything works for now.」

ということで, windres.exe を x86_64-w64-mingw32-windres.exe の名前でコピーしたらビルドできました

なんてこったい

 

↓ こうしてできた win 版のexe を, mac 版共々公開してみました ↓

ux.getuploader.com

 

正直、ぜんぜん私には簡単じゃなかったです
なんども挫折し、その度に数週間放置しました
しかし、やらねばノウハウは蓄積されず、障壁は下がりません
皆さんにも是非、ノウハウを公開して戴きたいとおもっております

ffmpegでスペクトログラムの動画出力

FFmpeg ...

FFmpeg(エフエフエムペグ)は動画と音声を記録・変換・再生するためのフリーソフトウェアである。」FFmpeg - Wikipedia

定番のフリーソフトで、いろんなソフトが実はライブラリとして使っている ... とも、どこかでか聞いたような
コマンドラインで動画や音声をいじる、Pythonからコマンドラインを通して ... というような時には、とりあえずFFmpegが便利です


で、FFmpegでスペクトログラムが出力できる、しかも簡単に
さらには凝ったこともできそうだ、ということに気づきました
ので、感動のあまりこちらにもメモがてら記事にしておきたい

www.youtube.com

↑こんな感じです!↓こんな感じで作れます! 複数!cqt!素晴らしい

ffmpeg -i hoge.wav -filter_complex \
"[0:a]showcqt=s=640x518,pad=1280:720[vs]; \
[0:a]showspectrum=mode=separate:color=intensity:scale=cbrt:slide=scroll:s=640x518[ss]; \
[0:a]showwaves=s=1280x202:mode=line[sw]; \
[vs][ss]overlay=w[bg]; \
[bg][sw]overlay=0:H-h[out]" \
-map "[out]" -map 0:a hoge.mp4

スペクトログラムの画像出力もできました。

ffmpeg -i hoge.wav -lavfi showspectrumpic=s=1024x1024 hoge.png

数値で出せないと、あれこれやるには全然足りないですが、
手軽に見れるのが素晴らしい!

<参考文献>

音声波形を表示する showspectrum, showwaves の使い方 : ニコニコ動画研究所

音声をオクターヴ表示する showcqt の使い方 : ニコニコ動画研究所

FFmpeg Filters Documentation

ffmpeg: audio visualization tricks | Luka Prinčič

How do I turn audio into video (that is, show the waveforms in a video)? - Video Production Stack Exchange

ffmpeg - Create a video file from an audio file and add visualizations from audio - Super User

Simutrans の Scripted AI : sqai の作る路線の設定を弄る

フリーの交通?シミュレーション
Simutrans(http://japanese.simutrans.com)が, 素晴らしい.

SimutransにはAIプレイヤーがあります.それも2種類あります.
1種類はソースに組み込まれていそうなもの.もう1種類はスクリプトで改造,追加ができそうなものです.
今回は,後者のスクリプトの改造についてです.
Scripted AI のデフォルトでいる, sqai を改造するということです.

最初の改造どころは,sqai の作る路線の設定です.
・積むまで待機(%)
・最大待ち時間(月)

sqaiが作成する路線は,どうも貨物関係ばかり.
始点が資材を送る方,終点が受け取る方のようです.
路線の設定は,始点の"積むまで待機(%)"が 100 で,それ以外は 0 のようです.

実装箇所は,$simutrans/ai/sqai/road_connector.nut l.129-130 です.

sched.entries.append( schedule_entry_x(c_start, 100, 0) );
sched.entries.append( schedule_entry_x(c_end, 0, 0) );

わかりやすいですね.
schedule_entry_x の第二引数が 積むまで待機(%), 第三引数が 最大待ち時間(月) のようです.

試しに,以下のように書き換えてみました.

sched.entries.append( schedule_entry_x(c_start, 50, 1) );
sched.entries.append( schedule_entry_x(c_end, 50, 8) );

第二引数の 積むまで待機(%) は,指定した通り 50 % になりました.
わかりにくいのが第三引数です.始点(上の行,1を指定)では 1/32768 , 終点(下の行,
8を指定)では 1/256 となりました.
1/32768 が最小単位として,2^(8-1) ということでしょう.

最近Webブラウザのタブに居続けたナイスURL

gigazine.net

www.codexa.net

www.atmarkit.co.jp

www.slideshare.net

machine-learning.hatenablog.com

qiita.com

qiita.com

 

 

<RNNによる音源分離、ノイズ除去のWeb Audio API を用いたデモ>

js-mim.github.io

RNNoise: Learning Noise Suppression

 

 

www.dtmstation.com

 

qiita.com

github.com

 

 

QuTiP: Quantum Toolbox in Python (4.0) — QuTiP 4.0 Documentation

量子計算におけるゲート色々 - 量子コンピュータ入門 - 物理とか

qiita.com

やっつけ都市計画 〜 ちょっとした本体改造編

こちら、↓ こちらへの投稿を目論んでの記事になります。

adventar.org

=======================================================

[口上]

フリーの交通?シミュレーション
Simutrans(http://japanese.simutrans.com)が, 素晴らしい.

それでもって私は人工地盤っぽいことをやっています。
Simutransで人工地盤してみる - shingoushori's dialy
大規模な都市開発をさっさとやるべく、Pythonでセーブデータをいじっています

=======================================================

[要旨]

みなさん、乱開発、捗っていますか!
思い思いの高架、快適に作れていますか?

Pythonでセーブデータをいじっても、
時々刻々と発展していくマップにちょこちょこと手を加えたい衝動には、抗えませんよね。

そう、私もついに、本体を改造しないと、解決できない不満に行き着いてしまったのです。

本体改造のハードルが高かった私は、安直に Pythonによるセーブデータいじり に勤しんでいました。
(こちらにまとめました → やっつけ都市計画 〜 Pythonによるセーブデータいじり編 - shingoushori's dialy)

その成果によるセーブデータの特異性により、本体改造の必要性が高まってしまったのです。

本稿では、私が2017年にやってきた、
ちょっとした本体改造についてまとめます。

=======================================================

[GitHub]
↓ こちらが私のリポジトリです↓

github.com

各アイデアごとにコミットしています。
サンプルのシンプルな動画をYouTubeにあげてまして、
主のコミットには、そのアドレスを貼り付けてあります。

↓ それでは、個別に紹介していきます ↓
=======================================================

・高架にするとマーカーがガシガシ上にズレていくように見える件
 についての応急処置

セーブデータいじりで、
マーカーを追加したり、文字列を置き換えたり、オーナーを変更したりは、最早できるのです。
しかし、そのマーカーの表示位置は、GUIによるものです。
標高が高くなるにつれて差が激しくなります。
セーブデータいじりによって、天空にバス停を設置しまくったがためのイライラでした。

 
↓ 特定のプレイヤーだけにしたり、外したりする系 ↓
スクリプトで追加し放題だからといって、極端なプレイヤーを作ってしまいますと、邪魔です。
仕方がないので、そのプレイヤーだけ外したりでもするモードを追加しました。

・表示するマーカーを、アクティブなプレイヤーのものだけに絞ってみた

・アクティブなプレイヤー以外の 売上ポップアップ を消してみた

・路線図に、特定のPlayerだけを非表示にできるようにしてみた <お気に入り!>

・待機状態, 駅名/都市名含むコメントをアクティブプレイヤーのものだけに表示を絞れるようにしてみた <お気に入り!>

www.youtube.com

 

 

・道路/線路の削除を 接続解除と削除の二つに分けてみた <!おすすめ!>

正直、全然ウケなくてしょんぼりしています ...
Pythonでセーブデータいじるのが酷すぎたのかな ...
せっかく積み上げた高架を調整する時とか、
バス停をなんとか配置しないといけないとか、
削除だと行き過ぎで、もう一度作り直すのが苦しいことって、私には結構あります
だから、これが動いた時は本当に嬉しかったです

 

マーカーを使って 信号の接続方向を調整できるようにしてみた <!うけた!>https://www.

www.youtube.com

オフセットも併用すると、ちょっと複雑なものも作れます。

www.youtube.com

当初、マップ回転に非対応でした。遅れて対応した時のがこちら ↓

↓ ひめしさんの記事で取り上げていただけてます。恐縮です。↓
himeshi.hateblo.jp

 

・早送りを、とても早送りにする改造 <お気に入り!>

標準の早送りだけだと、不自由じゃないでしょうか?
早送りじゃない方については、実は調整できます。
しかし、試してみたら微調整程度の利き方でしょんぼりしました。
そこで、人間の感覚は対数的なので、x2, /2 で効かせるのがいいだろう!と思い立ったわけです。

・ハイトカット表示モードに新モード 'L' を追加してみた <お気に入り!>

天空にバス停を配置しまくった結果、地上がさっぱり見えづらくなってしまいました。
仕方がないので、ハイトカット表示モードにしっぱなしにするようになったのです。
しかし、レベルの設定が使いにくいと思いました。カーソル位置で設定されても ...
ということで、プリセットできるようにしてみました。 

・駅を作った時に、
 ちょっと離れたところにある駅にも接続して作れるようにしてみた <!おすすめ!>

ちょっと離れたところに作るために、わざわざ一時的に作り、壊す...
そのために、間にある建物や木を破壊せざるを得ない...
AI Playerが近いところに作りすぎてカオス...
これらを解決するには、やはり本体改造です。
苦戦したのが AI Player です。どうも、別プロセス?になるんでしょうか。
このため、本体で適当に追加した変数の変更を AI Player で読み取らせるために、
なにやら怪しい実装をやったような覚えがあります。
さらに、実際に AI Player に使わせたところ、間抜けなことが起きました。

近接した産業間の輸送用の路線が作られた時、同一バス停を結ぶ路線となり、
さっぱり運転されない!そして、そのまま破産してしまいました ...

・AI Player を眺めていたら、そのうちにセーブデータが読み込めなくなった件
 についての応急処置

skip "loadsave_t::rdwr_str() string too long" · shingoushori/simutrans@de85c83 · GitHub

AI Player だけじゃない、何か別のところの問題も直せるような気がしないでもないです。
そういうケースが他に見つかっていません。
他のセーブデータのロードでのエラーも拾っていきたいところです。 

 

=======================================================
[我流 バスの追い越し拡張 現況 ...]
本当は、ひめしさんのOTRPatchのマージ → 自リポジトリでの細々とした保持を狙っていました。
が、GitHubの機能がよくわからなかったので、挫折しています。
とりあえず、回り道として我流でちょっと追い越し条件の緩和をやってみています。

あー、これは難しい。実は、追い越しが必要になるプレイを全くしていませんでした。
だから、新しいプレイスタイルを模索し、新しいマップを用意するところからやっています。
新しいマップが形になってくると嬉しいですね!
しかも、新しいマップの方が一応たくましくなっている分、楽しいんだと思う、
うん、しょうがない。


=======================================================

[さて]
どうでしょう、本体改造。
どれもちょっとした改造ですが、結構便利そうじゃないでしょうか。
まだまだ改造のしどころがありそうじゃないでしょうか、Simutrans。

ちょっとした改造に抑えるためには、色々と諦める必要はあります。
ボタンで操作したい!
→ 処理本体で苦戦した後で、GUIでもう1ラウンド苦戦したくない ... であるとか。
そこは柔軟に、やりやすい方法をソースコードと相談してもいいと思います。
印象的だったのが、マーカーの便利さです。
不格好ですが、うまく表示を制御することも含めて考えるのも、面白いのではないでしょうか。

ドイツ語混じりで意味が取りづらく苦戦したり、
なにより私はテキストエディタmacでmiを用いています )で無理やりやっているので、
頭を抱えることも多いです、正直。GitHubもよくわかりません、正直!
とはいえ、まあ、なんとかできています。動くと楽しいですよ!
動かなくても、変な表示も楽しいですよ! 異常終了も、うん、まぁ、荒ぶれる!

皆さんも是非改造してください!
期待しています。

ありがとうございました。

 

やっつけ都市計画 〜 Pythonによるセーブデータいじり編

こちら、↓ こちらへの投稿を目論んでの記事になります。

adventar.org

=======================================================

[口上]

フリーの交通?シミュレーション
Simutrans(http://japanese.simutrans.com)が, 素晴らしい.

それでもって私は人工地盤っぽいことをやっています。
Simutransで人工地盤してみる - shingoushori's dialy
大規模な都市開発をさっさとやるべく、Pythonでセーブデータをいじっています

=======================================================

[要旨]

みなさん、Simutransは何がお好きですか?
あるいは、鉄道・交通をどうお楽しみでしょうか?
私が好きなのは、なんか、眺めること!
そして、その行き交う交通システムに改良を加えて、いいことした気分になること!

しかし、Simutransを普通にプレイしていると、とても眺めてばかりいられません。
改良する元となる在来の交通システム+都市を育てるだけで、何夜も過ぎます。
そうこうしているうちにSimutrans自体のバージョンは上がれば、
パソコンすらも代替わりします。
するとどうでしょう、手塩にかけて育てたセーブデータがロードすらできないことも。
そして気づくのです、
「あれ、Simutransを眺めながらやろうしていた作業が何もできていないぞ」と。
(私の場合、それは学位であり、音楽制作であり、業務改善のための勉強でした。)

このように、私が感じる3大悲劇
・やりたい規模の都市を育てるまでが大変
・セーブデータがロードすらできない!
・技術的な進歩の機会の浪費
を克服する1手法を実践しています。
すなわち、"Pythonによるセーブデータいじり"です。

本稿では、私が2017年にやってきた、
セーブデータの黎明期の都市計画をやっつけ仕事するための、
Pythonによるセーブデータいじりについてまとめます。

=======================================================

[やっつけ都市計画]
↓ こんな街路を都市の成長に合わせて張り巡らせ、多層化しています ↓

[格子状街路 〜 天空編]
格子を敷くにも、
庁舎や産業などの制限から、どういうパラメータの格子にするかで毎回悩みます。
いざ決めても、坂や川に泣きます。

そこで、もういっそのこと天空の街路を作ってしまおうと思い立ったのです

... というわけで、天空に格子状街路を浮かせてしまいます。
高架を重ねた後にその下の建造物を消すことで、GUIででもできますね。
これをセーブデータいじりにより、ダイレクトに機械的に浮かせたところに配置します。

・↓ こんな感じです

PythonでSimutransのマップに天空の市道の碁盤の目を追加してみた - shingoushori's dialy

・↓ バス停も追加できました しかも、交差点にです

PythonでSimutransのマップに天空の市道の格子点にバス停を追加してみた - shingoushori's dialy

・↓ そして、
 ↓ 専用のプレイヤーも追加できましたし、路線にも登録できました

www.youtube.com

ごめんなさい、サンプルコードが未公開でした。
さすがに長くなったこともあり、GitHubを活用しようと思ってあれこれしているうちに、
コードの整理と公開を忘れていました ... 来年の課題です ...


[格子状街路 〜 地上編]
天空に配置はできました、専用のプレイヤーまで建てられました。
とは言っても、配置しただけでは足りませんでした。
天空に道路があっても、地上に道路がないと市街は広がらないんですね ...
 

・空き地に道路を格子で敷いてみた
PythonでSimutransのマップに空き地に道路を格子で敷いてみた - shingoushori's dialy

乱開発のために、市街を広げさせて交通需要を増やすための布石です.

・特定の行と列を平坦化してみた
PythonでSimutransの特定の行と列を平坦化してみた - shingoushori's dialy

これにより、GUIでも高架が敷設しやすくなります.

 ・特定の行と列の海底のレベルを持ち上げてみた
PythonでSimutransの特定の行と列の海底のレベルを水面まで持ち上げてみた - shingoushori's dialy

これにより、海を横切る高架が敷設しやすくなります!
↓ こんなことをやるのも楽しいんですけれども ... 

 

=======================================================

[その他]

・悲惨な市道化防止策 : 地下掘って、高架にする

PythonでSimutransの道路の下を掘って、ペデストリアンデッキを設置してみた - shingoushori's dialy

主観的に、一番みなさんの反響が大きかったのが、これです。
こういった、地味に繊細な作業になる、下ごしらえのような開発は、
セーブデータいじりの出番だと思っています。

 

・線路と道路の持ち主の変更

PythonでSimutransの線路と道路の持ち主を変えてみた - shingoushori's dialy
複数のプレイヤーを行き来していると、
気がつかないうちに線路や道路の持ち主が混ざりませんか?
そして、それが気持ち悪くないですか?
直そうとしても、プレイ画面で探し出すのは困難です。
「セーブデータいじりで補正できる。」
この余裕は、乱開発を地味に後押ししてくれます。

 

・全乗り物のスケジュールの待機を一括変更

PythonでSimutransの全乗り物の待機を上書きしてみた - shingoushori's dialy

利益率を微調整して、資金のカンストや破産を防ぎたいと思いました。
そこで単純に思いついたのが、待機の待ちの調整です。
でも、1台ずつ、1路線ずつ設定するのが苦しく感じました。
そこで、セーブデータいじりです。
いじってみると、
GUIでは入れられなかった/入れられると気づかなかった値が大丈夫だったりします。

 

・元々の庁舎を残す方法 : 街の座標を庁舎からずらしておく

PythonでSimutransの街の座標をずらしてみた - shingoushori's dialy
庁舎の建て替え → 移築 → 元々の庁舎の場所、雑居ビルの密集地!
という流れに、どうにもしょんぼりしてしまうのです。
とりあえず、小さい頃こそ庁舎横付けで、街の代表駅を作りたくなりませんか?
初めはpakをいじっていたんです、ランドマーク扱いの。
しかし、セーブデータいじりによって、どうやら実現できてしまいそうです。

 副産物 〜 魔改造

 

 

 

=======================================================

[方法]
やっていることは、実に原始的です。
<用意するもの>
・比較できるテキストエディタ : macmiを用いています。
・スクロプト化したい差分以外をできるだけ排した、セーブデータ対
<やること>
ひたすら観察 ⇔ トライアンドエラー ⇔ 一般化できないか悩む

今後は、本体のソースコードを参照することでの効率化を検討していきます。

 

[今後]
GitHubでいい感じにサンプルコードを管理
・ロードできなくなったセーブデータのサルベージ
 そういえば本文中にありませんが、
 セーブデータがロードできなくなったことが、セーブデータいじりに手を染めた元々の動機でした。
Pythonスクリプトのタイマー実施
 オートセーブとAI Playerあたりで、擬似的にでもできないものかと妄想中です。
・路線図出力
・ちゃんと都市計画
・なんか賢い自動なんとやら

=======================================================

[用語]
都市計画は幼い頃からなんとなく好きだったものの、
そういえばちゃんとは勉強していないので、用語が覚束ないです。
以下に、本稿執筆に際して「そういえば」で調べて出てきた分を、貼り付けます。

・方格設計
方格設計 - Wikipedia
理解:碁盤の目、格子状に道路を配置する、都市計画の設計

・格子状街路
格子状街路 - Google 検索
専門用語っぽくするとしたらこんなのだろうなと、私が勝手に思っている言葉
採用している論文、実在の自治体のHPがあるあたり、悪くない言葉だとの認識

・碁盤病
 ↓ 参考文献 11:52 あたり

www.nicovideo.jp

 

=======================================================

[さて]
セーブデータいじりによって、本体改造、さらにはセーブデータのフォーマット拡張をせずとも、
ある程度は無茶苦茶なことができるんだということを、感じていただけましたでしょうか。
そして、GUIでのやり直しが発生すると苦しそうな作業を自動化することで、
もっと大規模で徹底的な乱開発に邁進できる希望が膨らみましたでしょうか。

 
... 私はこの一連のセーブデータいじりの成果によって、
本体改造したくなってしまいました。

ということで、やっつけ都市計画 〜 ちょっとした本体改造編 に続きます。
ありがとうございました。