国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目次
MidiとWebmidiと正確には何ですか?
なぜこれをやりたいのですか?
どんなものを構(gòu)築できますか?
何を始める必要がありますか?
MIDIコントローラー
Webmidi対応ブラウザ
デスクトップ
モバイル /タブレット
こんにちは、webmidi
MIDIメッセージの解剖學
これがWebmidiとJavaScriptにどのように変換されるか
どんなハードウェアを使用できますか?
獨自のハードウェアを構(gòu)築できますか?
まとめ
ホームページ ウェブフロントエンド CSSチュートリアル Webmidiでつま先をハードウェアに浸します

Webmidiでつま先をハードウェアに浸します

Apr 13, 2025 am 10:30 AM

Webmidiでつま先をハードウェアに浸します

Webに先行する成熟したプロトコルを使用して、興味深いカスタム構(gòu)築のハードウェアとインターフェイスできるようにする、サポートされているブラウザAPIがあることをご存知ですか? MIDIとWebMidi APIを紹介し、JavaScriptとDOMの相対的な快適さを殘さずに、ハードウェアプログラミングの世界でブラウザの外に出て手を出すためのフロントエンド開発者がどのようにユニークな機會を提供するかを示しましょう。

MidiとWebmidiと正確には何ですか?

Midiは、楽器が互いに通信するために設計されたニッチなプロトコルです。 1983年に標準化され、今日まで音楽業(yè)界企業(yè)や代表者で構(gòu)成される組織によって維持されています。ある意味では、W3CがWeb標準を指示および保存する方法とは大きく異なりません。

WebMidi APIは、このプロトコルのブラウザベースの実裝であり、WebアプリケーションがMIDIを「発言」し、ユーザーのデバイスに接続される可能性のあるMIDI対応ハードウェアと通信できるようにします。

ミュージシャンではありませんか?心配しないで!電子楽器向けに設計されたこのシンプルなプロトコルを使用して、楽しく、インタラクティブで完全に非音楽的なものを構(gòu)築するために使用できることを非常に迅速に発見します。

なぜこれをやりたいのですか?

素晴らしい質(zhì)問。最短の答え:楽しいから!

その答えがあなたのために十分に満足していない場合、私はこれを提供します:物理的な世界と仮想世界の間の境界線にまたがるものを作成することは、私たちがほとんどの日々を費やして物事を構(gòu)築することは、異なる考え方の良い運動です。それは、創(chuàng)造的ないじくり回し、新しいユーザーインターフェイスとナビゲートするエクスペリエンスを検討し、作成する機會です。この種の遊び心のある探索は、脳のさまざまな部分を使用し、長距離の開発者をより良くするのに役立つと本當に思います。

どんなものを構(gòu)築できますか?

何を始める必要がありますか?

Webmidiの実験を開始するための前提條件は次のとおりです。

MIDIコントローラー

