2024年 02月 25日

Studio One の MIDI で相対値を扱う

Studio One の MIDI デバイス設定は相対メッセージ (1 と -1 =127 だけ扱う) が、なぜか GUI からは設定できない。しかし対応はしている。

.surface.xml を編集するとできるらしい

ヘルプから 「設定フォルダーを開く」すると C:\Users\[User]\AppData\Roaming\PreSonus\Studio One 6 が開く。User Devices 以下にファイルができる。ただ Studio One は終了時に設定ファイルを書きこむようなので、一度設定したら終了しないとファイルが見つからない。

type="knob"type="relative" にする。方向が逆という場合、子要素になっている MidiMessageoptionsreversed を指定する。

GUI上もそれっぽいノブが表示されるようになる。

ref. https://forums.presonus.com/viewtopic.php?p=218622#p218622

2024年 02月 18日

ウェブページ(JavaScript)からDAWへのノート入力

ウェブページ上からDAWへ簡単にノート入力できないかというのを考えた。結局 Web MIDI API でできた。わかってから検索すると同様のことをしている人も見つかる。

クリップボードは使えるか

MIDI をコピペする仕様ってあるのだろうか? ウェブ上からコピーできたら便利ではないか → 以下の理由で無理

  • コピペする仕様はなさそう
  • MIDI ファイルとしてコピーしてもトラックにペーストする形で使い勝手がよくない
  • そもそも Web Clipboard API は任意のデータ型は扱えない

MIDI デバイス

Web MIDI API があるので、JavaScript が仮想的にMIDIキーボードとして振舞えば入力できそう。ソフトウェア間のMIDIメッセージのやりとりなので、中継する仮想MIDIデバイスが必要になる。

Mac の場合は仮想 MIDI デバイスが OS 組込みでできるのに対し、Windows にそういった機能はない。

Ableton がいいドキュメントを出している。ここで紹介されている loopMIDI を使うと Windows でも仮想MIDIデバイスをつくれる。

Web MIDI API を使いブラウザから DAW へ入力を行う

Web MIDI API 自体はかなり使うのが簡単で不安になる。適当に出力可能なMIDIポートすべてにメッセージを投げつけるなら以下のようにしてできる。

async function midiDeviceSend(notes) {
	function noteOn(note, velocity) {
		return [0x90, note, velocity];
	}

	function noteOff(note) {
		return [0x80, note, 0];
	}

	const midi = await navigator.requestMIDIAccess();
	const outputs = midi.outputs;

	if (outputs.size === 0) {
		console.log('no output devices are found');
		return;
	}

	for (let output of outputs.values()) {
		console.log(output);
		for (let note of notes) {
			output.send(noteOn(note, 100));
			output.send(noteOff(note), window.performance.now() + 500);
		}
	}
}

なおページをリロードしたりする際に接続されている全MIDIチャンネルに all note off とかが送られるみたい。

2024年 02月 15日

UAC-232 は1台のPCに複数接続はできない

ZOOM ズーム USBオーディオインターフェース 2イン/2アウト32bitフロート入力対応 2023年発売 UAC-232 - ZOOM(ズーム)

ZOOM(ズーム)

5.0 / 5.0


ZOOM UAC-232 を買って気に入って使っている。ただ、入力が2チャンネルしかない。今のところ必要はないが、もし複数ある場合接続したらどうなるのだろうか、と思った。

取説などには複数台繋いだ場合の挙動についての記載はなかった。結局問合せたところ、同一のPCに複数台接続するのは想定されておらず、Mix Control は複数台の UAC-232 を同時に認識できない仕様とのことだった。

2024年 02月 14日

ギターはじめた

ちょうど1年前からギターの練習をしている。別の日記つくって記録している

https://itisnevertoolatetolearn.hatenadiary.jp/

関連してつくったもの

