memo : Magenta.js
とりあえず、メモ
Magentaで開発されてきた音楽生成のモデルや、音楽の潜在表現を得るMusicVAEのモデルが、オールインワンのJavaScriptライブラリとなって登場。このMagenta.jsを利用することで、簡単にブラウザ上で音楽を生成したりすることができるようになった。 https://t.co/5ZJfabJS6k
— piqcy (@icoxfog417) 2018年5月6日
先日、TensorFlow.js が出てうわぁとなって色々触ってみているところ
こちらもということから、Webへの進出、JavaScript移植の動きが勢いづいている印象
EarthQuaker Devices / Rainbow Machine v2 or not ...
EarthQuaker Devices / Rainbow Machine という, 素敵なエフェクターがいます.
素敵。なにこれ、素敵。
特にオススメの動画がこちら、素敵。
で、購入してしまったのです.イシバシ楽器さまで.
しかし、やはり癖が強い.
かけっぱなしで耐えられる設定となると、このエフェクト特有のエグさを薄〜くする感じに. それはそれで素晴らしい風合いなのですが, 惜しい.
本記事の最初に貼った動画では、いい感じでラッチとアンラッチが使い分けられていそう.
しかし、私の手持ちではどうもできない ... そんな風に悩んでいました.
で、おかしいなと思うこと四ヶ月くらい (購入したのは昨年のクリスマス for 自分)
ようやくわかりました.
アンラッチもできるのは、 v2 なのですね ...
スイッチと種類と、インジケーターのライトの位置が違います.
購入時にはぜひご確認を ...
どうしよう, v2を見つけたらそちらも買ってしまおうかと.今持っているやつは, 掛けっぱなしよう薄い設定として, v2の方はエグめ設定でアンラッチでレインボー ... したい ...
Simutrans を Win10 でビルドしてみた
Simutrans の自リポジトリを Win10 でビルドしてみました
主に参考にしたページ
しかし, 手間取ったり, 載っていないエラーに苦しみました
ので, ちょっとメモしておきます
・msys2をインストールしても, simutrans をビルドするのは mingw32.exe のほう msys2 じゃない
・make で "x86_64-w64-mingw32-windres.exeが見つからない" とエラーがでた
「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 版共々公開してみました ↓
正直、ぜんぜん私には簡単じゃなかったです
なんども挫折し、その度に数週間放置しました
しかし、やらねばノウハウは蓄積されず、障壁は下がりません
皆さんにも是非、ノウハウを公開して戴きたいとおもっております
ffmpegでスペクトログラムの動画出力
FFmpeg ...
「FFmpeg(エフエフエムペグ)は動画と音声を記録・変換・再生するためのフリーソフトウェアである。」FFmpeg - Wikipedia
定番のフリーソフトで、いろんなソフトが実はライブラリとして使っている ... とも、どこかでか聞いたような
コマンドラインで動画や音声をいじる、Pythonからコマンドラインを通して ... というような時には、とりあえずFFmpegが便利です
で、FFmpegでスペクトログラムが出力できる、しかも簡単に
さらには凝ったこともできそうだ、ということに気づきました
ので、感動のあまりこちらにもメモがてら記事にしておきたい
↑こんな感じです!↓こんな感じで作れます! 複数!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 すごい スペクトログラムの画像、出力できる 知らなかった
— shingoushori (@shingoushori) 2018年3月3日
とりあえず Stranger-Echoes の自作アレンジのやつで出してみた
"ffmpeg -i 音データ -lavfi showspectrumpic=s=1024x1024 出力画像" これだけ pic.twitter.com/1COXHE5N8L
スペクトログラムの画像出力もできました。
数値で出せないと、あれこれやるには全然足りないですが、
手軽に見れるのが素晴らしい!
<参考文献>
音声波形を表示する showspectrum, showwaves の使い方 : ニコニコ動画研究所
音声をオクターヴ表示する showcqt の使い方 : ニコニコ動画研究所
ffmpeg: audio visualization tricks | Luka Prinčič
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) ということでしょう.
やっつけ都市計画 〜 ちょっとした本体改造編
こちら、↓ こちらへの投稿を目論んでの記事になります。
=======================================================
[口上]
フリーの交通?シミュレーション
Simutrans(http://japanese.simutrans.com)が, 素晴らしい.
それでもって私は人工地盤っぽいことをやっています。
Simutransで人工地盤してみる - shingoushori's dialy
大規模な都市開発をさっさとやるべく、Pythonでセーブデータをいじっています
=======================================================
[要旨]
みなさん、乱開発、捗っていますか!
思い思いの高架、快適に作れていますか?
Pythonでセーブデータをいじっても、
時々刻々と発展していくマップにちょこちょこと手を加えたい衝動には、抗えませんよね。
そう、私もついに、本体を改造しないと、解決できない不満に行き着いてしまったのです。
本体改造のハードルが高かった私は、安直に Pythonによるセーブデータいじり に勤しんでいました。
(こちらにまとめました → やっつけ都市計画 〜 Pythonによるセーブデータいじり編 - shingoushori's dialy)
その成果によるセーブデータの特異性により、本体改造の必要性が高まってしまったのです。
本稿では、私が2017年にやってきた、
ちょっとした本体改造についてまとめます。
=======================================================
各アイデアごとにコミットしています。
サンプルのシンプルな動画をYouTubeにあげてまして、
主のコミットには、そのアドレスを貼り付けてあります。
↓ それでは、個別に紹介していきます ↓
=======================================================
・高架にするとマーカーがガシガシ上にズレていくように見える件
についての応急処置
ソースコード改造でやりたかったこと その1 がなんとなくできたっぽい 1枚目:オリジナル 2枚目:改造 高架にするとマーカーがガシガシ上にズレていくように見えるので、イライラしていたのです... #Simutrans pic.twitter.com/Jg88ttjfyR
— shingoushori (@shingoushori) 2017年10月10日
セーブデータいじりで、
マーカーを追加したり、文字列を置き換えたり、オーナーを変更したりは、最早できるのです。
しかし、そのマーカーの表示位置は、GUIによるものです。
標高が高くなるにつれて差が激しくなります。
セーブデータいじりによって、天空にバス停を設置しまくったがためのイライラでした。
↓ 特定のプレイヤーだけにしたり、外したりする系 ↓
スクリプトで追加し放題だからといって、極端なプレイヤーを作ってしまいますと、邪魔です。
仕方がないので、そのプレイヤーだけ外したりでもするモードを追加しました。
・表示するマーカーを、アクティブなプレイヤーのものだけに絞ってみた
本体改造の実験 ... 表示するマーカーを、アクティブなプレイヤーのものだけに絞ってみた #Simutrans pic.twitter.com/CawrKUtCvn
— shingoushori (@shingoushori) 2017年10月11日
・アクティブなプレイヤー以外の 売上ポップアップ を消してみた
こんな感じで
— shingoushori (@shingoushori) 2017年10月12日
アクティブなプレイヤー以外の 売上ポップアップ を消してみましたhttps://t.co/EgKMNOlMn1 #Simutrans
・路線図に、特定のPlayerだけを非表示にできるようにしてみた <お気に入り!>
路線図に、特定のPlayerだけを非表示にできるようにしてみた 試しにAI Playerをたくさん走らせてみた https://t.co/eTBVbCgy3d #Simutrans
— shingoushori (@shingoushori) 2017年11月3日
・待機状態, 駅名/都市名含むコメントをアクティブプレイヤーのものだけに表示を絞れるようにしてみた <お気に入り!>
・道路/線路の削除を 接続解除と削除の二つに分けてみた <!おすすめ!>
道路/線路の削除を 接続解除と削除の二つに分けてみた https://t.co/XDPTEuT76w #Simutrans
— shingoushori (@shingoushori) 2017年10月14日
正直、全然ウケなくてしょんぼりしています ...
Pythonでセーブデータいじるのが酷すぎたのかな ...
せっかく積み上げた高架を調整する時とか、
バス停をなんとか配置しないといけないとか、
削除だと行き過ぎで、もう一度作り直すのが苦しいことって、私には結構あります
だから、これが動いた時は本当に嬉しかったです
・マーカーを使って 信号の接続方向を調整できるようにしてみた <!うけた!>
オフセットも併用すると、ちょっと複雑なものも作れます。
当初、マップ回転に非対応でした。遅れて対応した時のがこちら ↓
マーカーを使って 信号の接続方向を調整できるようにしてみた改造、
— shingoushori (@shingoushori) 2017年11月8日
マップの回転に対応させてみましたhttps://t.co/REQJTvG5ODhttps://t.co/DbLpM0d7fS
ざっくりした方法なので、ちょっと心配ではありますが #Simutrans
↓ ひめしさんの記事で取り上げていただけてます。恐縮です。↓
himeshi.hateblo.jp
・早送りを、とても早送りにする改造 <お気に入り!>
早送りを、とても早送りにする改造してみました x2, /2 で効かせて直ぐ限界値に持っていけます しかも早送りモードもx2, /2 さくさく月日が飛んで行って楽しい https://t.co/jih721uEQo #Simutrans
— shingoushori (@shingoushori) 2017年10月28日
標準の早送りだけだと、不自由じゃないでしょうか?
早送りじゃない方については、実は調整できます。
しかし、試してみたら微調整程度の利き方でしょんぼりしました。
そこで、人間の感覚は対数的なので、x2, /2 で効かせるのがいいだろう!と思い立ったわけです。
・ハイトカット表示モードに新モード 'L' を追加してみた <お気に入り!>
ハイトカット表示モードに新モード 'L' を追加してみた https://t.co/pSuFhThUN9で設定したレベルを表示できる https://t.co/3DwfqzNEnl #Simutrans
— shingoushori (@shingoushori) 2017年11月5日
天空にバス停を配置しまくった結果、地上がさっぱり見えづらくなってしまいました。
仕方がないので、ハイトカット表示モードにしっぱなしにするようになったのです。
しかし、レベルの設定が使いにくいと思いました。カーソル位置で設定されても ...
ということで、プリセットできるようにしてみました。
・駅を作った時に、
ちょっと離れたところにある駅にも接続して作れるようにしてみた <!おすすめ!>
https://t.co/q7BY5tjKaT AI Playerが好き勝手作る時に,StationCoverage{範囲内|範囲x2内}にある駅に接続して作れるようにできた 期待したより混沌が解消されてない... #Simutrans
— shingoushori (@shingoushori) 2017年11月15日
ちょっと離れたところに作るために、わざわざ一時的に作り、壊す...
そのために、間にある建物や木を破壊せざるを得ない...
AI Playerが近いところに作りすぎてカオス...
これらを解決するには、やはり本体改造です。
苦戦したのが AI Player です。どうも、別プロセス?になるんでしょうか。
このため、本体で適当に追加した変数の変更を AI Player で読み取らせるために、
なにやら怪しい実装をやったような覚えがあります。
さらに、実際に AI Player に使わせたところ、間抜けなことが起きました。
近接した産業間の輸送用の路線が作られた時、同一バス停を結ぶ路線となり、
さっぱり運転されない!そして、そのまま破産してしまいました ...
・AI Player を眺めていたら、そのうちにセーブデータが読み込めなくなった件
についての応急処置
sqai の persistent とかいうのが、大きくなりすぎたらしい
— shingoushori (@shingoushori) 2017年12月12日
試しに xml データの CDATA の中身を空にしたところ、読み込めはした
だから本体改造し、文字数が2048を超えた時は、中身が空であるとしてスルーさせるようにしてみた persistentってなんだろう
skip "loadsave_t::rdwr_str() string too long" · shingoushori/simutrans@de85c83 · GitHub
AI Player だけじゃない、何か別のところの問題も直せるような気がしないでもないです。
そういうケースが他に見つかっていません。
他のセーブデータのロードでのエラーも拾っていきたいところです。
=======================================================
[我流 バスの追い越し拡張 現況 ...]
本当は、ひめしさんのOTRPatchのマージ → 自リポジトリでの細々とした保持を狙っていました。
が、GitHubの機能がよくわからなかったので、挫折しています。
とりあえず、回り道として我流でちょっと追い越し条件の緩和をやってみています。
我流 バスの追い越し拡張 現況 ... https://t.co/6vxS2dxb1r #Simutrans
— shingoushori (@shingoushori) 2017年12月14日
[追い越し条件の拡張骨子]
— shingoushori (@shingoushori) 2017年12月10日
(1) 追い越し終了地点に他のバスがいる場合、そのバスの先を終了地点にできないか検討させる
(2) 交差点があった場合、その1マス前の接続が1方向のみ(=進入禁止看板がある のつもり)の場合、交差点を終了地点とする
あー、これは難しい。実は、追い越しが必要になるプレイを全くしていませんでした。
だから、新しいプレイスタイルを模索し、新しいマップを用意するところからやっています。
新しいマップが形になってくると嬉しいですね!
しかも、新しいマップの方が一応たくましくなっている分、楽しいんだと思う、
うん、しょうがない。
=======================================================
[さて]
どうでしょう、本体改造。
どれもちょっとした改造ですが、結構便利そうじゃないでしょうか。
まだまだ改造のしどころがありそうじゃないでしょうか、Simutrans。
ちょっとした改造に抑えるためには、色々と諦める必要はあります。
ボタンで操作したい!
→ 処理本体で苦戦した後で、GUIでもう1ラウンド苦戦したくない ... であるとか。
そこは柔軟に、やりやすい方法をソースコードと相談してもいいと思います。
印象的だったのが、マーカーの便利さです。
不格好ですが、うまく表示を制御することも含めて考えるのも、面白いのではないでしょうか。
ドイツ語混じりで意味が取りづらく苦戦したり、
なにより私はテキストエディタ ( macでmiを用いています )で無理やりやっているので、
頭を抱えることも多いです、正直。GitHubもよくわかりません、正直!
とはいえ、まあ、なんとかできています。動くと楽しいですよ!
動かなくても、変な表示も楽しいですよ! 異常終了も、うん、まぁ、荒ぶれる!
皆さんも是非改造してください!
期待しています。
ありがとうございました。