これは最も難しい部分かもしれません。実験するために、MIDI対応のハードウェアを調(diào)達する必要があります。 Craigslist、Amazon、またはAliexpressで安いものを見つけることができるかもしれません。または、あなたが本當に野心的で、Arduinoを利用できる場合は、獨自のものを作成できます(この記事の最後を參照してください。

Webmidi対応ブラウザ

このブラウザサポートデータはCaniuseからのもので、詳細があります。數(shù)字は、ブラウザがそのバージョン以降の機能をサポートしていることを示しています。

デスクトップ

モバイル /タブレット

この記事の執(zhí)筆時點では、Caniuse.comによると、ブラウザの約73%がサポートされていますが、大部分はChromiumによって行われています。 Chromiumベースのブラウザは、電子アプリと新しいクロムベースのMicrosoft Edgeを含むWebmidiをサポートします。また、OperaとSamsung Internet Browserでサポートされています。 Firefoxでは、まだ議論されていますが、うまくいけば早く來ることを願っています。

こんにちは、webmidi

これらの両方を調(diào)達したら、コードを書き始めることができます! Webmidiを使用することは、GeolocationやMediadevices APIなど、他のブラウザAPIを使用して作業(yè)することとは、どちらかに精通している場合は、それほど違いはありません。

高レベルのフローは次のようになります:

  • ブラウザでWebMidi APIの可用性を検出します。
  • 検出された場合、ユーザーにアクセスする許可を要求します。
  • 許可が與えられたら、接続されたMIDIデバイスを検出および通信するための追加の方法にアクセスできるようになりました。

それが行動中に見て??みましょう:

 if( "navigatorのrequestmidiaccess"){
  // Web Midi APIをご利用いただけます!
}

さて、私たちがWebmidi対応のブラウザにいると仮定すると、アクセスを要求しましょう。

 navigator.requestmidiaccess()
.then((アクセス)=> {
  //ユーザーは許可を與えてくれました。今、私たちはできます
  //接続されているMIDI対応デバイスにアクセスします
  //ユーザーのマシンに。
})
.catch((error)=> {
  //許可は認められませんでした。 :(
});

ユーザーが許可を與えてくれる場合、Midiaccessインターフェイスにアクセスできるようになりました。これにより、MIDI入力を受け取ってMIDI出力を送信できるデバイスのリストを作成できます。

次にそれをしましょう。これは、以前のコードスニペットから渡された関數(shù)の內(nèi)部にあるコードです。

 const inputs = access.inputs;
const outputs = access.outputs;

//接続された各MIDI入力デバイスを繰り返します
inputs.foreach((midiinput)=> {
  // MIDI入力デバイスで何かをします
});

//接続された各MIDI出力デバイスを繰り返します
outputs.foreach((midioutput)=> {
  // MIDI出力デバイスで何かをします 
});

MIDI入力デバイスと出力デバイスの違いは何なのか疑問に思うかもしれません。一部のデバイスは、MIDI情報のみをコンピューターに送信するようにセットアップされ(これらは入力としてリストされます)、他のデバイスはコンピューターから情報を受信できます(これらは出力として表示されます)。デバイスを送信して受信できることは珍しいことではないので、両方にリストされていることがわかります。

接続されたすべてのMIDIデバイスを介して反復できるコードができたので、基本的に私たちがやりたいことは2つしかありません。

  • 入力デバイスの場合は、それから発している入っているMIDIメッセージを聞きたいと思います。
  • 出力デバイスの場合は、MIDIメッセージ送信する必要があります。

イベントリスナーをセットアップするためのコードは、入力デバイスからの著信MIDIメッセージに応答するコードは、他のDOMイベントにセットアップできるイベントリスナーに非常に似ています。ただし、この場合、私たちが聞いているイベントはMidimessageイベントです。

 midiinput.addeventlistener( 'midimessage'、(event)=> {
  //「イベント」オブジェクトには「データ」プロパティがあります
  // 3つの番號の配列が含まれています。例として:
  // [144、63、127]
})

出力デバイスにMIDIメッセージを送信したい場合は、このようにできるコード。

 outputsend([144、63、127]);

これがCodepenデモです。これのほとんどがあなたのためにまとめられています。システムに接続されているすべてのMIDI入力および出力デバイスについてお知らせし、MIDIメッセージが発生していることを示します。

ペンを參照してください
George Mandis(@Georgemandis)によるWebmidi基本テスト
Codepenで。

あなたはこの時點でいくつかのことを疑問に思うかもしれません:

  • Midimessageイベントを聞いているとき、event.dataでその3つの數(shù)字配列の頭または尾を作るにはどうすればよいですか?
  • MIDI出力デバイスに3つの番號の配列を送信したのはなぜですか?特定の番號を送信したのはなぜですか?

これらの質(zhì)問の両方に対する答えは、MIDIプロトコルがどのように機能するか、そしてそれが解決するように設計された問題をさらに探求し、理解することにあります。

MIDIメッセージの解剖學

MIDIコントローラーが別のMIDI対応デバイスまたはコンピューターに「話す」とき、彼らは互いにMIDIメッセージを送信および受信しています。この通信の根底にあるプロトコルは、実際にはかなり単純ですが、説明すると少し冗長です。それでも、私はやってみます。

すべてのMIDIメッセージは、8ビット(0-255)で構(gòu)成される3つのバイトで構(gòu)成されています。バイナリで表されると、メッセージは次のようになります。

 10010000 | 00111100 | 01111111

MIDIメッセージには、ステータスとデータの2種類のみがあります。すべてのメッセージは、1つのステータスバイトと2つのデータバイトで構(gòu)成されます。

ステータスバイトは、次のようなものを含む、どのようなメッセージが配信されているかを伝えることを目的としています。

  • オンに注意してください
  • ノートオフ
  • ピッチベンドの変更
  • 制御/モードの変更
  • プログラムの変更

…そして他の多く。

あなたが非音楽的な背景からこれに來ているなら、これらのステータスメッセージはちょっと奇妙に思えるかもしれませんが、それについてあまり心配しないでください。データバイトは、ステータスのより多くの情報とコンテキストを提供することを目的としています。たとえば、Midiピアノをマシンに接続してメモを再生するキーを押すと、どのメモをプレイしたか、おそらくそれを押すのが難しいかを示すデータバイトを伴う「メモ」ステータスバイトを送信します。

ステータスバイトは、常に番號1とデータバイトで開始されます。

 1x0010000 | 0x0111100 | 0x1111111
    ^status ^data1 ^data2

7ビットを離れるデータバイトの場合、そのバイトでデータを表現(xiàn)します。これにより、0?127の整數(shù)範囲が得られます。

ステータスバイトの場合、最初の3ビットの後の次の3ビットは、殘りの4ビットがチャネルを記述している間、ステータスメッセージのタイプを説明します。バイナリ表現(xiàn)を分解するには:

 1x001x0000

これがWebmidiとJavaScriptにどのように変換されるか

以前のコードサンプルから推測したように、Webmidi APIを使用して、これらのバイナリ表現(xiàn)に直接対処する必要はめったにありません。 JavaScriptでこれらのメッセージを送信して受信するとき、次のような配列を使用するだけです。

 [144、63、127]

既存の音楽ハードウェアを使用している場合は、メッセージがどのように、なぜ構(gòu)造化されているかをより深く理解することが役立ちます。最初のバイトで144を受け取ることは、最初のチャネルでメモがオンになっていることを意味し、128がメモがオフになっていることを示すことを意味することを知っておくと役立ちます。

ただし、音楽以外のエクスペリエンスを構(gòu)築し、獨自のハードウェアを作成する場合、これらの數(shù)値は、必要なものを表すために再利用できます。

どんなハードウェアを使用できますか?

コンピューターに接続できるMIDI対応デバイスは、WebMidi APIを介してアクセスできるはずです。 MIDIデータを別のMIDI対応デバイスに送信できるデバイスは、MIDIコントローラーと呼ばれることがよくあります。一般的な例は、このkorg nanokey2のようなシンプルでピアノスタイルのキーボードです。

しかし、それらは外観と相互作用のモードが大きく異なる場合があります。ボタンは確かに一般的ですが、アカイLPD8のようなダイヤルまたは圧力に敏感なパッドを組み込んだものを見つけるかもしれません:

他の人は、MIDI信號への動きのマッピングや呼吸など、より抽象的で興味深い相互作用モードを使用します。たとえば、このコントローラー(ソースオーディオのHothand)は3つの加速度計を使用して、Hand GestureをMIDIメッセージにマッピングします。

一部のコントローラーは、MIDIメッセージを送信および受信できるため、物理的な世界と真の雙方向の會話をすることができます。 Novation LaunchPadは古典的な例です。ボタンを押してメッセージを送信することができ、メッセージを受信して??デバイスの色を動的に変更することもできます。

獨自のハードウェアを構(gòu)築できますか?

構(gòu)築するのはそれほど難しくないことがわかり、野生で多くの自家製のMIDIコントローラーを見つけることができます。彼らは急いではるかに精巧になることができます。いくつかは実にバナナかもしれません:

獨自のMIDIコントローラーを構(gòu)築すると、JavaScriptの世界の外に少し外れますが、Arduinoプラットフォームに精通している、または興味を持っている場合は、驚くほどアクセスできます。 AdafruitのCircuit Playground Classicは、始められるのに最適なデバイスであり、デバイスにフラッシュするスターターコードを見つけることができ、GitHubのマルチフェセットのMIDIコントローラーになります。

まとめ

WebMidi APIは、フロントエンド開発者が基本的なハードウェアとソフトウェアの相互作用の実験を開始するための低バリアから入力の低い方法です。実裝は、他のハードウェアWeb API(Bluetoothなど)と比較して比較的簡単であり、MIDI標準は十分に文書化されています。既存のMIDI対応のデバイスがたくさんあります。クールなものを?qū)g験または構(gòu)築するために、本當にすべてを行ってプロジェクトのために獨自のカスタムMIDIハードウェアの構(gòu)築を開始したい場合は、それもできます。

