問題タブ [midi-interface]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
521 参照

midi - すべてのトラック情報を再送信する Mackie HUI MIDI メッセージ? プロツール

PT がすべてのトラック情報 (vol/mute/pan/automation state/track-name) を再送信するようにトリガーする HUI MIDI 仕様を介して Pro Tools を送信する MIDI メッセージを探しています。

HUI 仕様は、完全には公開されていません (ただし、theageman が一部を公開しています)。このような MIDI メッセージが存在するかどうか知っている人はいますか? 現在選択されているトラックの現在のすべてのトラック情報を再送信するようにプロ ツールをトリガーするメッセージを送信したいと考えています。

0 投票する
0 に答える
1047 参照

macos - CoreMIDI を使用して Mac で安定した MIDI クロックを送信する

私は小さなプログラムに取り組んでおり、ジッタリングしている着信 MIDI クロックを安定したビートに「変換」しています。ジッタリングする MIDI クロックがひどいトレモロ サウンドを生成します。

アイデアは、着信 MIDI クロックを「聞き取り」、テンポを決定した後、安定した MIDI クロックを仮想 IAC デバイスに送信して、DAW (NI マシン) を同じ IAC デバイスに同期できるようにすることです。着信 MIDI は KORG Electribe からのものなので、MIDI ケーブルにこだわっています。Komplete Audio 6 を使用して MIDI クロックを受信して​​います。

最初の部分 (テンポを聞いて決定する) は既にカバーされていますが、そのテンポの安定したクロックを生成する必要があります。

優先度の高いスレッドを使用して midi クロックを送信しようとしました。以下のテスト ルーチンでは、テンポが 119.8 から 120.2 の間で変動します。

このルーチンで何か間違ったことをしましたか、それとも別の戦略を使用する必要がありますか? どんな助けでも大歓迎です。

よろしく、 ロブ

アップデート

うまくいく戦略を考え出した。以下のコードは、私のシステムで完璧な結果をもたらします。バンドとのギグですでに使用しましたが、問題なく動作しました。

私にとっての解決策は次のとおりです。

  1. 単一のクロックを送信する代わりに、24 個のクロックでパケットリストを送信する
  2. 最初のクロックで現在のマッチタイムを使用してタイムスタンプのみを設定し、計算されたティック数でタイムスタンプをインクリメントし続けます。(現在のマッチタイムが packetlist の最初の各パケットに設定されている場合、結果は安定しませんでした!)
  3. 計算されたティックをマイクロ秒に丸めます! これには驚きました.. 精度が高いほど良い結果が得られる.. しかし、ナノ秒の精度を使用すると、DAW (NI Maschine) の画面でテンポは安定していましたが、それでも「ジッター」サウンドがありました。これが CoreMidi、仮想 IAC デバイス、または NI マシンに関連しているかどうかはわかりません。

テンポが変化すると、まだいくつかの問題があります。テンポの変化はスムーズに送信されません...しかし、基本的な問題 (CoreMidi で安定したクロックを送信する方法) は解決されました。

更新
テンポの変更への対応を改善しました。

  1. MIDITimeStamp の固定値が mach_absolute_time() よりもはるかに進んでいる場合、パケット リストの送信を停止します。
  2. 24 クロックではなく 8 クロックのみで小さなパケット リストを送信する

私のシステムでは、テンポの変更はスムーズに送信され、遅延は最小限に抑えられますが、テンポを複数回変更した後、送信側の MIDI デバイスと生成された MIDI クロックをリッスンする DAW のビートに小さなオフセットが発生する可能性があります。

ライブ パフォーマンスでは、これは送信側の MIDI デバイスを使用する「ドラマー」が、サウンドを再び同期させるために、送信側のデバイスで停止と開始を実行する必要があることを意味します。私のバンドにとって、これは問題ではありません。急なストップ&スタートは効果抜群!

最適化されたコードの下。使いやすいようにクラスにラップしました。改善点があれば回答お願いします。


0 投票する
0 に答える
65 参照

c# - 読み込まれた Midi.Net DLL に関する問題

最近、作成したさまざまなアプリケーションでいくつかの問題が発生しています。これらのアプリケーションはすべて、Midi コントローラーを使用して MIDI ノートを照明デスクに送信します。この問題は、これらすべてのアプリケーションで同じです。

実行時にアプリケーションで作業しているときに、アプリケーション全体がフリーズすることがあります。警告メッセージは表示されず、デバッガーがポップアップして何が問題なのかを教えてくれません。MIDIノートを演奏したいときはいつも発生します。その時点で私にできる唯一のことは、マシン全体を再起動することですが、これはそれほど面白くありません。

