SVX日記
2004-12-29(Wed) 東京ミレナリオ、ミレナイヨ
年の瀬の恒例行事となりつつある「東京ミレナリオ」を見に行く。カミさんはオイラより1日休みが遅いので、仕事が終わったあたりで都内で合流する予定。よって当然(!?)、秋葉で買い物をする時間を確保するオイラである。
……が!! なんか雪がガッツリと降ってるんですが……見事なまでの雪景色。駅なんか「A列車で行こう」シリーズの冬景色そのままになっております……などと考えるオイラはオカシな人なのだろうか。そういえば、あのゲームは雪で列車が遅延したりする要素はなかったなぁ。今日の常磐線は大丈夫なのだろうか。
などという心配をよそに、順調に秋葉原へ。最近はそんなに買うものはないので、例によって買い物はちょっぴり。サクサク終わらせ、カミさんと合流「クアアイナ」というハワイ系ハンバーガ屋に向かう。このハンバーガ屋、ハンバーガといえどファーストフードではなくて結構シッカリと食わせてくれる。肉もガツーンとマッシブでウマい。ポテトもサクサクである。値段も倍ぐらいするのでマメには行けないのだが、ま、それはそうクリスマスということで。
で、地下鉄の改札を出たあたりでイキナリ「今日のミレナリオは荒天のため中止」という張り紙を発見。ガガーン。中止かよー、すいよー、もくよー……。それほど気合を入れているワケでもないので、それほどショックではないのだが、せっかくきたのにそりゃないべ。すっかり雪も上がっているし、観に来たっぽい人々も結構いるのだが、中止は中止。しかたなく、適当にデジカメで写真を撮る。
しかしこのミレナリオ、毎年同じようなイベントでよいのだろうか? オイラ的には、音楽にあわせて点滅したり、電球が部分的に動いたり、すべてLEDにしてみたり……という様な変化を求めてしまうのですが。毎年そんなうすっぺらなイベントでいいのかッ!?
秋月電子通商 | |||
---|---|---|---|
シリアルEEPROM AT24C1024 | \700 | x2 | \1,400 |
シリアルEEPROM AT24C256 | \160 | x2 | \320 |
単3x4電池ホルダ | \150 | ||
携帯電話用イヤホンマイク | \100 | ||
トライアック万能調光器キット(35A) | \1,000 | ||
\2,970 |
2016-12-29(Thu) mp3のタグの文字化けをなんとかする
ここのところ、起き抜けと、寝しなに、ミニコンポで音楽のある生活を送っている。基本的にDLNAサーバに放り込んでから聴いているのだが、いまだ手持ちのCDのすべてを放り込めていない。とはいえ、以前に自作したflacのタグ編集ツールにより、放り込み作業自体はとても快適に進められている。
最近の問題はmp3だ。過去に借りたCDなどをmp3化したものが少しあるのだが、既存のタグを修正したいのに、できないのだ。いや、厳密にはLinuxにはid3v2というタグ編集ツールがあるのだが、それでタグ付けすると日本語が文字化けしてしまうのだ。
・mp3のタグはID3と呼ばれる
・ID3には、v1とv2がある
・ID3v1は固定長で128バイト、ファイル末尾に位置、文字エンコーディングの規定なし
・ID3v2は可変長で、ファイル先頭に位置
・ID3v2には、ID3v2.2、ID3v2.3、ID3v2.4がある
・ID3v2.2は、UTF-16が使用可能
・ID3v2.3は、UTF-16が使用可能、ID3v2.2と互換性がないが、最も普及している
・ID3v2.4は、UTF-8も使用可能、普及していないらしい
ID3v2からは、規格上キチンと日本語に対応しているはずなのだが、なぜか文字化けしてしまう。id3v2というタグ編集ツールの問題を疑い、適当に日本語を付与し、バイナリダンプしてみると、中身はUTF-8で記録されている。パッと見、ヘンではない。
なるほど、ID3v2.4だから、コンポ側が対応していないせいで文字化けしているのか、と思ったら、ID3ヘッダはID3v2.3を示していた。その場合、UTF-16である必要がある。ダメじゃん。つまり、アレだ。元が海外のツールだから、文字エンコーディングに関してロクにテストしておらず、バグっている、というわけなのだな。
どうも、何をやってもダメそうなので、ソースコードを修正してやろうかとも思ったのだが、Cを読むのがダルい。Rubyのライブラリがあるらしいので、自作しようと思ったが、ライブラリの導入が面倒くさそう。うーむ、ID3v2.2の仕様書をちょっと見た限りでは、さほど複雑そうでもないので、ぜんぶ自分で実装してしまうか。
やりたいことは、既存のmp3ファイルの存在するフォルダから、曲目リストを作成することと、修正した曲目リストから、既存のmp3ファイルのタグを付け直すこと。実は、前者は「mget」、後者は「tagmp3」として既に完成しているので、そいつが呼んでいるバグ付きの「id3v2」と、ほぼ同等の動作をしバグのない「mp3id3」というツールを実装すればいい。
というわけで実装完了。実は、手持ちのmp3の多くは、WindowsのiTunesでエンコードしたものがほとんどであり、それらのタグはID3v2.2で記録されていたので、その読み出しにも対応させた。ID長などが変わっていてマジで互換性がない。まぁ、策定から時間が経っているとはいえ、先が見えないアホが規格を作るとアホなことになるという見本だな、これは。
$ ls -l
-rw-r--r-- 1 user user 725343 6月 9 2007 '1-01 サーカスの来た日.mp3'
-rw-r--r-- 1 user user 3788568 6月 9 2007 '1-02 サンフランシスコ.mp3'
-rw-r--r-- 1 user user 4763695 6月 9 2007 '1-03 踊るダメ人間.mp3'
-rw-r--r-- 1 user user 3712079 6月 9 2007 '1-04 日本印度化計画.mp3'
-rw-r--r-- 1 user user 1421263 6月 9 2007 '1-05 じーさんはいい塩梅.mp3'
-rw-r--r-- 1 user user 2800086 6月 9 2007 '1-06 マタンゴ.mp3'
-rw-r--r-- 1 user user 3972468 6月 9 2007 '1-07 詩人オウムの世界.mp3'
-rw-r--r-- 1 user user 3472591 6月 9 2007 '1-08 元祖高木ブー伝説.mp3'
-rw-r--r-- 1 user user 4807150 6月 9 2007 '1-09 生きてあげようかな.mp3'
-rw-r--r-- 1 user user 4565577 6月 9 2007 '1-10 サボテンとバントライン.mp3'
-rw-r--r-- 1 user user 5641380 6月 9 2007 '1-11 これでいいのだ.mp3'
-rw-r--r-- 1 user user 4562279 6月 9 2007 '1-12 僕の宗教へようこそ ~Welcome to my religi.mp3'
-rw-r--r-- 1 user user 4863974 6月 9 2007 '1-13 キノコパワー.mp3'
-rw-r--r-- 1 user user 5333356 6月 9 2007 '1-14 戦え! 何を!_ 人生を!.mp3'
-rw-r--r-- 1 user user 6772376 6月 9 2007 '1-15 月とテブクロ.mp3'
$ mget . > .info
$ viorg .info
$ diff .info.org .info
1c1
< _ALBUM_: 復活究極ベスト "大公式" [Disc 1]
---
> _ALBUM_: 81:復活究極ベスト "大公式" [Disc 1]
4c4
< _GENRE_: (9)
---
> _GENRE_: Rock
$ cat .info | tagmp3
$ mp3id3 -l *.mp3
id3v2 tag info for 1-01 サーカスの来た日.mp3:
TPE1: 筋肉少女帯
TALB: 81:復活究極ベスト 大公式 [Disc 1]
TIT2: 01:サーカスの来た日
TCON: Rock
TYER: 1989
TRCK: 1/15
id3v2 tag info for 1-02 サンフランシスコ.mp3:
TPE1: 筋肉少女帯
TALB: 81:復活究極ベスト 大公式 [Disc 1]
TIT2: 02:サンフランシスコ
TCON: Rock
TYER: 1989
TRCK: 2/15
:
$ rm -f *.org
$ find . -name "*.mp3" | sort | sed "s/^/mpg123 \"/" | sed "s/$/\"/" | sh
Playing MPEG stream 1 of 1: 1-01 サーカスの来た日.mp3 ...
MPEG 1.0 layer III, 128 kbit/s, 44100 Hz joint-stereo
Title: 01:サーカスの来た日 Artist: 筋肉少女帯
Album: 81:復活究極ベスト 大公式 [Disc 1]
Year: 1989 Genre: Rock
:
パッケージを置いておく。
「cget」は、先の「mget」と似ているが、ローカルのmp3ファイルからではなく、CDのトラック情報を元に、外部のCDのデータベース「gracenote」から曲目リストを得るもの。ただし、利用にはgracenoteの開発者登録が必要で、あらかじめcget.confにクライアントIDを設定しておく必要がある。
$ cget > .info
$ cat .info
_#TOC_: 150 12165 42912 97717 108597 154367 178877 215317 245492
_ALBUM_: データイースト・ゲーム・ミュージック
_ARTIST_: Data East
_GENRE_: Soundtrack
カルノフ
チェルノブ -戦う人間発電所-
サイコニクス・オスカー
ダーウィン 4078 (アレンジ・バージョン)
スーパー・リアル・ダーウィン
ヘビー・バレル
ポケット・ギャル
ワンダー・プラネット
$ cdparanoia -B
cdparanoia III release 10.2 (September 11, 2008)
Ripping from sector 0 (track 1 [0:00.00])
to sector 245341 (track 8 [6:42.24])
outputting to track01.cdda.wav
(== PROGRESS == [ | 012014 00 ] == :^D * ==)
:
Done.
$ eject
$ flac -8 *
flac 1.3.1, Copyright (C) 2000-2009 Josh Coalson, 2011-2014 Xiph.Org Foundation
flac comes with ABSOLUTELY NO WARRANTY. This is free software, and you are
welcome to redistribute it under certain conditions. Type `flac' for details.
track01.cdda.wav: wrote 16148406 bytes, ratio=0.571
:
rm -f *.tag; metaflac --list *.flac | grep -i comment | less
$ viorg .info
$ diff .info.org .info
3,5c3,6
< _ALBUM_: データイースト・ゲーム・ミュージック
< _ARTIST_: Data East
< _GENRE_: Soundtrack
---
> _ALBUM_: 01:データイースト・ゲーム・ミュージック
> _ARTIST_: DATA EAST
> _DATE_: 1988
> _GENRE_: Game Music
$ cat .info | tagflac
余談だが、ちょっと前に「ギャラクティックストーム」というタイトーのゲームのサウンドトラックを購入した。作曲はダライアスやニンジャウォリアーズのOGR氏だし、やたらネット上の評価も高いのだが、未プレイのゲームの曲ってのもなぁ、と躊躇していた。んが、Amazonでmp3形式で配信しているのを知り、先日、製作したPC用スピーカで試聴してみると、意表を突く節回しが心地よく、未プレイであることなどどうでもよくなってしまった。
以前のAmazonのmp3配信は、妙な形式でのダウンロードを強要され、mp3を取り出すのにひと手間が必要だったような気がするが、今はシンプルにzipでまとめられたmp3をダウンロードできるし、ブラウザで直接に聴くことまでできて、なにひとつ不満はない。これに上記の「既存のmp3ファイルのタグを付け直せるツール」が加わったことで、最強の環境になったと言えよう。
もうひとついうと「ギャラクティックストーム」の「オリジナルサウンドトラック」の購入は、アレンジ盤である「ギャラクティックストーム~瞳の記憶~」の購入の布石だったりする。なにせ、似たような位置関係にある「メタルブラック」のアレンジ盤である「メタルブラック-The-First-」は、気がつくともう10年以上も聴いているお気に入りだったりするからな……のだが、なぜかAmazonでは配信されていない。
moraでなら配信されているのだが……aac形式なんだよなぁ。いや、別にaacでもいいんだが、それは、次に「aacのタグの付け直しツール」も作らねばならんということを意味するわけで……とほほ。
2020-12-29(Tue) 2020年の年の瀬
2021-12-29(Wed) トルクレンチを試す、タワーバーを外してみる、uWSGIを動かす
実は、アレコレの工具と一緒に、トルクレンチも購入していたのであった。ロードスターのホイール・ナット締付けトルクである108〜147(Nm)を上限に、できるだけ下の方までと欲張ったら上記の製品になった。どうやら自転車用のようであるが。
トルクレンチという存在はだいぶ前から知っていたが、使ったことがなく、使ってみたかったので買ってみた。21mmソケットも手に入ったので、イザ、既に固く締まっているホイールナットに掛けて40Nmで締めてみよう……と、思ったら、トルクレンチのハンドルがホイールの凸凹に干渉してしまう。ソケットのエクステンションって、意外と必要なんだな。ソケットレンチセットを買っておいてよかった。では、改めて。
「コキンッ」。なるほど、こういう感触なのか。わかりやすい。70Nmでも締めてみる。「コキンッ」。70Nmでも、そう大きな力じゃないんだな。説明書に「下限付近だとクリック感が小さい」と、あったので、7Nmでも試してみるが、十分なクリック感である。へー。そのうち、バネ秤でも手配して、簡易に校正でもしてみたいもんである。
ソケットのエクステンションなしだと周囲に当たりがち、とか、ナットを落としたらすごく面倒そう、とか、整備書はクリアファイルに入れておくといい、とか、クリアファイルに付箋を貼っておくとメモできていい、とか、部品の向きを保持するならラベルを貼るといい、とか、ラベルには養生テープと油性ペンがいい、とか、である。
と、ここで大きく話が替わるが、もしかしたら、仕事でNGINXとPythonを組み合わせて使うかもしれない、という流れがあるので、ちょっとお試ししてみることにした。基本、ApacheとRuby派なので、どっちもアウェーである。
まぁ、しかし、勝手がわからない。NGINXとPythonを組み合わせるということは、NGINXとuWSGIとPythonとFlaskを組み合わせるということと同義だ。特にuWSGIがわからない。自分は、できるだけFedoraのオフィシャルパッケージを使いたいし、それを意図されたとおりに使いたい主義なので、そのへんのウェブ上のノウハウは役に立たず、パッケージャの意図を読み取る必要がある。Emperorモードってなんなんだよ。
なかなか理解が進まなかった理由が、uWSGIの設定が多くて意味不明なこと、UNIXドメインソケットでつなぐと、通信の中身を知る方法がなく、切り分けが進まないこと、WSGIの仕様がよくわからず、telnet接続して試せないこと、あたりだ。TCPでつなぐことも可能だったので、まずはそれで進めたところ、tcpdump等で切り分けが進んで、どうにか全貌を理解することができた。結局、/etc/uwsgi.dの下に置くwsgi.iniの内容は以下で済んだ。
[uwsgi]
plugin = python3
chdir = /var/lib/uwsgi
wsgi-file = wsgi.py
callable = app
socket = /run/uwsgi/wsgi.sock
chmod-socket = 666
logto = /var/lib/pv/log/uwsgi/%n.log
というようなことも、間違いなく動作するスケルトンコンテナにまとめてしまえば、瞬時に理解できる。というわけで、コンテナの定義ファイル一式を置いておく。
2024-12-29(Sun) ヴァリアブル・ジョイスティック「JS-2V」を製作
さて、しばらく前にセイミツの業務用アーケードスペックのジョイスティックとボタンを購入したのだが、ガワの手配に悩んでいた。金属ではなく木材がいい。手が冷えるのはイヤだし、加工もラクなので。で、昨日、ホームセンタで材料を買ってきた。
手頃なサイズでフタ付きの木箱が欲しかったのだが、そんなに都合の良いものはなかった。しかたなく、手頃なサイズ、300x200のMDFパネルを天板にすることにし、足として端材をくっつけることにした。端材の幅は45。ジョイスティックのメカ部の格納には40チョイの高さが必要なので45はちょうどいい。178円と58円。仮組み用でも構わない値段だ。
まずは足を付ける。端材の両端を150で落とし3分割。MDFパネルの裏に両面テープで位置決めして、皿タッピングで固定。寿司下駄ができあがった。元の端材の加工精度は高く、ほぼガタ付きはない。これ、普通にイケるなぁ。
自分の指の配置に合わせボタンを取り付ける穴を空ける。ここでもΦ29のホールソーを使うが、必要なのはΦ30。仕方ないのでヤスリとペーパで穴を拡げる。それなりに大変だったが、どうにか取り付けられた。思った以上にいい仕上がりだ。こういう工作も上達したなぁ。
次は乗っ取り工作。ちょうど表面が加水分解を起こして腐りかけていたゲームパッドがあったのでそれを使うことにする。BUFFALOのBSGP1601BKというもの。5年チョイ前に買ったもののようだが、なぜ買ったのか覚えていない。
バラすと基板は2枚。面倒なことに、乗っ取りたい十字とトリガの接点は、メイン基板じゃない方にある。面倒くさいので、適当なタッパーの中に放り込んでUSBの配線をやり直しつつ、グラウンドを探し、十字と3つのトリガ、合わせて8本の線を引き出す。しかし、またもやパターン中には、各接点の途中にハンダを乗せられるパッドがある。乗っ取ってくれといわんばかり。なんなの、これ? 法律で決まっているの?
本体側に戻る。ピンヘッダで接続するために、それを固定する基板が必要なので、だいぶ前に作った基板を流用する。元はFT245AM用だが、もう使うことはないだろう。木材にタップを切ってネジで止める。そこからは空中配線。ヒドい手抜きっちゃー、手抜きだが、実際のアーケードゲームも、パネルを開けたらこんな感じになってるはずなので、気にしない。
さて、テスト、なのだが、Linuxの場合、コントロールパネルにジョイスティックの項目がない。が、dnfで探したら、ソレっぽいのがスグに見つかった。「jstest-gtk」と、そのものズバリだ。もちろん、動作はバッチグー。完成。やっほー。