そこに行って何かを作りましょう!

以上がWebmidiでつま先をハードウェアに浸しますの詳細內(nèi)容です。詳細については、PHP 中國語 Web サイトの他の関連記事を參照してください。

このウェブサイトの聲明
この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當する法的責任を負いません。盜作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫像を無料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード寫真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

寫真から衣服を削除するオンライン AI ツール。

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中國語版

SublimeText3 中國語版

中國語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統(tǒng)合開発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

ロードスピナーとアニメーションを作成するためのCSSチュートリアル ロードスピナーとアニメーションを作成するためのCSSチュートリアル Jul 07, 2025 am 12:07 AM

CSSロード回転子を作成するには3つの方法があります。1。境界の基本回転子を使用して、HTMLとCSSを介してシンプルなアニメーションを?qū)g現(xiàn)します。 2。複數(shù)のポイントのカスタム回転子を使用して、異なる遅延時間を経てジャンプ効果を?qū)g現(xiàn)します。 3.ボタンに回転子を追加し、JavaScriptを介してクラスを切り替えて、読み込みステータスを表示します。各アプローチは、ユーザーエクスペリエンスを向上させるために、色、サイズ、アクセシビリティ、パフォーマンスの最適化などのデザインの詳細の重要性を強調(diào)しています。