100万回ぐらい再発明されていると思うけど、いまいちウェブ上で使えるこれだというのがないので自分でかいたやつ

  • Lookup chord from fretboard
    • 指板ポジションからコード求めるやつ
    • スケールをオーバーレイさせて、同じ構成音で別のおさえかた探すときにも使ってる
  • 指板のボックスポジション一覧
    • CAGEDの各ポジション覚える用。なんか拾ったPDFを印刷していたが、他のパターンが欲しくなったのでつくった。
    • ボックスは覚えたのでほぼ使ってない
  • Lookup scale from notes or chord
    • コードか構成音からどのスケールか推定するやつ
    • キーがよくわからんとき、いろいろ情報量増やして推定できるようにつくった
    • 進行を入力すると度数表記で出すので、この数字をググると似た進行があるかわかる

チェルブ Cherub 充電式クリップチューナー 何度でも充電可能 USB Type-C充電 見やすいディスプレイ 複数のチューニングモード ウクレレやベースモードも搭載 コンパクトサイズ CPSチューニング搭載 オートON機能搭載 自動パワーオフ機能 WST-645 - Cherub

Cherub

5.0 / 5.0

2024年 01月 25日

ZOOM UAC-232 買った

ZOOM ズーム USBオーディオインターフェース 2イン/2アウト32bitフロート入力対応 2023年発売 UAC-232 - ZOOM(ズーム)

ZOOM(ズーム)

5.0 / 5.0

ミキサーダイアグラム https://zoomcorp.com/manuals/uac-232-ja/image/UAC-232_diagram.svg

入力が Dual ADC でダイナミックレンジが非常に広くとられており、さらに32bit float にAD変換することで入力のクリッピングという概念はほぼなくなる、というもの。最大入力レベルがあるのでクリッピングが完全になくなるわけではないし、SNRを考えればあまり小さな信号も入力できない。しかし、実際のマイクやライン入力に対しては十分なので、録音したものを、あとからなんとかできる範囲はかなり広がる。

こういう変なものにしては意外と値段が安いので買ってしまった。ちょいちょい無駄にオーディオインターフェイス買ってしまう。

いじれるレベルの一覧

INPUT から OUTPUT まででいじれる範囲のメモ。32bit float の場合 USB 入力に関してはどこでいじっても(録音後にいじっても)デジタルなので気にする必要はない。スペック上、入力換算ノイズが-127dBuらしいので、これよりも低ノイズのアナログアンプでなければ前段に繋いでもSNRの向上もない 。とにかく普通のマイクなら直接繋げってこと。

MUSIC モード時 (各入力ソースが個別にUSB入力になり、ダイレクトモニターもチャンネルごとに分離)

1. 入力レベル (デジタル) → Mix Control の左側のやつ。Mix Control の波形から後に影響。USB 入力に関係するのはここだけ。
2. 出力レベル (デジタル) → Mix Control の Level ノブ。ダイレクトモニターの出力に影響する。上げすぎると出力がクリッピングする。
3. 出力レベル (アナログ) → 本体の OUTPUT ノブ。OUPUT 端子の出力電圧を制限する形で働く。フルスケールが 0dBFS 時に +18dBu (=6.153V)

STREAMING モード時 (入力信号がミックスされてUSB入力になる。ダイレクトモニターもミックス結果を聞く)

1. 入力レベル (デジタル) → Mix Control の左側のやつ。Mix Control の波形から後に影響。
2. ミックスレベル (デジタル) → Mix Control の右側のやつ。実質的には入力レベルとやってることは変わらないが、Mic Control で見れる波形に影響しない。USB 入力に関係するのはここまで
3. 出力レベル (アナログ) → 本体の OUTPUT ノブ。OUPUT 端子の出力電圧を制限する形で働く。フルスケールが 0dBFS 時に +18dBu (=6.153V)

出力

追記: ホワイトノイズは接続していない入力側から発生しているようで、Mix Control で接続していないチャンネルのレベルを最小にしてやれば無音ぐらいまでさがることがわかった。

なので以下書いてあることは割とどうでもよく、セオリー通りで以下のようにすればいい

  • Mix Control のレベルはクリップしないぐらいまで安全を見て下げる
  • OUPUT ボリュームは聞きやすいぐらいまで上げる

