ショボvstシリーズ (2) – Sacchin

Sacchin 1.0.0.2 2009-02-19 (vst2.4, Windows) [download]

リミッタというかサチュレータというかディストーションというか。
正直テキトーすぎたので後で直す。

Gain: どれくらい突っ込むか
Threshold: 小=ゆるやかに全体が歪む/大=音が大きくなると急激に歪む

コンプとかマキシマイザみたいな動的な追従は一切しないです。

CHANGES
1.0.0.2: Gain最大+12dBから+24dBに変更; Gain初期値を0dBに変更
1.0.0.1: ノイズの原因の微妙な計算間違いを修正
1.0.0.0: 最初の版

BCM5722

テキトーにBCM5755なbrgphyと同じように認識するようにmiidevsとbrgphy.cを直してみた。それらしく起動したが症状は改善せず。
テキトーすぎたのでFreeBSD, OpenBSD, Linux のソースをあたってみる。
FreeBSDとOpenBSDは,BCM5722の識別だけして,特に処理はなし。
Linux (net/tg3.c) は,BCM5722 (とBCM5756) を識別した条件分岐があるが,他の ASIC BCM5755 その他系の TG3_FLG2_PHY_JITTER_BUG フラグを立てる部分を回避してるだけ。
TG3_FLG2_PHY_JITTER_BUG がある場合の処理は,NetBSD の brgphy.c でいうところの bcm5755_load_dspcode そのもので,これを回避しているということは,結局特別な処理は何もいらないっぽい。
うーん,調子が悪いのは別の原因か。

HP ProLiant ML110 G5 で NetBSD (その2)

ネットワークまわりがどうもひっかかる感じ。

$ dmesg | grep bge
bge0 at pci4 dev 0 function 0: Broadcom BCM5722 Gigabit Ethernet
bge0: interrupting at ioapic0 pin 17
bge0: ASIC BCM5755 C0 (0xa200), Ethernet address (略)
bge0: setting short Tx thresholds
ukphy0 at bge0 phy 1: Generic IEEE 802.3u media interface

こんなNIC。
適当なPCのターミナルからsshして cat で長いファイルを流すと,最初は順調だがフロー制御が入ったあたり(?)からガタガタに(間欠的に)なる。そしてたまに,

bge0: watchdog timeout -- resetting
bge0: block failed to stop: reg 0x1400, bit 0x00000002

こんなエラーを吐く。
よくみたらukphyじゃん…。これが悪い?
ちなみに,問題の起きていないML110G4 (NetBSD 4.0_STABLE) は,こんなかんじ。

$ dmesg | grep bge
bge0 at pci3 dev 0 function 0: Broadcom BCM5721 Gigabit Ethernet
bge0: interrupting at ioapic0 pin 17 (irq 12)
bge0: ASIC unknown BCM575x family (0x4201), Ethernet address (略)
bge0: setting short Tx thresholds
brgphy0 at bge0 phy 1: BCM5750 1000BASE-T media interface, rev. 0

vst作成メモ

サンプルのAGainを参考にして,

void EstMS::processReplacing(float** inputs, float** outputs, VstInt32 sampleFrames)
{
  float* in1  =  inputs[0];
  float* in2  =  inputs[1];
  float* out1 = outputs[0];
  float* out2 = outputs[1];

てな感じで,バッファのアドレスを取り出して,

  *out1 = (*in1 + *in2) * fGain;
  *out2 = (*in1 - *in2) * fGain;

という処理を,(各ポインタを加算しながらsampleFrames回)繰り返せばいいかと思ったが,うまくいかなかった。何故か2回通すとモノラルっぽくなる。けど,完全にモノラルでもない。

いろいろ試行錯誤した結果,どうやら入力と出力のバッファのアドレスが同じだったらしい。上の行で*out1に書き込んだ時点で*in1が上書きされていると。

わかってしまえば,「なあんだ」って話なんですがね…。

ショボvstシリーズ (1) – MS

EstMS 1.0.0.2 2009-02-19 (vst2.4, Windows) [download]

outL=inL+inR, outR=inL-inR って処理をするだけのプラグイン。
ルーティングめんどいので何かないかと思ったけど,探すより作った方が早そうなので作った。(あんまり早くなかったけど)

M/Sとか呼ばれてるけど,何の略かは知らない。

2回通すと元に戻るけど,振幅が2倍になってしまうのでゲインつけた。
ほとんど vstsdk のサンプルの AGain そのまんまともいう。

CHANGES
1.0.0.2: gcc/NetBSD でのクロス開発に移行(機能変更ナシ)
1.0.0.1: ちゃんと動いた版
1.0.0.0: 最初の版; MS Visual C++ を使う練習(非公開)