CSSブラウザの互換性の問題とプレフィックスに対処します CSSブラウザの互換性の問題とプレフィックスに対処します Jul 07, 2025 am 01:44 AM

CSSブラウザの互換性とプレフィックスの問題に対処するには、ブラウザサポートの違いを理解し、ベンダーのプレフィックスを合理的に使用する必要があります。 1. FlexBoxやグリッドのサポート、位置:粘著性の無効、アニメーションのパフォーマンスなどの一般的な問題を理解することは異なります。 2. CANIUSE確認機能サポートステータスを確認します。 3. -webkit-、-moz-、-ms-、-o-およびその他のメーカーのプレフィックスを正しく使用します。 4.自動的にプレフィックスを追加するためにAutoprefixerを使用することをお勧めします。 5. PostCSSをインストールし、ターゲットブラウザを指定するようにBrowserSlistを構(gòu)成します。 6.建設中の互換性を自動的に処理します。 7. Modernizr検出機能は、古いプロジェクトに使用できます。 8.すべてのブラウザの一貫性を追求する必要はありません、

スタイリングは、CSSとは異なるリンクを訪問しました スタイリングは、CSSとは異なるリンクを訪問しました Jul 11, 2025 am 03:26 AM

アクセスしたリンクのスタイルを設定すると、特にコンテンツ集約型のWebサイトでユーザーエクスペリエンスを向上させることができ、ユーザーがより良いナビゲートを支援します。 1。CSSを使用してください:訪問した擬似クラスは、色の変化などの訪問されたリンクのスタイルを定義します。 2。ブラウザは、プライバシーの制限により、いくつかの屬性の変更のみを許可することに注意してください。 3.突然の狀態(tài)を避けるために、色の選択は全體的なスタイルと調(diào)整する必要があります。 4.モバイル端子はこの効果を表示しない場合があり、アイコン補助ロゴなどの他の視覚的なプロンプトと組み合わせることをお勧めします。