ダイレクトモニターに関して、ボリュームをどう設定するか問題がある。

本体の OUPUT ノブはまわしきるとホワイトノイズが結構ある。このOUTPUTはDA後、出力直前のアナログボリュームだと思うが出力ゲインが高すぎるのか、DAのノイズ性能なのかよくわからない。 この OUTPUT ボリュームは最大値(+18dBu)からどれぐらい減らすかというものなので、クリッピングという概念はない。

一方、Mix Control で Level を最大にしても、これはデジタル補正なので、ホワイトノイズはほぼ増えない。しかし DA 前のレベルなので、上げすぎて 0dBFS を超えれば、DAでクリップしてしまう。

よって、Mix Control の Level を優先して上げることでSNRを稼ぎ、本体のOUPUTボリュームを適切に設定するということになる。とはいえモニターのホワイトノイズを気にしないなら Mix Control の Level は下げ気味にして、素直にOUTPUTボリュームの調整だけでもいい。

OBS で 32bit float 録音して DaVinci Resolve へ

(Windows 11)

とりえあえず出力フォーマットは 32bit float にする必要がある。

  • 録画フォーマット .mkv
  • 映像エンコーダ NVIDIA NVENC AV1
  • 音声エンコーダ FFmpeg PCM (32-bit float)
  • 音声トラックを必要なだけ選択

としている。これで DaVinci Resolve はマルチトラックを認識してくれるし、32bit float も正しく扱ってくれる。

この状態で「グローバル音声デバイス」で「2-ZOOM UAC-232 Audio」を設定して、録音してみたところクリップしてしまった。OBS 上で表示されるレベルメータも0dBでクリップしている様子が見える。Windows が悪いっぽい?


obs-asio というプラグインを別途入れて、ASIO で入力するように設定すると、クリップせずに正しく扱えるようになった。

2023年 12月 04日

M1 MacBook Air を買った

Windows ラップトップをしばらく探していたがThinkpadが不良だった件が尾をひき、選択肢としては DELL XPS ぐらいしかないがこれもまともなスペックだとかなり高価で購入に踏みきれずにいた。

手元にある MacBook はすべて修理不可レベルに古い機種となっており、しかも一番直近で買った (MacBook Pro Retina Late 2013 なのでいうて10年前の) ものはバッテリーが膨張してキーボードが打ちにくいレベルであった。

ということでとりあえずラップトップが1台もないのは困るので、現行 MacBook の最安である M1 MacBook Air にしてみた。M3 まで出てるのにいまさらという気もするが、それほど必要性が高いわけでもないし一旦これでいいのではないかという気持ち。

スペックはメモリを16GBにしたがSSDは256GB。512GB は欲しかったがなんとかなるだろう……

普通にオンラインの Apple Store で買ったが、ものすごく細かいところが作りこまれてて関心した。

  • 配送: 届きそうな当日になると SMS でメッセージがくる (配送はヤマト運輸だけど、ステータスを Apple 側でトラッキングする実装があるのだろう……)
  • 梱包: 開け口の封がカッターなどがいらないようになっていた
  • 内部ラップ: 本体が入っている白い箱はフィルムで覆われているが、これも開けやすいようになっていた (前から?)


届いでちょっとあせったのは MagSafe がなくて Type-C ポート2つのみというところで、そんなの事前にわかっていただろと言われそうだが、なぜか MagSafe はあると思いこんでいた。

2023年 11月 01日



関連エントリー (画像)

2023年 10月 27日

PowerShell での Junction の作りかた

PowerShell では mklink がない。cmd を経由してもいいが以下でできる。特に管理者権限はいらない。

New-Item -Path D:\Junction -ItemType Junction -Value C:\Path\To\Target

備考: Explorer 上ではショートカットみたいなアイコンがついて区別される。Junction はディレクトリ単位でしかできない。

2023年 10月 11日




関連エントリー (画像)

2023年 09月 13日






関連エントリー (画像)