アプリケーションがハングアップし、デバッグ情報が得られないため、Midi ノートの送信に使用する DLL に問題があること、または DLL の実装方法に問題があることは確かです。

以下のコードを投稿しました。誰かが私が間違っていることを教えていただければ幸いです。

これは、Midi を初期化するメインフォームのコードです。

initMidi() は Form_Load 関数内から呼び出されます。

Midi ノートを再生するコードは次のとおりです。

以下は、MidiTools クラス ファイル内のコードです。

Midi ライブラリ自体は、次のリンクからダウンロードされました: https://midi-dot-net.googlecode.com/files/midi-dot-net_src_1.0.5.zip

過去に、この問題を解決するために複数の方法を試しました。より大きな遅延を挿入しようとしましたが、リスト内のメッセージをキューに入れ、それらを1つずつ処理して、別のノートがまだ送信されている間にミディノートが再生するように求められないようにしましたが、どれも役に立ちませんでした.

98% のケースで動作しますが、たまにフリーズすることがあります。M-Audio Midisport コントローラーを使用しています。(http://www.m-audio.com/products/view/midisport-4x4-anniversary-edition)が、他のコントローラーでも発生しています。

したがって、どんな助けも大歓迎です。

よろしく、ケネス

0 投票する
0 に答える
252 参照

duplicates - 同じタイプの複数のデバイスを使用する場合の一貫性のない MIDI 命名

同じタイプのハードウェアの複数の USB MIDI デバイスを使用しようとすると、デバイスの名前付けのあいまいな動作に直面しています。これはハードウェア/システム/ドライバーに関連している可能性があるため、一般的な設定は次のとおりです。

  • ホスト: Windows 8.1 x64 (複数のマシンでテスト済み)
  • USB デバイス: 2x Livid Brain V2 (汎用の usb-midi インターフェイス)

2 つのデバイス (同じハードウェア、デバイス X および Y と呼びましょう) は、2 つの異なるファームウェア フレーバーでフラッシュされるため、MIDI 列挙では異なる名前で表示されます。デバイス X のみを接続すると、「Brain2」と表示され、デバイス Y のみを接続すると「Brain2B」と表示されます。これらは、MIDIINCAPS / MIDIOUTCAPS (winmm.dll) から取得した名前です。ここまでは順調ですね。

両方のデバイスを同時に接続するとすぐに問題が発生し、両方が(後者が接続された)同じ名前を取得するため、列挙が変更されます。

  • 最初に X、次に Y => 両方とも「Brain2B」という名前を取得します
  • 最初に Y、次に X => 両方とも「Brain2」という名前を取得します

ただし、デバイスにアクセスして使用することはできますが、それらを区別することはできません (これは基本的に、両方のデバイスで同じファームウェアを使用する場合と同じ開始位置です)。

誰かが私を正しい方向に向けることができれば幸いです。誰かが似たようなことに遭遇しましたか? これはシステム関連の問題でしょうか? (それともドライバーが悪いのでしょうか?) よろしくお願いします!


編集:

USB Device Tree Viewer (USBView に類似)というツールを使用して USB のプロパティを詳しく調べたところ、識別子が正しいことがわかりました。では、 winmm.dllはどのようにして midi 列挙を取得するのでしょうか - そこにバグがあるのでしょうか? (ありそうもない)


モリッツ

(ところで: 製造元のフォーラムの関連トピック/投稿は次のとおりです:リンク)

0 投票する
0 に答える
193 参照

c# - ユニバーサル Windows プラットフォームで名前を付けられる MIDI ポートを作成する方法は?

Universal Windows Platform (Anniversary Update on Windows 10) で名前を付けられる MIDI ポートを作成する方法は?

https://blogs.windows.com/buildingapps/2016/09/21/midi-enhancements-in-windows-10/#r5BB7v0LGxqUvY4g.97は、そのトピックに関する回答を提供していないようです。

0 投票する
1 に答える
720 参照

ios - EAAccessoryManager が MFI アクセサリを読み取らない

iOS用のMIDIインターフェースアクセサリと通信するアプリを作りたいと思っていました。MFI ライセンスのデバイス (iConnectMidi) を購入し、接続して、アプリの起動後に呼び出す簡単なプロジェクトを作成しましたが、[[EAAccessoryManager sharedAccessoryManager] connectedAccessories]アクセサリを読み込むことができませんでした。

0 投票する
1 に答える
946 参照

python - Python Pyo midi キーボード シミュレート

Python と Pyo を使ってシンセを開発したいと考えています。コンピューターのキーボードを MIDI キーボードとして使用してメロディーを演奏したいと考えています。

コンピューターのキーボードを MIDI キーボードに偽装するにはどうすればよいですか?

どうも