CSSクリップパスでカスタムシェイプを作成します CSSクリップパスでカスタムシェイプを作成します Jul 09, 2025 am 01:29 AM

CSSのクリップパス屬性を作物要素に使用して、寫真やSVGに依存することなく、三角形、円形ノッチ、ポリゴンなどのカスタム形狀になります。その利點には、次のものが含まれます。1。円、楕円、ポリゴンなどのさまざまな基本的な形狀をサポートします。 2。レスポンシブ調(diào)整とモバイル端子に適応可能。 3.アニメーションが簡単で、HoverまたはJavaScriptと組み合わせて動的効果を?qū)g現(xiàn)できます。 4.レイアウトフローには影響せず、ディスプレイエリアのみを収穫します。一般的な使用法は、円形のクリップパス:円(50pxatcenter)および三角クリップパス:ポリゴン(50%0%、100 0%、0 0%)などです。知らせ

ディスプレイの違いは何ですか:インライン、ディスプレイ:ブロック、ディスプレイ:インラインブロック? ディスプレイの違いは何ですか:インライン、ディスプレイ:ブロック、ディスプレイ:インラインブロック? Jul 11, 2025 am 03:25 AM

Themaindifferencesbetweendisplay:インライン、ブロック、およびinline-blockinhtml/cssarelayoutbehavior、spaceusage、andstylingcontrol.1.inlineelementsflowwithtext、notstartonnewlines、nagrorewidth/height、height、andonlyhorizo??ntalpadddddddddddddddding

CSSペイントAPIとは何ですか? CSSペイントAPIとは何ですか? Jul 04, 2025 am 02:16 AM

thecsspaintingapienablesdynamicimagegeneration incssusingjavascript.1.developerscreateapaintclasswithapaint()method.2.they registeritviaregisterpaint()

CSSを使用して応答性のある畫像を作成する方法は? CSSを使用して応答性のある畫像を作成する方法は? Jul 15, 2025 am 01:10 AM

CSSを使用してレスポンシブ畫像を作成するには、主に次の方法で達成できます。1。最大幅を使用してください:100%と高さ:自動化して、割合を維持しながら畫像がコンテナ幅に適応できるようにします。 2。HTMLのSRCSETおよびサイズの屬性を使用して、異なる畫面に適合した畫像ソースをインテリジェントにロードします。 3.オブジェクトフィットとオブジェクトポジションを使用して、畫像のトリミングとフォーカスディスプレイを制御します。一緒に、これらの方法により、畫像がさまざまなデバイスで明確かつ美しく表示されるようになります。

一般的なCSSブラウザの矛盾とは何ですか? 一般的なCSSブラウザの矛盾とは何ですか? Jul 26, 2025 am 07:04 AM

さまざまなブラウザのCSS解析に違いがあるため、主にデフォルトのスタイルの違い、ボックスモデルの計算方法、フレックスボックスおよびグリッドレイアウトサポートレベル、および特定のCSS屬性の一貫性のない動作を含む一貫性のないディスプレイ効果が得られます。 1.デフォルトのスタイル処理は一貫性がありません。解決策は、cssresetまたはremormize.cssを使用して初期スタイルを統(tǒng)合することです。 2。IEの古いバージョンのボックスモデル計算方法は異なります。 Box-Sizing:Border-Boxを統(tǒng)一された方法で使用することをお勧めします。 3. FlexBoxとグリッドは、エッジの場合や古いバージョンでは異なる機能を示します。より多くのテストを行い、Autoprefixerを使用します。 4.一部のCSS屬性の動作は一貫性がありません。 Caniuseは相談して格下げする必要があります。

See all articles