shingoushori's dialy

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

memo : Magenta.js

とりあえず、メモ

先日、TensorFlow.js が出てうわぁとなって色々触ってみているところ
こちらもということから、Webへの進出、JavaScript移植の動きが勢いづいている印象

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もよくわかりません、正直!
とはいえ、まあ、なんとかできています。動くと楽しいですよ!
動かなくても、変な表示も楽しいですよ! 異常終了も、うん、まぁ、荒ぶれる!

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

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