ちょうど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

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

ZOOM(ズーム)

5.0 / 5.0


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

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

  1. トップ
  2. tech
  3. UAC-232 は1台のPCに複数接続はできない

ウェブページ上から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 とかが送られるみたい。

  1. トップ
  2. tech
  3. ウェブページ(JavaScript)からDAWへのノート入力

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

  1. トップ
  2. tech
  3. Studio One の MIDI で相対値を扱う