HTML5でオーディオプログラミングやっている人いませんか?
友人の結婚式で新郎がギター演奏して、ギター二つあるからってことで式で使ったギターをもらった。
格好良かったから自分もやってみたいところだったが、USBギターケーブルってものを見つけた。
USB GUITAR LINK GUITLINK という製品。
プログラマの端くれとしてはギターの音を拾うプログラムを書いてみたくなったんたけど、
これってどういう仕組みなんだろう?
この機器に関係なく楽器用のAPIとかってあるのかな?
ADコンバータにそれっぽい名前をつけてるだけでしょ
ギターの直出力レベルで機器が壊れるってのは初めて聞いた
引用:
> 通常のミキサーのマイク入力などにそのまま接続しても正常に音が出ない。
「正常に音が出ない」という表現を「壊れる」と解釈するのは斬新だなw
音が壊れるってことだろ。
>>812 まず、音声を機器に取り込むには、マイク入力と、ライン入力 とかあったりする。
どちらも、電圧をオシロスコープで見ると、よくある音声波形が見えるのだが、
2つの違いは、その大きさが違うということ。(詳しく言うと、インピーダンスの違いが大きいが、それはおいておこう)
ところで、コイルに磁石を出し入れすると電圧(電流)を生じるのは分かるかな。
エレキギターも、コイルが入っていて、弦の振動が、電圧になるのだが、微弱すぎるんだ。
そこで、ギター入力可能な端子というのは、ギターの微弱な電気を、増幅させる回路が入っている。
( 詳しくいうと、入力インピーダンスがすごく高い、かつ、増幅率の高いアンプ、というのがポイント)
つまり、USBギターケーブルっていうのは、いろんなPCにもついている音声入力端子 を、
ギターの微弱音に対応させた専用のもの、と覚えておけばよいだろう。
次に、この音声入力信号を扱うプログラムを書く方法だが、
察しのとおり、PCに入ってきた音声信号は、OSやAPI、ドライバなどがまとめて取り扱う。
自作のプログラムは、用意されたAPIに対して、データのやりとりをして処理を行うこととなる。
なお、USBの信号を、OSやAPIに渡すまでの処理は、機器のメーカーが用意してある。
通常、USBを指したら、ドライバをインストールしてください、って出るだろ?それ。
で、例えばWindows の場合、音声信号を扱うAPIは、何種類かある。
マイクロソフトが標準で用意しているドライバは、
Windows マルチメディアAPI(MME) mmsystem.h
Windows Audio Session API (WASAPI)
DirectSound
など。
でも、マイクロソフトのAPIは、割とどんな機器でも対応できるような仕様で音声信号をまとめるので、
それがいやだ、って言う人のために、楽器用のオーディオドライバも第3者から提供されている。
それが、ASIOとかいうドライバ。
で、ASIOとかに対応したプログラムを書きたいなら、ASIOのSDKを入手して、
asiodrivers.h をインクルードして、、、などとプログラムをすればよいのだが、
一定時間内に処理を終わらせないと音が途切れるなど、各種のオーディオプログラミングテクニックが必要。
ということで、ギターの音を拾うプログラムをしたければ、
(a) USBギターケーブルと通信するための、USB信号を自分で解析して、自分で制御する
(b) a はメーカーの用意したUSBドライバに任せて、
自分は、そのUSBドライバが対応しているオーディオAPIとやりとりするプログラムを自作する
といったプログラムをすることとなる。
どちらも結構面倒である。 というか (a)は無理。
(a)をやりたければ、ハードウェアの自作から始めた方が早い。
つまり、ギターの音を拾うのはあなたには無理であろう。あきらめなさい。
もっというと、ブラウザ上のJavaScriptでギター入力音を扱える時代が来るかもしれない。
ブラウザがオーディオ入力信号を扱うことができれば、
あとは自分のJavaScriptは、そのAPIに対してデータのやりとりとかメソッド実行を行うだけだ。
今のところ Chrome なら、
WebRTC とか WebAudio API を使えば、
オーディオ入力データを getUserMedia()関数で取得できる。
823 :
デフォルトの名無しさん:2014/01/16(木) 02:58:43.07
mp3等の圧縮って先にLPFで帯域制限してるみたいなんだけど
単にフーリエ変換後ある周波数以上のデータを含めないって帯域制限の掛け方できる?
デジタルフィルターってのが、一般にそれをやってるんじゃないの。
逆フーリエ変換のときに。
普通にできるけど、逆変換した後にフレーム間の波形のつながりが悪くなるから、
フレームに処理前のサンプルを入れる時点で余分にサンプルをとって、
フレームを重複させながら処理するんだったような。
インパルスレスポンスの入ってるwaveファイルって
元となる音の一番目のサンプルとインパルスのサンプルの一番目の音を掛け算して
次に元となる音の一番目の音とインパルスの2番目の音と掛けて、元となる2番目とインパルスの1番目を
掛けたものを足すみたいにやってけばいいんですよね?
827 :
デフォルトの名無しさん:2014/04/02(水) 12:23:16.75 ID:FY64sASs
たずねる前に、まずやってみることです。
828 :
デフォルトの名無しさん:2014/04/23(水) 01:22:14.76 ID:Be8/NqvO
テープレコーダーがブームらしいけど、テープレコーダーのノイズや信号ずれの音を再現できないだろうか
パンで音の広がりってどうやって再現するんですか?
たくさん右に振ったパンとたくさん左に振ったパンを混ぜると広くて
たくさんを小さくにすると狭いんですか?
あとパンの振ってあるステレオファイルをパンを振るにはどうするんですか?
パン振るだけじゃいわゆる広がりは出ない
ディレイをかける
位相をずらす
位相って右から音がなると右のほうが先に聞こえるってことですよね?
それと広がりとどう関係するんですか?
単純にそういうわけでもないけど、、
脳が空間を認識するからだろ
横の広がりはディレイ
縦の広がりはリバーブ
ミキサーで加算するとき、信号をソートして小さい方から足していかないと情報落ちが起きますよね
このときの誤差ってどの程度のものなんですか?
>>835 式は思い出せないけど、
計算機イプシロン 情報落ち でググって。
その情報落ちより、浮動小数点を整数に直すときのズレが大きすぎるから気にしなくていいよ。
838 :
デフォルトの名無しさん:2014/05/11(日) 11:50:22.46 ID:0MhL7reQ
最近のソフトシンセの機能と音質の凄さに、
「これじゃあ、わざわざ、立派な外部スピーカー買わなくても良いじゃんw」
とさえ考えてしまう俺がいるのであった...。
プロはどう思うか知らんが、素人だと、そこまで考えてしまうくらいだから。
そうなんだ
ソフトにしろハードにしろシンセで作った
濃厚な音を再現性良く出すには
それなりのスピーカーが必要だと思ってた
スピーカーの特性を検出して、
信号にその逆特製を施してやるとかできないもんだろうか?
CONEQとか既にその手の処理は飽和気味だよね
イコライザーっていうものはそういうもののために存在しているわけだが。
リアルタイムに外からの騒音も消してくれるなら良いんだけど
測定時の部屋の反響程度だよね
>>843 言われてみれば、等化器か。
正直、調味料的な見方してた。
補正なんてしたら頭動かせなくなるんじゃん?固定器具必要じゃん?
そんなんカメラで位置検出すれば大丈夫だって
キネクト使えばいけそうやな
サイン波で少しずつ音を上げていかないとプチっていうんですけど、
波形自体がそういう音の成分を含んでいるのか、スピーカーを通すとそういう音が鳴るのか
どちらですか?
both
波形の立ち上がり(時間)の事か解像度の荒さの事か分からんけど、
前者ならA点からB点をサイン曲線とかで補間してやれば立ち上がりが若干緩くなる
他のやり方だとオーバーサンプリングして戻してもノイズ消えるんじゃないかな?
後者はそもそも補間してないって話だよね
元々モノラルお音をステレオに二重化するとき
音を左右大きさ変えて音源移動してるイメージにしたいのに
なかなかうまくいかないわ
パンを一番左にすると普通左からしか聞こえないけど
実際は右からも聞こえるからな。
反射音なしなら左からしかきこえないってことなんだろうけど。
位相をずらす
音声認識はスレ違い?
ギリありじゃね
857 :
デフォルトの名無しさん:2014/12/12(金) 03:57:40.57 ID:L50nhIUx
ビブラート入れるプログラムくれー
道具に頼らず歌の練習しろ