1 :
デフォルトの名無しさん :
2001/07/27(金) 03:18 アナログ音源やFM音源などのエミュレートや、 MODトラッカー,MIDIシーケンサの技術的な話題に関するスレ
2 :
デフォルトの名無しさん :2001/07/27(金) 03:34
3 :
デフォルトの名無しさん :2001/07/27(金) 06:04
VCO-VCF-VCA
スレ立てた奴がネタを出さないスレは、煽られるか廃れるだけ 他人に頼るだけの奴はスレ立てるな
ネタねーのかよ sage
スレ立てたやつは自分の興味のある内容について 現状でも希望でもいいから書け
本出てるぞage
ttp://www.cactussoft.co.jp/books.htm win限定なのは痛いが、まぁ仕方ない。
でもwinのAPIをunixの奴(read()/write())に比べると
なんでこんな面倒なんだ?とむかついてくる。
ソフト音源作ってみたいなあ。
テキトウにそれっぽく書いて(winで)やってみたら
全然処理が間に合わなかった(わら
まだまだスキル足りない模様。
unix用(語弊あり?)のオプソの奴のソースでも
じっくり読んでみるか…
#なんでウニかというと、上記のように出力の仕掛けが単純なので、
#いらんこと気にせず読めるはずだから。
>>3 TVO-TVF-TVA は労陸(LA音源)だっけ?
8 :
デフォルトの名無しさん :2001/07/29(日) 02:01
9 :
デフォルトの名無しさん :2001/07/29(日) 02:20
直流成分を除去するアルゴリズムを教えて下さい。 あるNESエミュのソースを見たのですが理解できません。
>>8 >VCF
この板でしかも「アルゴリズム」って質問の仕方だってことは
ソフト(デジタル)でやる話と思うが、
ならばFIRフィルタやIIRフィルタを使うんじゃないかやっぱり?
アナログのコンデンサ的フィルタと
デジタルのディレイ的フィルタじゃ
定数のかましかたが全然違うが、
そのへんは適宜行列計算かなんかで
相互変換すればいいんじゃないかと想像する。
そういえばアナログシンセの真髄は、デバイスの癖のせいで
(MOOGの)理論通りに音が出ない、という点に尽きる。
だから、馬鹿正直に理論を実装しただけじゃ
それこそLA音源並の音になる。
11 :
デフォルトの名無しさん :2001/07/29(日) 02:40
>>10 LAのSquareWaveは大好きだ・・・
オートワウやリングモジュレーターとか、
アナログエフェクターの回路図読める様な人ならエミュレートって
多分簡単なんだろうね。
(自分はハンダコデは使ったことはあるけど回路図読めない)
>>8 昔図書館で、「自作する電子楽器」みたいな本に
そういう回路図とかのってた気がするけど、
そういうのって役に立つのかな
14 :
デフォルトの名無しさん :2001/07/29(日) 08:18
>>8 VCFは 2次LPFで良いでしょう
LPFだけなら簡易な
w=πf/f0 として f=カットオフ周波数 f0をサンプリング周波数
w^2/(1-(2-w*a-w^2)*Z+(1-w*a)*ZZ) Zはz^-1の事
で良いでしょう。
レゾナンスはフィードバックをかける事ですが、aを調整してゆくと実現出来ます
ただし0から負の領域は発振領域ですから、なだらかなクリップ処理をかけると
いいでしょう
ちなみに数式で 1/(1+a1*Z+a2*Z*Z)は 入力x出力yとして
y= x-(1つ前のy)*a1-(2つ前のy)*a2
結局 LPFは ww:=w*w ; a1=2-w*a-ww; a2:=-(1-w*a);
y:=x*ww-a1*y1-a2*y2;
y2:=y1;
y1:=y;
result:=y;
>>9 それはLPFという処理です。 カットオフしたい周波数によって2次か1次かを
決めます。たとえば数ヘルツでカットオフしたいなら1次でOKです
1次のLPFは
w =2*π*f0/22050.0;
r =tan(w/2);
b =(1-r)/(1+r)
(1-b)(1+Z) Zはz^-1の事
------------
2(1-bZ)
か簡易には
1-(1-b) bは1-f/f0 程度
---------
(1-(1-b)Z)
でもOKです。 分母は
y:=x+(1-b)y ;ですから 分子bをxにかけて
y:=b*(x-y)+y と計算します
15 :
デフォルトの名無しさん :2001/07/29(日) 08:31
なお、2次LPFは 14の式では高い周波数になるとアナログとの特性のズレが極端になります サンプリング44.1Kで4KHz程度で処理したいなら 周波数を1/2にして 分子を(1+Z)^2にするといいでしょう この方式だと正確には w0 =2*π*f0/fsample; w =tan(w0/2); w*w*(1+Z)^2 ------------------------------------ (1+αw+ww) -2(1-ww)Z + (1-αw+ww)Z^2 となります。
16 :
デフォルトの名無しさん :2001/07/29(日) 10:32
17 :
>>14 :2001/07/29(日) 11:36
この辺の情報に詳しい書籍やwebページない? 俺、大学行ってないから、どうしてこうなるのか知りたいんだけど
19 :
14 :2001/07/29(日) 20:34
>>17 俺も大学行ってないよ。
とりあえず三角関数と複素数が判ってれば利用するのに支障無し
20 :
8 :2001/07/29(日) 23:29
>>14 ありがとう、2次IIRでいけるのね。
固定小数点で、16Mhz程度の組込用16bitCPUで出来ないかと考えてたけど
やっぱりSHクラスのCPUで浮動小数点DSPを使わなきゃ無理そうですね。
パラメータ変わったときの係数再計算も重そう。
最近はやりのバーチャルアナログシンセはどんなCPU使ってんだろう?
>>13 S(アナログ)からZ(デジタル)への変換って結構計算が重いと思います。
結構複雑な式だった記憶が...
精度良くかつ安直にやると次数も増加するんじゃないかな。
んー、利用するだけですか。 公式丸暗記はあまり好きじゃないので、 原理を知りたいのですが。 これ知らないと、自分でフィルタ作れないですしね
22 :
14 :2001/07/30(月) 07:01
あれ?
>>14 の
>>9 へのレスは間違いだ。
除去というのは取り出す事じゃなくて取り除くことだから LPFじゃなくてHPFだね
>>20 固定少数点だと、厳しいのは
w^2の項があって、wを可変するとたぶん可変範囲は8bit程度
必要だから処理は24bit程度でやらなければいけないからかな
係数の再計算はそれほど大変じゃない。tanだけあらかじめ
係数と、その差分をたテーブルにしとけばいいでしょ。
そんなに係数の更新は急ぐ訳じゃないし。
ところでクロック16MというとH8かM16C?
という事はサンプリングは10K程度かな?
それなら出来ない範囲じゃないと思うけど
23 :
14 :2001/07/30(月) 07:16
24 :
8 :2001/07/31(火) 01:32
>>14 今のところできたらいいな程度にしか考えてませんが、仕様は
AKI H8とかM16Cなどの5千円以下で手に入るCPUボードで外RAM,ROMなし
サンプリング20KHz、2VCO、EG&VCA、VCF(レゾナンス有り)構成のMIDIから
操作するバーチャルモノシンセってとこです。
係数更新の許容範囲は、数十msぐらいかなぁ。
やはりボトルネックはVCFと非同期のMIDIの受信割り込みかと思うけど。
20KHz=>800cycle@16Mhzだからどのみち、直感的な意見ですが
浮動小数点積和はスピードで厳しいでしょう。
とりあえずゆっくり頭を冷やして、全体の処理構成と各処理の重さを
検討して見ようかな。
25 :
14 :2001/07/31(火) 07:40
ああ、浮動小数点積和は厳しいな 固定少数点で計算した方がいいよ 非同期のMIDI受信はそう厳しくないよ31.25Kbpsだからしれてる。 M16CでCで素直に書いてもおいつく VCFを作るのにこんな方法はどうだろ? どうせVCOでサイン波ジェネレータは作るから、2相のサイン波が 出るようにしておく。つまり複素数でいえば e(-iwt)の信号ね これを元信号と掛算すると周波数軸上でシフトした事になる このシフトした状態(複素数)に1次のLPFを回転周波数に応じて かける。これに2相のサイン波を再度掛算する。今度はe(jwt)ね するとwの周波数のBPFが出来る 掛算は4回必要だけど2次のフィルターのように係数にシビア じゃないし綺麗でしょ?
26 :
デフォルトの名無しさん :2001/08/02(木) 07:40
>>14 の
ww:=w*w ; a1=2-w*a-ww; a2:=-(1-w*a);
y:=x*ww-a1*y1-a2*y2;
この式だけど、
a1,a2を代入して
y := (2-b*w-w*w)*y1 - (1-b*w)*y2 + w*w*x
分解して
y :=y1-(y2-y1)+(y2-y1)*b*w+(x-y1)*w*w
か
y :=y1-(y2-y1)+{ (y2-y1)*b + (x-y1)*w }*w
とやれば、
wはおよそ2πf0/fs (f0が共振周波数 fsがサンプリング)
だから係数更新し易い。
27 :
デフォルトの名無しさん :2001/08/03(金) 22:16
おしれーた
稲本がんばれ
小野もな
30 :
デフォルトの名無しさん :2001/08/04(土) 22:30
>>14 アナログのレゾナンス付LPFの伝達関数
H(s)=w^2/(s^2+(w/Q)*s+w^2)
に双一次変換の公式
s=(2/T)*(1-Z^-1)/(1+Z^-1) Tはサンプリング周期
を代入してみたけど
そんな簡単な式になりそうになかった。
どのような元式を使ったか教えてください。
>>25 それってエーリアスは問題にならないの?
またこの方法だとレゾナンスは無しでしょうか?
なんかプログラムじゃなくて数学色が強くなってきたね。
31 :
デフォルトの名無しさん :2001/08/05(日) 06:30
>>30 双一次変換した方は
>>15 >>14 はいわゆる共振型
wが大きくなるとアナログと外れて来るけど
低い周波数ではよく一致する。 周波数特性描かせて見たら判る
サイン波をかけ周波数シフトした上でフィルターをかける方法は
かけるフィルターがLPF以外だと折り畳みの問題がある
例えば 20Kサンプリングで 8KHzの音に3KHzのサイン波をかけたら
5KHzと11KHz 11KHzは折り返されて 9KHzの音と区別がつかない
ただ、2相でやってる事に注意。 複素数の場合、位相関係を
揃えればサンプリング20Kで20K迄表現出来る。
32 :
デフォルトの名無しさん :2001/08/05(日) 07:54
ちなみに双一次変換の分母は 係数を
U =√(1+aw+w*w)
b =a/U;
w'=2w/U;
とすれば
>>14 の分母の形に変形出来る つまり
>>26 の形に変形出来る
w =tan(2πf0/fs/2) だからf0/fsが小さければ
w = 2πf0/fs/2 また U=1 としていい
さらに低い周波数に対しては双一次変換分子の(1+Z)^2 は殆ど利かない
wが小さければ分母の効果だけでも十分というのが理屈
33 :
デフォルトの名無しさん :2001/08/05(日) 08:47
34 :
デフォルトの名無しさん :2001/08/06(月) 11:32
Zじゃなくて Z^(-1) じゃないのか?
35 :
34 :2001/08/06(月) 11:33
36 :
デフォルトの名無しさん :2001/08/08(水) 01:26
もーフィングとかもエミュれる?
37 :
デフォルトの名無しさん :2001/08/08(水) 22:59
>>36 Emuのあれですか?
そもそもあれが大雑把にいってどんな処理なのかが判りません私(T_T)
時間領域でグラフをMorphingやったって単に音声をMIXしただけにしかならない(藁)から、
周波数領域でグラフをMorphingするって感じでしょうか?
ここの人は何を読んで勉強したのでしょうか? 自分は数学は少しできますが、音声についてはまったく分かりません。
39 :
デフォルトの名無しさん :2001/08/09(木) 22:17
昔のアーケードで良く使われていたFM音源のOPMエミュは(重いけど) あるみたいですが、DX7のエミュとかって無いでしょうか。
40 :
デフォルトの名無しさん :2001/08/09(木) 22:19
>>39 答えるかどうか、熟慮しています。15日までまってください。
>>40 期待される答え(^^;の人の行いはそれはそれで称えるに値する行いなんだけど、
それは別として、4OPと6OPって結局はOP数とパラメータが違うだけだよね。
なんで今まで無かったんだ?というのは、激しい不思議。
4OPな奴(おぷそのも有るよね)を改造してとりあえず6にした人とか
既にいないの?
ところで15って…終戦っすか?
>>38 漏れは関係ないが、それ方面な友人の挙動を見て推察するに、
たとえばトラ技なんかを愛読していたよ。
42 :
デフォルトの名無しさん :2001/08/09(木) 23:53
>>38 情報系の学校の授業とその教科書
アナログ領域は数学のフーリエ級数、デジタル領域はデジタル信号処理とか
DSPってタイトルがついてる本なら基礎理論はだいたい同じことが書いてある。
俺はあまり理解はしてませんがね。
あとDTMマガジンとか、インターフェース、
デザインウエーブの連載かな。
>>41 エミュ作るのに必要なチップの仕様書が手に入らないからでは?
OPMやOPLなら昔のパソコンの取説や解説書なんかに内部構成とか、
パラメータの計算式やテーブル値が載ってるけど、
DX7のやつって見たことない。
あと実は激重だからとか...
>42 1〜2年前ぐらいまでは重かったけど、 最近のPCなら余裕でしょ。 あと、YAMAHAがチップの仕様書を公開してるとは思えない。 有料で入手できるかもしれないですが
44 :
デフォルトの名無しさん :2001/08/10(金) 02:31
age
45 :
デフォルトの名無しさん :2001/08/10(金) 03:01
DX7IID
>>42 4OPのエミュって、仕様書読んで作ったんでしょうか?
てっきりパラメータ突っ込んで出力音をオシロやスペアナとかで
観察して挙動を見切ったのだと思ってたよ。
>>43 んだ。単なるサイン波(というかtable読み出し)なんだから、
フィルタでいろいろやる音源より軽い可能性も。
7のチップは出してないねえ。一番安いのはMU用プラグインボード?
楽器としてはTX802なんかが中古で一万くらいで有るけどさ(藁
なんでチップ出さなかったんだろ。面白かったのに。
47 :
デフォルトの名無しさん :2001/08/10(金) 23:28
>>46 たしかに書籍のデータは観測して書いてるかも。
ttp://www.yamaha.co.jp/product/lsi/prod/index.html でも今では、これぐらいまで一般の人が見れるんだから、パソコンメーカには
同じ程度の資料があって取説を書いてるはず。
このような資料と実機測定あとパラメータいじりながらの耳ミミコピ、
プログラムスキルがあれば6OPだろうとエミュは作れると思います。
>>43 知人から聞いた話ですが昔、YAMAHAへFM音源ICの資料請求したがもらえなかったと。
いまでもそうじゃないかなぁ。
あと1年ぐらい前だったか海外のYAMAHAサイトに古いFMのカタログがあったらしいが
自分が見に行ったときはすでにリンク切れてました。
オシロスコープage
49 :
デフォルトの名無しさん :2001/08/12(日) 01:36
javaSoundAPI使ったプログラムない?
50 :
通りすがりの名無しさん :2001/08/13(月) 12:21
サウンドプログラミングスレですか。面白いですね。 さておき、いきなり質問で恐縮ですが、 WinAmp のプラグインについて質問があります。 WinAmp のプラグインに、 「レンダリング波形数とレンダリング先のバッファを指定すると 波形を吐き出してくれる。繰り返し実行すると、再生ポイントが 進んでいく。これらの機能は、プラグイン単体で動作できる。」 というような仕様の、波形レンダリング関数(または手段)は 用意されているでしょうか? ざっと仕様をみたところでは、内部で再生スレッドを立ち上げたり、 WinAmp と連動したり、ややこしい作りになっているようで、 上記の関数は表には見えていない様でした。 WinAmp のプラグイン単体で再活用できれば、 世間に存在する多種多様のサウンドフォーマットの資産を、 ゲームの BGM など、WinAmp 上での再生以外の用途で活用できるのですが。
51 :
通りすがりの名無しさん :2001/08/13(月) 12:25
>>47 > でも今では、これぐらいまで一般の人が見れるんだから、
YAMAHA も随分とオープンになったもんですなぁ。
52 :
デフォルトの名無しさん :2001/08/13(月) 23:49
>>51 でも、mLANって非OPENなんでしょ?ライセンス料とか取るって言ってる。
OPENなMIDIが世界標準になったのとは大違いだ。
過去のシンセの説明書をwww経由で無料DLできる(PDFとか)ようになってるんで、
過去に対しては結構OPEN化が進んでいるのかも知れないけど、
それは単に未来の大儲けのために過去の垢を捨てているだけじゃないかな。
垢でも有り難がる人は世界じゅうに居るのでYAMAHAにとって問題なし。
>>49 やってみたいなあ。漏れはMIDIだけで挫折しそうだが。
おっとこのスレはMIDIも守備範囲だっけ。すまん。
1.3で搭載されたMIDI(SMFじゃなくMIDIプロトコルそのものの)サポートは、
実用性がどうなのかは別として気概は凄いと思った。
汎用言語メーカー(藁)たるSUNが、MIDI MessageとMIDI Eventの区別を
厳格に定義するようなAPIを、最初から作っちゃうんだもんなあ。
まぁきわめてJAVAらしいといえばそのとおり。
というわけで、実際に使った人の声聞きたい。
あの厳格なクラス構成をきっちり使ったのかどうかとか、ね。
>>50 本当に出来るなら面白いですね。
試しにソフト音源とかを作ってみるときに足回りとして転用できそう。
ところでVSTって、音源ソフト(プログインとか)を作る側から見て、なんなのでしょう?
ソフト作るための資料としてFREEなものは有りますか?APIとかの。
YM2203ならコミケでどっかのサークルが資料として載っけていたのを
見たな・・・
>>51 半導体を売っている会社でWebにデータシートが載せていない方がいまは
珍しいと思う。
>>53 steinbergのpageを見るべし。
developer登録すればSDKはダウンロードできる。
age
57 :
デフォルトの名無しさん :2001/08/19(日) 04:30
>>50 input plug-inのこと?
DSPならApollo等他のソフトでも使えるけど、
inputの方はwinampと連動してるから無理かなーってことか?
なんとかできんことはない気がするね。
58 :
デフォルトの名無しさん :2001/08/24(金) 09:50
ちょっと話は変わるんですが、 Cubaseのプラグインを作るために参考になるサイトとかってありますか?
59 :
デフォルトの名無しさん :2001/08/24(金) 11:17
61 :
デフォルトの名無しさん :01/09/03 03:45 ID:LXi6Pi92
22050Hzのwaveファイルを44100Hzにバッチ的に変換したいと 思っているんですが、自分でこういった処理を作る場合、 波形の2度書き(↓)以外になにかすることってあるんでしょうか。 22050Hz 44100Hz _| ̄|_| ̄|_→__| ̄ ̄|__| ̄ ̄|__ 考えられるのって曲線補完とかですかね? 参考になるサイトなどありましたら教えてください。
62 :
デフォルトの名無しさん :01/09/03 07:48 ID:3fY0oBq.
>>61 2次補間でもそれなりな結果になりますが
本に載ってるより一般的な方法は、
1)間をゼロで埋める
2)前サンプリング周波数÷2より少し低い周波数で強力なLPFをかける
というものです
63 :
デフォルトの名無しさん :01/09/03 08:06 ID:zmFVSFBM
えっと、標準MIDIフォーマットの規格にはループないですけど、 規格外のループイベントではどんなのがあるでしょうか? とりあえず、RPGツクール2000の コントロールチェンジ111番だけ確認したです。
64 :
デフォルトの名無しさん :01/09/03 12:12 ID:ewvSMjxY
>>61 リサンプル?
マルチレートFIRフィルタ使ったら?
あるいは、変換後のサンプル位置から変換前のサンプル位置へ
マッピングして、その時小数座標になるから、シンク関数で補完する。
65 :
デフォルトの名無しさん :01/09/03 12:23 ID:XtwpCTmA
MAX/MSPあげ
66 :
64 :01/09/03 12:23 ID:ewvSMjxY
67 :
デフォルトの名無しさん :01/09/03 12:59 ID:nCTaZ.02
>>66 インテル信号処理ライブラリって便利なのがあるんだね。
これは使わなきゃ損だ。
ところでこの場合、実際にFIRかけるとき、入力データは2個に1個は0だから
その辺は工夫しないと、演算が無駄に増えてしまうね。
>>64 シンク関数を使う場合はどうしたらいいの?
ハミング窓とかの窓関数をかけて範囲を有限にしてから演算すればいいのかな?
68 :
64 :01/09/03 15:19 ID:ewvSMjxY
>>67 >ところでこの場合、実際にFIRかけるとき、入力データは2個に1個は0だから
>その辺は工夫しないと、演算が無駄に増えてしまうね。
そういう用途向けにちゃんと複数サンプルをまとめて扱うブロック版の関数がある。
内部ではちゃんと無駄な計算を省いてあるらしい。
リサンプルなら、それに1秒単位でぶち込めばよいと思う。
SSEとか使えれば当然活用してくれるので、速度的には結構信頼できる。
精度がどうなのかは、今いち漏れにはよくわからない。
シンク関数は、窓かけて有限にして扱う。
どのくらいの精度のリサンプルをしたいかによるが、
近似関数使うといいかもしれない。
リアルタイム処理するなら、精度を落としてよく4近傍とかで行う。
某書籍のサンプルでは
0<=|x|<1では
w(x)=1-2*x*x+|x*x*x|;
1<=|x|<2では
w(x)=4-8*|x|+5*x*x-|x*x*x|
2<=|x|では
w(x)=0
なんて近似を使ってやってるのを見たことある。
この関数は、左右対称で、x=0のとき1で、その他の整数座標では0になる特性をもつ。
近傍4サンプルでこの関数の頂点(x,y)=(0,1)がそのサンプルの座標にくるようにあてがって、
合計を取ると、それが補完された波形になる。
エフェクトとかの処理でリアルタイムに高速な処理が必要とされるなら、
精度は低いが上述の方法でやる。
単なるリサンプラで、処理に時間がかかってもいいのならFIRフィルタ使った方がいいだろう。
69 :
デフォルトの名無しさん :01/09/03 18:26 ID:nCTaZ.02
>>68 Sinc関数のそんな近似があったんだ。ということは。
22050Hzのサンプリングデータ I(0) I(1) I(2) ... に対して
44100Hzのサンプリングデータ O(0) O(1) O(2) ... は
O(2n) = I(n)
O(2n+1) = -0.125*I(n-1) + 0.625*I(n) + 0.625*I(n+1) + -0.125*I(n+2)
たったこれだけの演算でよいわけね。これはメチャ速そうだ。
これでどれくらいの音質を確保できるんだろう?
実際に聞き比べた感じでは分からないレベルなのかな?
70 :
デフォルトの名無しさん :01/09/03 19:19 ID:nCTaZ.02
ところで便乗質問だけど、
>>62 の2)の工程で使うLPFは直線位相特性を持つ必要があるので、
普通はFIRフィルタを使うと思うんだけど、
聞いたところによると直線位相特性を持つIIRフィルタもあるとか。
これってどんなの? このサンプリングレート変換処理に直線位相IIRフィルタって使えるんですか?
また直線位相IIRフィルタの欠点って何かありますか?
>>63 AnnexMIDIはスムーズな無限ループ・途中から繰り返すループが可能だ。
ゲーム向けの仕様なんだろな。
でもこれスタンダードMIDIフォーマットじゃないんだよね。
72 :
aruru :01/09/03 21:46 ID:.hT78Mno
SB Live!とかの音源をMIDIからではなくて、直接いじるようなイメージの APIはあるんでしょうか? MIDIと普通のサウンド出力以外の使い道があるなら活用したいんだけどな〜
73 :
61 :01/09/03 22:15 ID:U9hn1Usc
みなさんどうもです。 なんかやたら難しそうですね。 とりあえずは簡単そうなssrcを解析してみようと思います。 ありがとうございました。
74 :
デフォルトの名無しさん :01/09/03 23:52 ID:TwJ99J86
>61 前に同じようなことをやったんだけど、やってみるとサウンドカード側で 補間されていることが分かって愕然としたことがあるよ。 補間せずに44k化したものより、22kのwaveをそのまま再生したほうが 音質がよかったってことね。 なんで補間しても音質が変わらないのか最初分からなかった。
>>74 単にD/Aの出力が結果的に線形補間に見えてるだけじゃなくて?
76 :
デフォルトの名無しさん :01/09/04 15:16 ID:rccG4HwI
>>74 補完しても音質はかわらんだろう。むしろ大抵下がるだろう。
そのまま22kで再生した方が音質が良かったのは、
つかったサンプルレートコンバータのエンジンより、
サウンドカード内蔵もしくはドライバレベルで用意されている
サンプルレートコンバータの方が精度が良かっただけ。
必ずしも良いとは限らんさ。特に安物サウンドカードだった日には、鬱氏だぞ。
>>70 漏れも興味ある。数学もしくは信号処理詳しい人の回答きぼーん。
>>74 ssrc解析するよりインテルの奴使うほうが簡単だよ。
漏れはssrcの解析はあきらめたクチ。
解析っつーか、SSE化をあきらめたんだけど。
77 :
デフォルトの名無しさん :01/09/04 15:19 ID:rccG4HwI
>>69 音質はかなり悪いと思われ。
ま、用途によって変わるだろうが。
その式は、音程を変えずに再生速度を上げるとか、
ビブラートとかのエフェクト中で使うために
ごくごく簡略化された計算だから。
そういう用途向けで無いとそれだとちと辛い。
78 :
デフォルトの名無しさん :01/09/14 06:32
関係無いけど、CASIO FZ-1(サンプラ)とかはサンプルの再生周波数36khz だったけど、なんであんな中途半端な周波数だったんでしょう? CDの存在する時代ですよね? 音は(当時にしては)結構良かったけど。
SC-88ProやSC-8850も36kHz出力ですぞ。 高音成分まったく出てこないので、めっちゃやな感じ。 プロユースにゃもっと高いヤツ買えって Rolandの声が聞こえてきそうだ。
80 :
デフォルトの名無しさん :01/09/14 07:05
81 :
デフォルトの名無しさん :01/09/14 09:23
>>63 >えっと、標準MIDIフォーマットの規格にはループないですけど、
>規格外のループイベントではどんなのがあるでしょうか?
「規格外」ということは「標準」じゃないということなので、
好きなだけ作れば出現する(でもそれは既にSMFではない)、というだけのこと。
>とりあえず、RPGツクール2000の
>コントロールチェンジ111番だけ確認したです。
一生探し回ってください。原理的にその捜索の旅には終了は定義されていない。
今日もまたどっかのドキュが新たなフォーマットを…
CtrlChangeでループの指示ねえ。大昔のオープンリールテープで
低い音を感知したら反転するってのがあったそうだが、
パイプオルガンだと時折誤作動したそうだ(藁
あんまり特異なことをしても空しいぞ、という教訓だと思われ。
>>65 >MAX/MSPあげ
ついでにPureDataあげ
>規格外のループイベント 変なフォーマットを陳列する博物館を作りたいのでもない限り、そんなものに関心示すのは無駄。 もともとSMFは(そういう用途には)効率悪いんで、 使いやすいフォーマットを別途自作する方向で考えたほうが実りが多いぞ。
After Touch でループの会社もあったよ・・・ >そんなものに関心示すのは無駄。 そゆことなのでsage
>>81 -83
あー、そういうことは百も承知しとるっすよ。
なんか他にもとんでもねーものが一部で普及しとるんちゃうかと
興味本位で訊いただけなのに。しく。鬱。
まあまあ。
86 :
デフォルトの名無しさん :01/09/14 22:44
>>84 一部で普及というか、ある閉じた環境でなら通用する方法なら、
多分沢山あると思いますよ。閉じてんだから、その環境で通用
すれば何やっても良いわけですし。
私が知っているものでもControlChangeの組(始点と終点)で
ループを表現しています。実際にはそのCCを付けた元データを
変換して最終的なデータ(似非SMF)にするわけですが。
このスレまじでためになるからあげ!
>84 泣かせちった。ゴメン。 興味本位って事ならそうだなー、 ドリームキャストっていくつかのMIDIを組み合わせて、 イントロやループ部を構成する上部構造のシーケンスがあったような。
89 :
デフォルトの名無しさん :01/09/22 16:18
age
90 :
デフォルトの名無しさん :01/09/23 14:11
>>88 ラッパーを被せてそれによって機能拡張する、というならば
全然反則じゃないと思われ。
単にそれ自体をSMFと名乗らせるのが詐欺なだけ。
>>86 CCを埋めるというお約束を使ったSMFというなら、一応Standardだな。
ただ、効果は世間一般に保証されるわけじゃないだけで。
使いそうもない鍵盤の端っこに、Start/Stopとかの機能を割り当てて
リモコンできるシーケンサ、とかと同じレベル。
それならば許せるが、未定義イベントなんか作った(使った)ら、市なす!
少なくともStandardじゃない。
>90 いや、SMFとは言ってなかったよ。たしかその時点で、 aiffとかと一緒にしてpackになってたと思う。(うろおぼえ) SMF or Not を気にする人って シーケンサを作ったりしてる人なの?
92 :
デフォルトの名無しさん :01/09/30 00:18
>>59 WinでBorand C++Builderでコンパイルする方法の情報は存じありませんでしょうか?
サンプルのADelayをmakeしようとADelay.dspから必要なファイルを読み取り、
それらをすべてプロジェクトに登録して、ADelay.DLLまで出来たんですが...
VSTのフォルダーに突っ込んでもCubaseVST32が認識してくれませんでした。
93 :
デフォルトの名無しさん :01/10/01 04:00
age だれかやってるだろうからgoogleで英語で検索してみたら?
>>93 それぐらいはすでに実行済みです。
意外な程、VSTiのプログラムまで手を出してる人は少ないみたい。
ソースの中に、CBUILDERの条件マクロがあるし、MFCとか使ってないから
やる方法はあるんだろうと踏んでるんですが。
素直にVisualC++を手に入れろってことかなぁ...
ちなみにDLLのことはほとんど解らないです。
>>93 失礼!!英語ですね。
今やったら引っかかりました。
どうもありがとう。
#ばかだな俺。
96 :
デフォルトの名無しさん :01/10/02 03:10
フリープログラマーなんですが この手のノウハウを武器に、個人で商売するのってやっぱ むずいかなー。 みなさん、かなり詳しいようですが、何か仕事にいかしていますか? それとも趣味ですか? こんなにサウンドプログラマーな人がいるってびっくり。 画像系の会社だと、サウンドっていうと「再生、停止」の概念 要するに、鳴ればそれでいい くらいの認識だもんね
シンセを作る会社にいるならともかく、一般にわからせること自体が 難しいよな。 理解がなければ、絶対わかってもらえそうにないし。
むしろ波形の知識を生かして測定機メーカーに行くのはどうか。 なに、周波数の桁が2つ3つ上がるだけだ(w
99 :
デフォルトの名無しさん :01/10/16 16:26
他の所にも書いたのですが、質問させて下さい。 普通のCDや音楽データをDJmixのように、段々盛り上げていくような 曲順に勝手にしてくれるようなプログラミングが (理想としては)作りたいと思うのですが何を勉強したらよいでしょうか。 単にBPM速い曲と遅い曲に分けるだけでもいいです。 当方何も知りません。とりあえずCとjavaぐらいです。Windows使ってます。 C++とMIDIプログラミングについて勉強しようかと思ってはいますが それで方向性正しいのかもわかりません。 本も1冊ぐらいしか見つからない&サウンドプログラミングについて 詳しく説明しているHPもあまり無い感じだったので聞いてみました。 もしそういうHPがあったらそれも教えていただけるとうれしいです。 っていうかこの考えは実現できますか? またはとっくに実現されてますか? 質問自体が馬鹿ですか? 本当に何も知りません。よろしくお願いします。
100 :
デフォルトの名無しさん :01/10/16 16:52
ACIDとかあーいう奴でしょー? 違うかな。生成じゃないのか。 とりもあえず、MIDIよりPCMの方が楽だと思う。
ACIDっていうのは作曲ソフトですか? よく分かりませんが、要するにCDプレーヤーのランダム再生機能を、 例えばゆっくりした曲から激しい曲になるような、 ある意図に基づいたランダム再生(?)をしたいので 作曲とかではない感じですが、取り敢えずこういうものは制作可能なんでしょうか? ともかくPCMについても調べます。ありがとうございます。
102 :
デフォルトの名無しさん :01/10/16 18:37
>>99 MIDIなら元々BPMが埋め込まれているし、
その他のPCMに出来る形式なら、
>>102 の言ってる奴のように
推測することができる場合もある。
PopsとかRockなら、フーリエ変換でもして、低域のゲインの推移を追って、
ある程度の間隔の規則性を持って変化するはずだから、それから推測が可能。
クラシックとかは難しいんぢゃないのかなぁ。
とりあえず、プログラミング自体あまり詳しくないのなら、道は遠いとおもう。
>>102-103 レスありがとうございます。大変参考になります。
うーん、遠いですか、C,javaぐらいじゃ駄目ってことっすよね。
どのくらい遠いんでしょうか…むう。
まあ逆に考えればちょっと詳しくなれば近くなるのかなと、
とりあえずクラシックは無視してもいいかなと、
微妙に勉強してみます。
>>104 とりあえず、フーリエ変換か、ウェーブレット変換を調べてみ。
ポリフェーズフィルタとか、FIRフィルタでもいいや。
その辺の周波数軸で扱える理論が理解できるようなら、道は近いと思われ。
まずは、いちばん簡単で高速なので、フーリエ変換をお勧め。
つーかもっとも基本(?)だし。
>>105 おおーっ。ありがとうございます!
「一応」大学生なのでフーリエ変換は習ったような習ってないような・・・アハ。
勉強し直します〜〜。
107 :
名無しさん :01/10/20 15:58
さっぱりわからないですけど、とりあえず興味あるので応援age
どうせMIDIの話かと思ったら、結構まじめにDSPの話題じゃん。
>>106 大学でやったのは、一般的なフーリエ変換だと思われ。
漏れが言っているフーリエ変換は、その大学でならったフーリエ変換のうち、
特殊な事例である離散フーリエ変換のことだよ。
調べるのなら、一応キーワードは『離散 & フーリエ変換』にしといた方が、
作るだけなら早いかも。
ま、一応一般的なフーリエ変換の概要は知っておいた方が、
のちのち役に立つと思うけど。
110 :
デフォルトの名無しさん :01/10/20 23:47
サイン波合成だけで、任意のパルス幅のパルス波はどうつくればいいんでしょうか? 方形波:f(t) = 馬=1->∞ (4r/π)(2n-1)sin((2n-1)ωt) って基本式だと、パルス幅は波長の50%ですよね。。。これを 10%とか40%とかにするには、どんな方法あるんでしょうか? ちょと、数学ネタにちかいけど、現在ソフトシンセつくってます。 VCOの難関はあとは、パルスワイズモジュレーションだけなんだけどな。。。 どなたかよろしくおねがいします。
>>110 厳密には無限まで足しあわせてはじめて方形波になるわけだから
やっぱさ、合成じゃなくて
if(t<0.4) r=1.0;
else r=-1.0;
(ただしtは[0,1]でループ)
ってやれば?
112 :
デフォルトの名無しさん :01/10/21 00:41
>111 その方法だと、無限に高次倍音をふくむので、エイリアスノイズ(だとおもう)が発生するんです。 特に、サンプリング周波数44.1KHzで、1KHz以上を再生すると「ピー」とか「ジー」とか 基本周波数とは全然関係ない成分が目だって、聴くに耐えないんですよ。 (シンセサイザと名乗る以上は、これは問題と思ってます。) 2通りの解決策をかんがえてるんです。 策)再生波形そのものを、ナイキスト周波数以上の倍音を含まないように 合成する。つまり、適当な次数まで足しあわせて終わらせます。高い周波数になれば なるほどサイン波に近づくわけです。 この方法でノイズが消えるのは実験済みなので、あとは、 パルス幅可変にして、合成できれば、ばっちりかと、思ってるんです。 が、、、、いかがでしょう。
俺音楽にもちょっと才能あんだ どうせ波だからゆくゆくはやるつもり。
114 :
Delあめ猫にゃ :01/10/21 08:55
>>112 理論的にはそれでいいにゃ
パルス幅を可変にする方法は 方形波じゃなくて
帯域制限されたパルス波を基本にして、
プラスのパルスとマイナスのパルスを積分すればいいにゃ
>>111 にフィルタをかけて20kHz以上の周波数をそぎ落とすという方法はどう?
117 :
デフォルトの名無しさん :01/10/21 19:49
>114 ありがとうございます しかし、まず、プラスとマイナスのパルス作ろうとしたら、うまくいかないです。 パルスって、どうやってつくるんだろ。 てっきり、基音の全整数倍音を同じ大きさで含むものがパルスだとおもって、 サイン足しあわしたら、こんな感じ、 _|___|___|___|___ | | | | で、脳波やんけこれ、プラスもマイナスもなくなってしもた。。。 なんか、まちがってるんでしょうか? うーむ。
118 :
デフォルトの名無しさん :01/10/21 19:52
>>117 すんまそん。
絵が乱れてる。。。
―╂─―╂─―╂─―╂─
こんな感じ。に訂正
もしかして sinを重ねたんじゃ? パルスは偶関数だからcosを重ねないと それから、無理にスパッと切らなくても 1/exp(x^2) みたいなので我慢するとか これのフーリエ変換は√π*exp(w^2/4)になるから
×√π*exp(w^2/4) ○√π/exp(w^2/4)
121 :
デフォルトの名無しさん :01/10/21 20:53
おーーー、パルス幅かわりました! あめ猫さんのいうとおり、上パルスと、下パルスの位相ずらして、 たして、積分したら、幅かわりました。むひひ みんさんありがとう!! 119> COSでいけました。 なるほど、1/exp(x^2) でもそれっぽくなりますね、 >115,116 どしても、だめなら、その策を考えてました。 実は、昨日この掲示板をはじめて知って、質問したんですが、 みなさん、高度なスキルをお持ちですね。 この掲示板だけじゃ、もったいないなー。 メーリングリストとかで、情報共有できると、いいのになー
122 :
デフォルトの名無しさん :01/10/21 21:45
121に自己フォロー 結局、上向きののこぎり波と、下向きのノコギリ波とカメハメ波に0 を乗算したものをずらして足せば任意のパルス波が 得られちゃうのでした。。。うーん、単純。すっきり。 パルス波って積分すると、ノコギリ波になるのでした。
123 :
デフォルトの名無しさん :01/10/21 21:47
DXiとか作れる人います?
124 :
デフォルトの名無しさん :01/10/21 23:00
DXi、まだ作ったことないけど、DXi対応にしようとおもってます。 VSTiでもいいけど。これも経験無し。 全然調査してないけど、、、特定のエキスポート関数を持ったDLL作る ようなもんじゃないのかな?難しいのですか? いいサンプル、資料あります?
非常にいいスレありがとう
>>86 PSのライブラリで使える SEQ フォーマットがもろそれ系ですな。
>>109 ありがとごじゃります〜〜〜♪
ガムバリます。
128 :
デフォルトの名無しさん :01/10/22 21:23
129 :
デフォルトの名無しさん :01/10/23 21:07
DXi作ろうとしてる人同士で情報交換しませんか? DXiのサンプルコンパイルしたんですが COMを使ってるので、レジストリに登録しなきゃならないとかで 上手くできません ちなみに、まだ英語の説明書を読んでません
130 :
デフォルトの名無しさん :01/10/23 23:19
>128 ありがとうございます。 DXiサンプル、早速ダウンして、ながめていじくりたおしてみました。 MFCですな〜。BorlandC用に作り変えますか?難しいのかな? >129 情報交換いいですね。 ちなみに、 レジストリへの登録は、VC使っていれば、ビルドの最終フェーズで行われて いますよ。ちなみに、SONARできちんと、発音されるところまで動作確認でき ました。 情報交換、どっかにMLつくりますよ。 作ったら、ここにアドレス書きますね。
正直、こんなにスレが成長してるとは 思いませんでした。
思い出した,VSTiのSDKはこのスレでの既出リンクより、
DXiのSDKはGoogleで検索してリンク見つけたんだ。
>>129 情報交換なら、この掲示板に行ってあげてください。
ttp://freebbs.around.ne.jp/article/d/dspfunc/1/index.html 実はDXiについて検索していて引っかかったのがここです。
>>130 サンプルのビルト,動作確認までできましたか、おめでとうございます。
こっちはしばらくの間、ソース眺めてたんですが、ボーランドへの移植は厳しそうです。
DXiのサンプル"Tonar"ってやつですよね。
これサンプルの癖に複雑なことやってるから、plug-Inの核心部分
クラスCTonarのソースですら理解できず、DXiの挙動がつかめません。
#インタフェースが複雑なのは、DirectXの全体に言えますが...
VSTiの方が、サンプルがシンプルで、インタフェースも簡単だから
理解しやすかったです。
とにかくお二人ともがんばってください。
ちょっと用事があって、時間空けちゃいました
申し訳ないです
人数少なさそうですが、情報交換しましょう
>レジストリへの登録は、VC使っていれば、ビルドの最終フェーズで行われて
>いますよ。
え、そうなんですか?
さっそくリビルドしてみました
(ビルドじゃ駄目なんですね)
で
\Debug\Tonar.dll
1 個のファイルをコピーしました
指定されたパスが見つかりません。
0 個のファイルをコピーしました。
c:\winnt\system32\cmd.exe の実行エラー
Tonar.dll - エラー 1、警告 0
なんてのがでちゃいました
で、バッチビルドでクリーンしてからリビルドしたらできました
ttp://isweb37.infoseek.co.jp/art/dtmp/ ここに掲示板を作るので、ここで情報交換しませんか?
134 :
デフォルトの名無しさん :01/10/26 00:27
>133 私もfreeml.comに、音楽プログラミングMLつくってしまった。。。 そのうち、公開されるので、そのときはよろしく。 とりあえず、そっちいきますよ。
>>134 どうもです
相当がんばらないと、情報交換じゃなくて
情報もらうだけになっちゃいますね、私は・・・
土日でがんばってみます
MLはぜひ参加させてくださいね
おれもcubaseのプラグインを作ってみたいなぁ
137 :
音楽プログラミングML :01/10/27 02:05
138 :
音楽プログラミングML :01/10/27 08:05
>137 せっかく公開されたと思ったら。。。なぜか、MLが表示されなくなってる。。。 うーむ。。。 公開されたら、また書きます。
140 :
DTM板出身 :01/10/27 22:46
141 :
音楽プログラミングML :01/10/28 10:09
>>79 S
>SC-88ProやSC-8850も36kHz出力ですぞ。
32kHzです。sageておきます。
自己レス >どっちも落としたけど、自分のコンパイラがC++Builderのため、 >VSTiはサンプルはコンパイルできたけどCubase(DEMO版だけど)で認識できず、 steinbergのメーリングリスト過去ログ読みまくったら対処法があり、 無事認識できました。 っうか、SDK直しておいておいておくれ>steinberg ;_;
1つ質問があります。 回路図で見ると,アンプ等で良く入力と出力にコンデンサが直列に繋がって いるのを見かけるですが,あれは一体どの様な効果がある物なのでしょうか? また,プログラムで動作をリアルタイムにシミュレーション(?)する場合, 一体どの様な感じになるのでしょう…。 詳しい方がいらっしゃれば,ご教授頂けたら幸いです。
>>144 オーバーシュート/アンダーシュートを軽減。
>>145 カップリングコンデンサのことじゃないの?
>>144 AMP ICの出力端子と出力ジャックの間に入ってる
コンデンサだとしたらそれは直流成分カットのためです。
回路のことは工学板の方が的確に答えかえってくると思います。
>また,プログラムで動作をリアルタイムにシミュレーション(?)する場合,
アンプの動作でしょうか?それともプログラムの動作?
147 :
デフォルトの名無しさん :01/10/31 23:48
>回路図で見ると,アンプ等で良く入力と出力にコンデンサが直列に繋がって コンデンサをつけて、実際の回路を補整しているのではないでしょうか? つまり コンデンサの容量分だけ、立ち上がりが遅れると言う意味ではないでしょうか?
>>146 さん
そうです。そのコンデンサの事です。
プログラム的にそのカップリングコンデンサ(ですか?)をリアルタイムにシミュ
レーションする場合の事です。
直流成分カットに付いては最初の方で誰かが聞いていましたが,全部のデータ
がある場合であれば直流成分カットは平均値を引くだけで良さそうなのですが,
PCMの様なデータを1サンプルずつ順次入力していった様な場合にはどういう
プログラムをして良いのかが良く分からないのです。
すみません。↑の名前は144です。
カップリングコンデンサはDCカットが目的です。 DCカットはスピーカーに直流を流さない(流すと焼ける)とか の目的で入れる非常に時定数の大きな(数ヘルツ以下の) たいてい1次のHPF(ハイパスフィルタ)です ソフトで実現する場合、 入力を x として メモリ M1 出力yとすると y:=(x-M1); M1:=M1+b*y bは負数で小さな値 サンプリング周波数をfsとしたら およそ -(1-f0/fs ) f0は10以下 ですから浮動小数点で計算する必要があります 固定で計算するなら M1を k=-1/b 倍して y:=(x-M1/k); M1:=M1-y とします(M1には倍長計算が普通必要です)
×-(1-f0/fs ) ○ -2π*f0/fs
×bは負数で小さな値 サンプリング周波数をfsとしたら およそ -(1-f0/fs ) f0は10以下 ○bは小さな値 サンプリング周波数をfsとしたら およそ f0/fs f0は10以下 ×M1:=M1-y ○M1:=M1+y ・・・・何書いてたんだろ・・・鬱
>>150 最終出力手段が、ラインOUTとかの音声なら、件のカップリングコンデンサが働くから
何も考えなくても問題ない気がしますが、それでは計算時のオーバーフローとかの問題で
だめなんでしょうか?
あと出力をオシロのような画面にしたいんだったら、初期値を画面の中心として
それからの単純な差分で点を打っていくだけでそれっぽく見えると思う。
#Offsetは見る人に調整させるとして。
154 :
デフォルトの名無しさん :01/11/01 21:57
>Delあめ猫にゃさん 詳しく有難うございます。ちょっと見ただけでは理解できてないのでそれを元に 色々試してみます(^^; >153さん PCM出力である音源をエミュレーションしていて,元のデータが小さくて何倍かに しているのですが,時々大きな波形変化をする事があるのです。 具体的な感じですと,16bitPCMで半分くらいデータが大きく変化してしまう事が あり,これをPCのスピーカーなどで聞くと,”ブツ”と言う大きな音が鳴ってし まうのです。 実機ではそういうことが無いので,何故そうなるのかなぁと言うのが,例のコン デンサの効果なのか?と言うのが疑問だったのです。
>>155 整数(固定少数点)で計算してない? 計算のどっかでオーバーフローしてる可能性大きいよ。
ゲインが無い筈の単純な2次のフィルターでも 数式通りだとオーバーフローしてしまう
>Delあめ猫にゃさん 先の方法で試しました。HPFが掛かり,確かにDC成分が除去されるのは確認出来ました。 オーバーフロー等はチェックしています。また,PCMでやっているのでビット数の最大最小 でのクリップも行っています。 教えてもらった方法ですと,一旦大きな値が入力された時は,大きな値から段々と下がって 行きますよね。 で,一旦大きな値が入力された時の大きな値をどうやって無くせるかが今の所の課題です。
>>155 >PCM出力である音源をエミュレーションしていて,元のデータが小さくて何倍かに
>しているのですが,時々大きな波形変化をする事があるのです。
カップリング以外の別の部分がエミュレーションしきれてないような気がします。
実機で”ブッ”とまではいかなくても大きな振幅変化はあるのでしょうか?
あるのならアンプは電源以上の電圧へは振幅できず、飽和したりするので、
その辺かなと思います。
実機があるのでしたら回路の各点の電圧波形をオシロスコープで確認し
比較できると楽かと思いますが、そこらへんにあるもんじゃないから無理ですよね。
160 :
デフォルトの名無しさん :01/11/18 14:43
FFT表示プログラム作ったら非常に低い周波数でけっこう大きい信号が なんだろと調べたら、FFTの実行周期毎にCPUの消費電流が増えるせいだった ヘッドホン無音で大音量にして実際に音が出てるのを確認 サウンドボードはカタログS/N良くてもダメだな IDE上をマウス動かすとブリブリ音するのも発見。 マザー内臓のも、手持ちの2枚も同じ症状 と判ってONKYO-USBサウンドボード買ったら不定期にブチ音が入る win2000との相性かなあ・・・鬱
>>160 サウンドボードを鉛板でカバーしてみれば?
アルミホイルにラップを撒いてそれで遮蔽してもOK
163 :
デフォルトの名無しさん :01/11/18 21:30
>>160 マウス移動ノイズありますね。
私の環境だと、Win2000の時はマウス移動ノイズがはいるんだけど、
Win98の時はなぜか入らんのです。ちなみに、3000円程度のPCIサウンドカード。
ドライバのできで、ノイズの乗りかたが変わるってどういうことだろう。。。謎。
マウスノイズの発生源は、ドライバ事態のチョンボってことかな。
っつーか、CPU-FAN、HDD、電源、全部ノイズのります。(50〜100Hzくらい しかも、PCIバスから直接。 アルミでくるんでも、ショートするのがオチだと思われ。
165 :
デフォルトの名無しさん :01/11/20 13:54
age
音ということで便乗なんですが、 人間の声を簡単な演算でできるだけ小さなファイルサイズで録音するにはどうしたらよいのでしょうか。 音質は言葉の聞き取りが出来る程度でかまいません。 イメージ的には昔の”サンダーフォース”的な音質でもいいとおもいます。 漠然とした目標なんですが、信号強度の分解能を8bit以下、サンプリング周波数は3k以下としたいとおもいます。
168 :
デフォルトの名無しさん :01/11/20 18:41
簡単な演算ではないけど、人間の声なら携帯電話やVoIPに使われてる圧縮方法がいちばんでしょう ITT 携帯電話 VoIP で検索してみて下さい
170 :
デフォルトの名無しさん :01/11/20 21:36
PCM 8bit*3Kサンプリング/s は厳しい 。 4bitADPCM*6K/s ならなんとか
サンプリング定理にはずれないようにね。
>>166 gogo.dllでも使ってmp3にすれば?
173 :
デフォルトの名無しさん :01/12/03 01:52
スペアナ作ってるんですが、波形表示する際のdB変換で困ってます。 各周波数帯の振幅をdBに変換する際はどうすればよいのでしょうか。
174 :
デフォルトの名無しさん :01/12/03 08:16
>>173 周波数分析は フィルタ? FFT?
どちらにしてもlog10(結果の2乗和)*10
FFTで行っています。波形から求めるならば振幅が最大のとき 0dBとなればいいというのは分かるのですが、FFT結果から 求める場合にはどうするのでしょうか。
176 :
デフォルトの名無しさん :01/12/04 08:22
FFTは実数ペアを複素数においてする方法でやってるよね? それぞれ複素数で得られるから そこらへんは大丈夫? それから 2^n のFFTだと全体に何倍になってるかも判ってるよね? 拾ってきたFFTルーチンだと あらかじめ割られているかもしれないけど 0dBをどこにおくかはそんなに大事じゃないと思う 16bitの符号付数だとすれば、 2^15 が最大振幅だから log10( (2^15)^2 )*10 を引いてやる方法もあるし フル振幅のサイン波を 0dBと考えて log10( ((2^15)^2)/2 )*10 とする方法もあるよ 他の良く使うソフトと比べて同じになるように調整すればいいんじゃないの
手捨てす。
FFTは自前で実装してます。 でも実数をペアにするんじゃなくて、虚数部はゼロにしてます・・・。 とりあえず4096点でやってますが、いろいろ考え直してまたきます。
179 :
デフォルトの名無しさん :01/12/04 13:25
レクタンギュラー、ハニング、ハミングを切り替えられるように なっています。ゲイン分ってことは、窓関数で圧縮される分を 考慮して、FFT結果(絶対値)の最大値を求めるという ことでしょうか?
181 :
デフォルトの名無しさん :01/12/04 15:02
いや、 絶対値じゃなくて log10(実数部^2 + 虚数部^2)*10 横軸が対数の場合は 帯域分2乗和平均するかピークを求める 窓関数のゲインてのは ハニングの 0.5-0.5cos(2πn/L) という式を使ってたら 2倍しないといけないとかそういう意味
182 :
デフォルトの名無しさん :01/12/10 16:41
はじめまして、質問です。 MIDIシーケンサなんですけど… 曲の途中から再生をしたいときって リバーブ、エクスプレッション、システムエクスクルーシブなどの値が 曲の場所によって変わるので 曲の最初からノートON、OFF以外を一気に送らないといけないんですけど この方法ってヤバイですよね… なんかイイ方法あります?
183 :
デフォルトの名無しさん :01/12/10 22:02
>>182 直前との差分持っておけば?
あと、重複するイベントは最後のだけ送る。
>>183 直前との差分っていうのはどういうことですか?
PS.すいません、作ってるのシーケンサじゃなくてプレイヤ−でした、書き間違え。
取りあえずステートチェンジイベントをすべて把握しておかないと いけないって事になるんですが、 GMならたかが知れてるんですが。 XG、GSとなるとかなりの量になりそうです。 すべてステートチェンジイベントを調べる必要はありますか?
>>184 プレイヤーでも同じ事。
めんどいのでくわしく説明しないけど、
「直前」てのは再生前の状態の事。
いきなり途中から再生するんだったら、
曲の最初から、その途中までの情報。
いきなり最初からのイベントを垂れ流したんじゃ、
長い曲の場合いつまでたっても始まらないでしょ。
187 :
デフォルトの名無しさん :01/12/10 22:24
だから重複するイベントは最後のを残して全部削除する。 ステートチェンジをすべて追う必要はない。
>>186 なるほど、そう言うことですか。ありがとうございます。
でやはり
すべてステートチェンジイベントを調べる必要があるのでしょうか?
GS,XG規格など含めて。
>すべてステートチェンジイベント すべてのステートの間違いでした。
190 :
デフォルトの名無しさん :01/12/10 22:26
ランダムアクセス性を保ちたいなら、何小節か、何秒か毎に その時の状態を持っておく。
191 :
デフォルトの名無しさん :01/12/10 22:28
>>188 音源の音色の状態が変化する可能性のあるやつは
すべて持っておく必要があると思うよ。
>>190 ありがとうございます。
っていうことは
>>188 でも書いたように
GM,GS,XG規格すべてのステートをやはり調べ挙げる必要があるのですか?
どうなんでしょう?
>すべて持っておく必要があると思うよ やはりもっておくべきなんですね。ありがとうございます。 >GM,GS,XG規格すべてのステート これらは調べ上げるぐらいの量なのでしょうか? GMであれだけ多いとしたらかなりの量になりそうですが…?
>調べ上げるぐらいの量 「調べ挙げることが出来る量」のまちがいでした。
195 :
デフォルトの名無しさん :01/12/10 22:37
>>192 そんなに調べたりする必要があるんだっけ。
初めから全部把握しなくてもいいんじゃない?
GS/XGで使いそうなヘッダとか
エクスクルーシブメッセージとか、
知らないやつはとりあえずナニも考えずに送っちゃって、
パフォーマンスが問題になるんならジョジョに対応して
いけばいいんじゃないかなあ、と思う。ああIMEがヘンだ
>知らないやつはとりあえずナニも考えずに送っちゃって 途中から再生するためには送るだけでなく保持しておく必要が あるとおもうんですが? で、保持するためにはステートすべて把握する必要があると思うんですが 間違ってたら指摘お願いします。
197 :
デフォルトの名無しさん :01/12/10 22:43
>>196 だから、知らないイベントはなにも考えずに保持する、
って事なんだけど。把握する必要あるの?
198 :
デフォルトの名無しさん :01/12/10 22:46
もっと楽になる様に考えた方がいいよ。 送信するデータ量なんてたかが知れてるんだから。
>知らないイベントはなにも考えずに保持する 知らないイベントに対して どこがステータス識別部(ID)でどこがパラメータ部(数値)かがわからない ってことはないですか?
>もっと楽になる様に考えた方がいいよ というわけでここに質問しにきました。
201 :
DTM板から出張@名無しさん :01/12/10 22:51
フリーのソフトウェアMTRて無い? 出来ればかなり実用できるレベルの、 それが無ければ、VC++のオープンソースで 実用レベル満たしていないの無い?(その方が無いか
202 :
デフォルトの名無しさん :01/12/10 22:53
>>201 買った方が早い。
(しまった、禁句だったか)
>送信するデータ量なんてたかが知れてるんだから しかし曲によっては同一ステートの連続変化とかがあると (たとえば100個連続) とかあると死にません?
204 :
デフォルトの名無しさん :01/12/10 22:56
>>199 仮にIDとVALUEがあって、IDだけで識別してるなら、
知ってるIDだけそれなりに処理して、あとはそのまま
記録するって方法じゃ駄目なの?
処理としては簡単そうだけど。
205 :
デフォルトの名無しさん :01/12/10 22:59
>>203 だから一度試してみて、パフォーマンスが問題になったら、
その都度処理するIDを追加していけば?って事なんだけど。
>しかし曲によっては同一ステートの連続変化とかがあると
だからそういうのに対しては最後の状態だけ持っておけば?
って言ってるじゃん。
206 :
デフォルトの名無しさん :01/12/10 22:59
>あとはそのまま記録するって方法じゃ駄目なの? これが一番よさそうですね。 ただ知らないIDのステートチェンジが連続で出てくることがあったら すべて出力することになりそうなので やばそうです。割り込みルーチン内で長く処理をとめることになりそうで。
207 :
208=206 :01/12/10 23:01
>最後の状態だけ持っておけば だから状態を持っておくためにはステートIDを 理解してないとだめです。
206と207名前間違えです…スマソ。自分です。
209 :
デフォルトの名無しさん :01/12/10 23:05
>>206 >やばそうです。割り込みルーチン内で長く処理をとめることになりそうで。
適当なタイミングとって送ればいいんじゃない?
>適当なタイミングとって 割り込みルーチン以外で書く ってことですか?
211 :
デフォルトの名無しさん :01/12/10 23:08
たとえばMIDI信号で1秒間に送れるバイト数とかを概算でいいから 見積もっておいて、デルタタイム0の連続データに対しては前倒し で送ってしまうとか。
>>211 つまり割り込みルーチンで処理する「重み」を
2、3回に分けるってことですか?
それだと根本的解決にならなくないですか?
ここでは曲の途中再生の際に
大量データ転送が生じるのが問題です。
213 :
デフォルトの名無しさん :01/12/10 23:16
>>212 2、3回というか・・
途中から再生するのってそんなにシビアなタイミングが必要なの?
プレイヤーなら少しぐらい遅延しても気づかないよ。
それよりも音源に負担をかけない様に送らないと、
まともに鳴ってくれないと思うけど。
>>213 あ、必要ないです。
つまり、かなり複数回に分けて送ってもいいってことですね。
その分け方がまた問題になりそう…
でも一応これで解決っぽいですね。
・メジャーなステートチェンジIDは控えておき最後のひとつのみ送信
・マイナーなステートチェンジはすべて送る
・負荷が重くなりそうなときは割り込みを多数回で分散させる。
こうでしょうか?
215 :
デフォルトの名無しさん :01/12/10 23:28
>>214 割り込みとか考えないで、(つまり再生ルーチンはそのままで)
単純に再生データに対して加工するのが簡単だと思う。
>単純に再生データに対して加工するのが簡単 よくわかんないです。説明きぼうです。
217 :
デフォルトの名無しさん :01/12/10 23:33
具体的に言うと、(途中)再生用の音源初期化用バッファを持って おいて、プレイヤーは最初にそのバッファをかならず経由して データ送る様にしておく。曲の途中から再生する要求が着たら、 そのバッファに必要なデータを溜め込んで、プレイヤーに、ただ 再生要求を送る。
218 :
デフォルトの名無しさん :01/12/10 23:37
↓初期化用バッファ ------------| ↓曲データ - - - - - - |a----------------------------- 時間→ バッファは可変長。 プレイヤーはaの時点で、 初期化用バッファ→曲データ に出力を切りかえる。
バッファに対する同時アクセス共有問題とかは どうやって回避するんでしょう? 割り込みはスレッドと違うので クリティカルセクションが使えないきがするんですけど。
220 :
デフォルトの名無しさん :01/12/10 23:49
>>219 同時アクセスなんて起こらないと思うけど?
プレイヤーという表現が悪かったかな?
いままで言った「プレイヤー」は「再生エンジン」に読み替えてね。
「再生エンジン」に要求を出す時点ですべてのデータの書きこみは
終わってると考えて。
切り替える、とかを考えたくなければ連続したメモリに並べればいい。
↓初期化用バッファ ↓曲データ
<-------------|----------------------------->
時間→
<…始点
>…終点
「再生エンジン」はただメモリの始点から終点までの範囲を再生する。
221 :
デフォルトの名無しさん :01/12/10 23:54
処理の流れは、 ユーザーが再生ボタンを押す ↓ ポインタが曲の途中ならつじつまが合う様に初期化データを作成 ↓ 初期化データと(途中からの)曲データをメモリに並べる ↓ 「再生エンジン」に再生要求を出す。
あ、なるほど、よくわかりました。 今の「再生エンジン」に初期化バッファ と初期化バッファ再生 を追加すればいいわけですね。
う〜ん、でもいまいち このやりかたの利点がわからないです。 割り込みルーチン内で ならつじつまが合う様に初期化データを作成 をしなくていい、ってことでしょうか?
間違い・ 割り込みルーチン内で 「つじつまが合う様に初期化データを作成」 しなくていい、ってことでしょうか? でした
つまり 割り込み部分以外で 「つじつまが合う様に初期化データを作成」 することが出来る ってことですか?
226 :
デフォルトの名無しさん :01/12/11 00:03
>>224 なんで「割り込み」にこだわるのかなあ・・
再生を開始する時点で割り込みを始めるんだよね?
開始までの間って、なにか割り込みが関係あるの?
227 :
デフォルトの名無しさん :01/12/11 00:06
>>225 多分割り込みって「再生エンジン」内部の事でしょ?
今「再生エンジン」内部の事は、
ナニも考えない方向で話を進めてたんだけど。
「再生エンジン」の役割はただ、始点から終点までの再生であって、
その内部についての実装手段はどうでも良い。
>開始までの間って、なにか割り込みが関係あるの? これまでは割り込み開始時に 割り込みルーチン内で初期化をやろうとしてました。 これが間違いということで。 「割り込み開始前に用意」のほうが自然ですね。
229 :
デフォルトの名無しさん :01/12/11 00:17
>>229 そうみたいですね。これからはそちらに書くようにします。
どうもありがとうございました。
231 :
デフォルトの名無しさん :01/12/14 12:41
ASIOの資料ってどこかにありませんか?
232 :
デフォルトの名無しさん :01/12/14 12:46
WinGrooveのソースコードって、どっかで流出してないだろうか。 timidityは難解だ。
234 :
デフォルトの名無しさん :01/12/27 01:03
あげ
236 :
デフォルトの名無しさん :01/12/28 04:09
このスレの内容的にbuzzは見逃せないと思うけど、 なんで出てこないのかna?
死んだからかな? これからはpsycleか。
238 :
デフォルトの名無しさん :01/12/28 12:34
んな簡単に死んだからといって切り捨てるの?
239 :
デフォルトの名無しさん :01/12/30 12:13
DirectSoundをベースに効果音はWAVファイルで、 BGMはMODという事は可能ですか?
BGMがMODのゲームなら見たことあるよ。
WAVが同時に遅延0.1秒以内ぐらいで鳴らせるかどうかが重要なんだよね。 以前にMODPlayer(だったかな?)のライブラリを使ってやったときは 一秒近く遅延が発生した。漏れの使い方わるかったんかもしれんが。
242 :
デフォルトの名無しさん :02/01/01 00:36
243 :
デフォルトの名無しさん :02/01/02 14:56
結局buzzはもうだめなの?
>デバドラ書く技能を要求されるとか。 あほらしいことだがwinのwave in/outは ドライバとしてしか存在できないアーキテクチャになっているので、 この手のソフトは一見ドライバに見えるソフトとして実装するしかない。 アプリとして作れるようになっていればさぞかし楽だったんだろうが、 そういうことにしてしまうとMSとドライバ(そしてハード)屋との 利権構造が保てなくなるので、わざとしてないのだろう。 まあカーネルモード云々という問題もあるが。 似たソフトとして、midi in/outをバイパスする仮想ドライバとか、 プリンタ仮想ドライバとして「まとめ印刷」をやってくれるソフトとか、が既にある。 midi/audioみたいなリアルタイムのものならば、カーネルモードでないとまずい などの技術的問題があるだろうけど、 プリンタメーカーが出してるドライバは完全に利権の問題だな。 あんなものを「ドライバ」として作る技術的必然なんか何もない。 わざと作成やインストールが色々面倒なので参入障壁の高い「ドライバ」として作ってる。
245 :
デフォルトの名無しさん :02/01/02 19:19
>>241 最近のModplug,fmod,bassではそんなことはないと思う。
>>244 Windows3.1の話ですか?
MIDIなんてソフトMIDIからべた通信まであるのに....
最近はOSデフォルトのMIDIシンセですら4ms〜100msとかなのに
あとWavもDirectSoundのサウンドバッファーでミキシングされるので
音の数増やしても遅延は変わらない
演奏って要は”プログラム”なわけだから全体で時間的なクッションをおいてやれば
結果としてはちゃんと同期したものが作れるんじゃない?
246 :
デフォルトの名無しさん :02/01/02 22:43
>>245 >MIDIなんてソフトMIDIからべた通信まであるのに....
独自仕様の通信方法はここでは話題ではないっしょ。
「およそどんなアプリにでも」対応しようと思ったら、
win上では、ドライバに擬態(?)する作りにせざるを得ない。
>演奏って要は”プログラム”なわけだから全体で時間的なクッションをおいてやれば
>結果としてはちゃんと同期したものが作れるんじゃない?
それのことをレイテンシというわけだ。
で、リアルタイム弾きと合わせるとおかしなことになる。
247 :
デフォルトの名無しさん :02/01/04 08:49
VSTでディストーションの作り方を教えてくダサイ
>>247 音量上げてクリッピングするだけじゃん。
それとも、VSTのプラグインの話?
249 :
デフォルトの名無しさん :02/01/04 14:42
>>244 プリンタドライバについては、グラフィックとプリンタを同等に扱うために
MSがややこしくしたという経緯があるのでは。
そのおかげで、ほぼ全てのwinアプリはコード上何の変更も無しに
プリンタ対応になっているのでは。
(いわゆるunixではそうは行かないでしょ)
スレ違いなのでsage
251 :
デフォルトの名無しさん :02/01/04 19:25
>>246 4msでもだめというの?
ライブ会場での音の時間差を考えると根本的に目的を見失っているように見えるけれど
スピーカーから距離はどれだけとってる?
生演奏なら距離で調整できるし
リアルタイム演奏だって電子楽器だったら遅延調整できるって話なんだけど
理解すらできない?
あと独自仕様がなんでだめ?MIDI機器と通信するのは単にRS232Cポートとか
ジョイスティックポートたたけばできるし、ドライバーは一切無関係
結果が目的じゃないの?
何がしたい?自分ができないクンだって自慢?DirectAudioしってる?
アプリケーションレベルでなんでドライバ云々をぐずぐすいうのか理解に悩む
252 :
デフォルトの名無しさん :02/01/04 20:01
>>248 プラグインの作り方です。
フリーのソースを探しても、あまりなかったんで聞いてみました。
実物の原理を説明してるところでも良いので参考になるところは
ありませんか?
>>252 248が言うようにディストーション=クリッピングなら
inからoutへの代入箇所で、inを閾値判定し
代入値を変更させればいいだけでない?
具体的には
VSTi SDK sample AGain.cpp line 80
(*out1++) += (*in1++) * fGain; // accumulating
を
float ftmp=*in1;
if(*in1<(-1*fGain)){ftmp=-1*fGain;} //0<fGain<1.0 -fGainで負クリップ
if(*in1>fGain){ftmp=fGain;} //fGainで正クリップ
(*out1++)+=ftmp;
in1++;
と変更する程度では。
もちろん、in2やReplacingにも同様の処理が必要です。
254 :
デフォルトの名無しさん :02/01/04 21:57
>>253 ありがとうございます。
試してみます。
255 :
デフォルトの名無しさん :02/01/04 22:11
>>253 試してみたら、リバーブのような感じになって歪みませんでした。
もうすこし、がんばってみます
なんとかできました。 ナチュラルな歪みを目指してがんばってみます
257 :
デフォルトの名無しさん :02/01/05 00:39
>>251 MIDI=RS232Cって思い込んでるヤツ発見!
きっとオンボードのMIDI I/Fしか使ったことないんだな(藁
>>257 同意。
間違ってる知識を堂々とひけらかさないで欲しいもんだな。
自然な歪みがなかなか出来ません。 エフェクターを作るときはやはり元々ある回路を参考に作ってるんでしょうか? あるエフェクターの内部の回路をシミュレート出来たら、同じような音が作れるのでしょうか?
260 :
トの名無しさ :02/01/05 02:26
>>259 もともとはアンプにでかい音つっこんで歪ませてたんだよね。
エフェクターも、それのシミュレートだよ。
あと、デジタルエフェクターは内部の回路をシミュレートしてたりするよね。
アンプシミュとか流行ってる。
ということで、回路シミュレートできたら同じ音になるよ。
で、単純にクリッピングすると波形に角がついて高周波がでるから自然な
音にならないんじゃないかな。
波形の角をまるくする処理が必要と思われ。
263 :
デフォルトの名無しさん :02/01/05 10:29
>>257 >>258 ジサクジエン?
DirectMusicとかソフトシンセの話し出しているのにどうしてデバドラの話になるのかねえ。
アプリレベルでそんなの意識するほうがおかしい。
大体最近のMIDIはソフトかUSBなんだから規格のドライバーに従ってるからおかしい
という論理自体サウンドプログラムからは外れていると思う。
ところで
最近の新しいMIDIアプリはDirectX8ベースになっているみたいで
DirectAudioだと複雑なプログラム無しでディストーションやフェーズかけられるので
サウンドプログラマーはやはり導入必須じゃないかなあ。
昔はハードでのイフェクトメインだったけれど光出力のあるMIDI音源ならば
デジタルで取り込んでオーディオデータとして処理したほうがよさそうだ
win2kとかwin98(se?me?)からはカーネルにサウンドミキサー関連が入ったねえ。 これでソフトシンセの遅延が少しは減るのかな?
>>260-262 そうですか。参考にしてみます。
ところで、良い歪みの条件ってどういうものでしょうね。
そんなのがあるかどうかもわかりませんが、
もしあるんだったら、それに沿って作ればいいだけなのに。
既存の回路の音に近づけるのも良い事だと思いますけど、
どうせなら、デジタルでしか出来ない処理をやってみたいですしね。
>DirectAudioだと複雑なプログラム無しでディストーションやフェーズかけられるので >サウンドプログラマーはやはり導入必須じゃないかなあ。 すると、どのソフトもみんなMSが用意した同じような音がするようになるんでしょうか?(わら (そういうことにならないためにも、)どれくらいのところまで、自分が書いたエフェクトルーチンを 入れこむ(callbackだと思うけど)ことができるんでしょうか?>DirectAudio
>>251 >ライブ会場での音の時間差を考えると根本的に目的を見失っているように見えるけれど
するとそのシステムは逆にヘッドホンでは聞くに耐えない代物であるわけだ(わら
わざわざ悪いほうを基準にしてどうするんだ?
>リアルタイム演奏だって電子楽器だったら遅延調整できるって話
そのシステムの限度を越えて、遅延ゼロに近づける(調整する)ことは、不可能でしょ。
4msなら4msより少なくは出来ない。
で、演奏者の立場だが、我慢すればできないでもないが、
常時4ms(だけならまだしもそれ以上)の遅れがあったら、程なくムカついてくるぜ?
#ところでWindows3.1がなんなんだろう?あの時代からmidiやaudioのAPIは有ったぞ。
>あと独自仕様がなんでだめ?MIDI機器と通信するのは単にRS232Cポートとか
>ジョイスティックポートたたけばできるし、ドライバーは一切無関係
そんなに他の世間一般のアプリと対話したくないわけ?
したくないなら勝手にやればいいが、それをmidiと呼ぶことの意味が喪失していくだけ。
まあ、osメーカーに依存しない形で、 yet another な「midi」API setを作るっていうなら
それはそれで感心するが、普及しないかぎりそれは「存在しない」のと同じなので、
こっちとしては評価のしようが無い。
>>250 >グラフィックとプリンタを同等に扱うために MSがややこしくしたという経緯
そのためだけなら、あんなことはしなくていい。
単に画面とプリンタの両方が、テキストベースからグラフィカルベースに移行しただけ。
その程度のAPI setを作るのは、別にややこしくする必要もない。
問題はMSが、そういうAPIとハードとのあいだに、「正体不明の」ドライバが
介在する余地を、作ってしまったことだ。
だから、プリンタもグラフィックカードも、謎のドライバによって動くという世界が
できあがってしまった。
そうしたほうが、ハードメーカーも、それとつきあうMS自体も、金を儲けやすいからね。
各ハードメーカーが「独占」状態になるほうが、お得というわけだ。
unixは、たまたまXがそっち(印刷)方面に熱心じゃなかっただけ。
一方で(unixで)DisplayPostScriptというのを使ってプリンタと統合しよう
という動きもあったんだが、ポシャったね(わら
DPSがメジャーになっていたら、どのディスプレイカードもプリンタも
PostScript一発でオッケーという話になっていたはずだったのだが。
(PSでは重すぎるので、他のものでないとマズいとは思われるが、共通規格という意味では同じこと)
269はフリーメーソン陰謀説とかが好きそうだね。 具体的な中身はまったく知らないと見た。
271 :
デフォルトの名無しさん :02/01/06 01:36
>>269 APIとハードの違いを吸収するのがドライバだろ?
アプリ屋に全てのハードを完全に理解してサポートしろとか言うつもりかな?
272 :
デフォルトの名無しさん :02/01/06 02:13
>>269 Cとかアセンブラで書けばポート出力ぐらいできるから勝手にやれば。
繋いだ機器がどうなっても知らないけど。
ADPCMのファイル形式 って何を調べればのっているもんなの? 自力デコードやりたいんで情報ください
>273 標準規格になってるものは規格書を入手する 規格書は規格団体の収入源なので買ってあげてね
276 :
時代遅れの七資産 :02/01/06 15:28
>>242 VirtualAudioCableみたいなやつ、Win3.1/95/98なら結構簡単に作れる。
16bitのDLL生成できるコンパイラがあれば、
それを.drvにリネームすれば、ドライバの出来上がり!!
DllMainのかわりにDrvMain置いたりとか、
DrvProcってなコールバックを作らなきゃならんとかめんどいけど
WDMよりは楽なような気がする。
亀レススマソ。
>>267 コールバックじゃなくてDirectXプラグイン(DirectShowフィルタ)を使用する(DMO形式)
なのでこの形式で作ればDirectAudioで大抵使用できる。
>>271 >APIとハードの違いを吸収するのがドライバだろ?
>アプリ屋に全てのハードを完全に理解してサポートしろとか言うつもりかな?
そんな処理は、もっと下の層に持っていけば済むことだ。
プリンタについて具体例を言えば、PostScriptみたいなフォーマットが有れば済む、ということだ。
そうすりゃアプリ屋はPostScriptだけ知っていればよい。
プリンタ屋はPSインタプリタをプリンタ内部に持たせればよい。
インテリジェントなハードという概念を知らぬのか?
USBだってそうだ。あれのおかげで、周辺機器の機種1つごとに別々のドライバ
などという下らないものを、だいぶ減らせるようになった。
>>270 >269はフリーメーソン陰謀説とかが好きそうだね。
おう。三度の飯より好きだ。
>具体的な中身はまったく知らないと見た。
でもよ、じゃあ、Linuxの連中があんだけプリンタで苦労したり、
逆に一部の会社がちょっとだけLinux用ドライバ(ただしOpenSourceではない)を出しただけで「ニュースになったり」
するのは、何故よ?
プリンタのアクセスのしかたなんか、すぱっと公開しちまえばよかろうに、
そうしてないのは何故よ?
「しないほうが利益があるから」だろ?
企業なんだから。
>>275 規格書の名前はなんというのでしょうか?
本屋に行ったのですが、それらしきものは見あたりませんでした。
>>278 結局、PSインタプリタを内蔵したプリンタを作るよりWin側で
ドライバを実装したほうが楽って事だよ。
間接的には「しないほうが利益があるから」とも言えるが。
282 :
デフォルトの名無しさん :02/01/06 19:55
これってサウンドプログラミングのスレだろ
なんで話がプリンタドライバになるのかなぁ。
サウンドプログラミングがわからないからって自分の
知識の範囲で話をしないでほしい。
こっちはオーディオやMIDIベースでのアプリケーションプログラムの話を
しているんで見当違いな言いがかりはやめてほしい。
>>279 単に憶測で物言っているだけだろ。
そもそもMIDIってのは公開された通信規格なんだから
独自ハードに依存するプリンタの仕様を公開するしない
しないから気に入らないというだけで見当違いだし
アプリケーションレベルでハードレベルまで考えないのがOSだろ。
要するに発想がDOSなんだよ。
サウンドのことわかんないならいた違いだよ
284 :
デフォルトの名無しさん :02/01/07 07:14
>>278 USB に誤解があるようです。
>>279 スレちがいだけど、
いまでもカナメなところは公開されてません。
このあたりはノウハウの塊らしく、そのバイナリにアクセスする方法が
示されているだけです。
かつ、それはプリンタのアクセスのしかたでもありません。
>>規格書 どういうふうに圧縮されているか というのはわかりそうですけど 比率テーブル(2000年三月号のC MAGAZINEより) というものが wavファイルの先頭から何バイト目に格納 されているかとかいう情報はわかりそうにないのですけど・・・・ そういうものも載っているのでしょうか?
>285 非常に判り難く書かれていますが載っています G726ではlog2(|差分|)-スケールファクタ という形で載っています
>そもそもMIDIってのは公開された通信規格なんだから その話、もともとpc内部でのアプリ間のmidi/audio信号(に相当するもの)の 通信の話題だったんじゃなかったのか? MacでいうApple MidiManagerみたいな。 とすれば、MIDIそのものが公開されているかどうかは、関係ない話だ。 逆にMIDI規格はPCの中のことは構ってくれない。 それこそOS(API)メーカーの自由裁量の範囲だ。
あげ
290 :
デフォルトの名無しさん :02/01/16 01:58
Windowsでmp3をつっこんで波形を得るもっとも簡単な方法は 何でしょうか? DirectSoundはそのあたり対応しているのでしょうか?
>290 acmでデコードすれ。
これは*.acmファイルが必要なんですね・・・。適当に書いて知人に試してもらった ところ、半数ほどが再生できなかったので、自前でデコードエンジン書くことに します。ありがとうございました。
DirectShowという手もあるな。
DirectShowもacmも同じコーデック使うのかな?ならacmでだめならDirectShowもダメか。 DirectShowでフィルタだけ使う方法がわからんのです。 pinオブジェクトを接続してサウンド出力やファイルに出力は出来たのですが、メモリにデータを出力、またはメモリのアドレスを取得ってできるのかな。 あるいはそういう*.axを作らなきゃならんとか?
MP3再生用のACMはWindowsMediaPlayerインストールさせれば勝手に入るけどなあ それではダメ?
waveOut* APIで再生させてみましたが、やはり半数ほどしか 再生できませんでした。これもacmと関係あるんでしょうか。
再生できなかったファイルアップしろ>296
>DirectShowもacmも同じコーデック使うのかな NTなら、winnt\sytstem32で、*.axがDirectShow、*.acmがACMのコーデック。 それとたしか、DirectShowは、ACMのコーデックを扱ってくれたはず
本当にファイル依存ならエンコーダーによって違うとかのはず。 同一フォーマットでもファイルによって差が出る? メディアプレイヤーで再生できるならやり方の問題では? acmならやったことありますが wavヘッダーがあるmp3ファイルなら取り除いて、フレーム単位で送る。 あるいはビットレート等の取得が間違ってるとか。
>>294 流れてくるデータ拾いたいだけならSampleGrabber つかえば?
そういえば、我輩の環境でにも、MediaPlayerで再生できない mp3ファイルがあるな。winampは普通に再生されるんだが。 そういう話か?
302 :
デフォルトの名無しさん :02/01/20 13:05
max/mspがWinででないかなー。
303 :
デフォルトの名無しさん :02/01/20 15:37
>>302 開発中のはず(ずっと開発中、、、鬱)
でもPDならあるさ!
304 :
デフォルトの名無しさん :02/01/20 16:48
このすれと関係あるかわからんが、メディアプレーヤーで 可変ビットのmp3の再生をしようとしたら、右上の、トータル 時間の表示がおかしくねえか?
305 :
デフォルトの名無しさん :02/01/21 03:08
失礼します。 waveOut系でPCMをリアルタイム合成しながら演奏しているのですが、 バッファを大きめに持った場合の発音までのタイムラグが気になります。 waveOutWriteした後そのデータが実際に発音されるタイミングと 同期を取りたいのですが、何か方法は無いでしょうか?
>>305 バッファを小さめに取るしかない。
処理が重めなら転送レート(つまり再生周波数)下げるとか。
>305 waveOutGetPositionで取得した値と追加したバッファのデータサイズ合計の差分で ある程度はわかるけど・・精度はイマイチ。あるいは再生終了フラグのたったとき、 その次に追加してあったバッファが再生開始されたということでどうでしょう。
>>306 特にユーザ入力がトリガになって発音される場合は
バッファをできる限り小さくとるしか方法は無いでしょうね。
ただ、今回は発音をトリガに同期を取りたいと考えているので
バッファを小さく取る以外の方法を模索したいと考えました。
>>307 >あるいは再生終了フラグのたったとき、その次に追加してあった
>バッファが再生開始されたということでどうでしょう。
なるほど。waveOutWriteしたデータが発音されたか判定できるなら、
再生開始までポーリングするのもアリかなと考えていました。
こちらの方法で試して見ます。
309 :
デフォルトの名無しさん :02/01/25 15:32
超優良スレage 次号のCマガはこれ系の特集みたいですね 1から勉強させて貰います
>>309 先月のCマガ(プログラマーのための数学)を読んで
今のうちに理解を深めておくのも吉。
313 :
DirectXAudioのアルゴリズムについて :02/02/04 01:45
DirectXAudioの内部的な計算方法はどのようにされているのでしょうか? DirectXAudioの3Dサウンドやドップラー効果の計算方法が知りたいのですが。 ご存知の方がいらっしゃいましたら是非教えてください。
314 :
デフォルトの名無しさん :02/02/04 01:51
315 :
デフォルトの名無しさん :02/02/04 01:52
つーかBioの掲示板ってIPアドレスばれちゃうの?
316 :
デフォルトの名無しさん :02/02/04 20:44
>>314 オレも気になる、DAudioのソースってでてるの?
どなたかお勧めのMODフォーマットを教えてくだされ。 今はどれが主流になってるですか?
318 :
デフォルトの名無しさん :02/02/05 02:05
DAudio以外でも良いので3Dサウンドのアルゴリズムについて書かれた記事ってないでしょうか?
319 :
デフォルトの名無しさん :02/02/05 02:12
マルチポストは嫌われるよ。
320 :
デフォルトの名無しさん :02/02/05 03:08
>>313 Direct3DSoundはドルビー社のCODEC使ってるし、社外秘なんでは?
左右の遅延とフィルタリングが基本なんだろうなぁ
ドップラー効果程度ならば、物理学(波動)の本を読めば書いてある
要は、相対速度がどのくらいならば、周波数がどのくらい上がる(下がる)のか
それだけのこと。
322 :
デフォルトの名無しさん :02/02/09 02:12
Waveの波形データから音量をデシベル単位で求めるにはどのようにすればよいですか?
323 :
デフォルトの名無しさん :02/02/09 02:40
.wavの詳しいフォーマットが書かれているサイトってありませんか?
>322 log10(level)*20 levelは適当な時間の中のMAXレベル。 >323 バイナリエディタで調べれ。簡単に分かる。 あとMSDNに情報ある。調べれ。
325 :
デフォルトの名無しさん :02/02/09 04:55
>>324 maxレベルとは、44.1/16bit波形データ中の-32768〜32767の絶対値のことですか?
>325 dB表記は減推量だから正確には、 ( log10( fabs( level ) ) - log10( fabs( MAX ) ) ) * 20 かな。 MAXは16bitなら32768。
×減推量 ○減衰量 ウツダ…ネヨウ
>>325 音量は理論的にはlog10(ΣX[i]^2)*10 -定数
329 :
デフォルトの名無しさん :02/02/12 14:34
WAVEファイルのヘッダーのフォーマットチャンクをと読み込もうとするのですが、 メモリをアロケートするとこで実行エラーが出てしまいます(;´д`) どなたかヘルプをお願いします。
330 :
デフォルトの名無しさん :02/02/12 17:34
アロケートってなに?
>>329 サウンドプログラミング以前の問題だろ。
自分の使ってる言語の初心者向けスレ逝って来い。
332 :
デフォルトの名無しさん :02/02/12 18:09
>>331 ハハハ まあまあ でもワラエタ
333 :
デフォルトの名無しさん :02/02/19 03:07
>>329 メモリをアロケートするとこってわかってるんならなおさらwavとは無関係じゃないか?
たしか21バイト目から16バイト読むだけですが。
下がってきてるな
このスレに書き込んでる結構詳しい人は、 学術系の人?それともヤマハとかローランドの エンジニアの人? それとも趣味かな? なんにしても尊敬します。
>>334 漏れはしがないフリーソフト作者です。
カキコもするけど、正直ついてけない話題も多い。
ま、
>>334 は今月号のCマガの特集でも読んでなさいってことだ。
336 :
デフォルトの名無しさん :02/02/19 23:14
337 :
デフォルトの名無しさん :02/02/25 17:04
お尋ねします。 ボイスチェンジャーソフトで、物まね機能というか、自然音声Aに 自然音声Bの声色をベーストするような機能を持つものはあるでしょ うか。あるいは、作れるから見積もってあげるよ、という人、います でしょうか。 (1)できればWin98かXP動作で (2)声色のみのエミュレートで、口跡などは問わない (3)ある程度は音声Aの声色が残ってもやむをえない (4)リアルタイムである必要はない。再生時間の数十倍 変換にかかってもやむをえない。 と、まあこんな感じです。セガのカラオケにそうした機能が 導入されたとも聞いたのですが。
いちおうアドレスもいれておきます。
>>337 数年前にイギリスかどっかの大学で 成功したとニュースにはなってましたね
その手の仕事をやって胃に穴を開けた事ならあります
現実には色んな意味で難しいですね。
具体的にはピッチの検出に失敗した時のペナルティが非常に大きいのです。
340 :
デフォルトの名無しさん :02/02/25 23:44
>>337 かなり以前に高校サークルのプログラムコンテスト入選作品で
それに類したものがあったはず。
>>337 理論的にはボコードにピッチフォルマント情報を入れて加工すれば出来ますが、
実験的には可能ですが実用的には難しい面があります
何を言ってるかやっと判別出来る程度の音質なら可能ですが、それでは納得出来ないでしょう
音質をあげれば、失敗した時の違和感が酷くなり、やはり納得出来ないでしょう
人間の音声は母音と子音の組み合わせです。 どうしてもそれを連続的に処理する事が出来ません
たとえば2つの音源を分離することは今の技術では無理です(音源を事前に測定出来ればというレベルです)
携帯電話の電話口で2人が同時に喋れば何を言ってるか判らなくなるのと同じ問題があるのです
カラオケなどでいうボイスチェンジはキーコンの応用技術である事が殆どです
ピッチを買えずに再生速度を変化させたり、ビッチを完全にx2 ÷2したり、その周期の別の波形と
掛算したりというような連続的な処理をさせる方式だと失敗した時の違和感が少ないからです
×ボコード ○ボコーダ
>>341 ですね。
変えればいい、というのと任意のものに変えたい、とでは雲泥の差がありますね。
あとカラオケであれば音程データがありますから、これは応用がききます。
ピッチを抜きで考えるとすれば
完全に思いつきですが長いサンプル数で元データをFFTして平均的な周波数特性を出力に反映させる、とか。
ちょっとは似るかも。
>>343 残念ながら短時間FFTを使う方法は 固定周期で分析した場合 接続点がスムーズになりません
接続点をスムーズにしたとすればその固定周期の音が出てしまいます。
ピッチの整数倍毎に分析するという事になりますが、すると子音部には音色がついてしまいます
思ったより巧くゆかないですよ
345 :
デフォルトの名無しさん :02/03/01 01:51
>>344 なぜ短時間?
おおよその声の周波数特性の差分をEQでうめる、という感じではどうでしょう?
完全にオフライン処理でいいのですから。
>>345 短時間フーリエ変換というのは
全サンプリングのデータを読んで一挙に変換する方法との区別の為の呼称では?
分割すれば、長いサンプル数で分割しても短時間フーリエ変換ですよ。
EQで調整出来る程度の差=線形な加工では声質が変わったにようには殆ど聞こえ
ないです。
たぶん希望を満たすには、極論ですが音声認識して音声合成しなければならないと
考えた方が安全でしょう。
347 :
デフォルトの名無しさん :02/03/01 02:16
ちょっと話題がそれてすいませんが 質問です 音をスロー再生したいのですが 普通にスロー再生するとピッチが下がってしまいます ピッチは通常速度の再生時と同じに したままでスロー再生する方法… わかります?既出だったらすまそ
>>347 自分で作りたいの? それとも既製のを手軽に使いたいの?
原理は
ピッチを変えたくないなら、同じ速度で再生するしかないでしょ?
だから同じ速度で再生する。
ただし、同じ信号を繰返させる
例えば
AAAABBBBCC__DDDD というふうな音声信号を
AAAAAABBBBBCCC___DDDDDD となるようにする
具体的には2系統の再生機を用意して 再生機の出力が相関の高い所で
切り替える
>>347 今売ってるC MAGAZINE(3月号)に載ってたよ。
こういったデジタルオーディオデータの取り扱いに ついて詳しく書いてあるような本ってないですかね?
>>349 ありがとうございます、早速入手します。
>>350 理論系なら結構ある。工業数学?系。大学教科書になるからね。
フィルタ製作などでは参考にできます。
私が買った中で一番ソフト開発よりなのは
コロナ社刊C言語によるディジタル信号処理入門(CD-ROM付)
もっと具体的なオーディオアプリ開発のになると?です。あったら俺もホスィ
何部売れるんだ、というカンジでしょうけど。
355 :
デフォルトの名無しさん :02/03/06 23:55
3Dヘッドフォンにそのまま使用できるHRTFってありますか? SRSとかって効果薄いしソニーや松下のもイマイチっす。 タップ数は1024までだったら何とかなるかも・・・
356 :
デフォルトの名無しさん :02/03/08 01:47
3D空間うんぬんでない、単純な左右のパンは、 左と右の合わせた音量が常に一定になっていればいいのでしょうか。 ものすごい初心者な質問で申し訳ないです。
「音量のバランスが」ですかね。
単純に振幅の合計を一定にするだけだと 定位が真ん中に来ると、100パーセントパンが振られた音に較べて 弱く、遠く感じられてしまう・・・ンじゃ無かったっけ。 直線的に聞かせるには センターを0度、定位する音の位置をΘとすると Lamp = √2/2 * (sinΘ+cosΘ)、 Ramp = √2/2 * (sinΘ-cosΘ) 最近本を読んだだけなので、俺も理解が足りないかもしれない。 多分上の式は左右45度に置かれたスピーカーの話で、ヘッドフォンだとまた違うのかも。
359 :
デフォルトの名無しさん :02/03/08 15:44
MIDIのリアルタイムレコーディングができるフリーソフトが作りたいと思います。 1から教えてください。 ってのもあれなので、 外部から入ってくるMIDIデータを読む方法と、 SMFファイルフォーマットがわかる 参考になるようなものは無いでしょうか?
>359 >外部から入ってくるMIDIデータを読む方法と、 MCI辺り調べて見れ。 >SMFファイルフォーマットがわかる 本買え。
362 :
デフォルトの名無しさん :02/03/09 02:42
詳しい人がいるみたいなので質問。 録音した音声を検索する事が出来る製品ってありますか? 技術的には可能だと思うのですが。 音声を一旦テキストに変換して、検索して、ヒットしたところの音声を再生する 感じです。 私はプログラミング経験ゼロです。
>>362 デジタル録画したものの音声からナマズのように全文検索しておける代物が
3万円からあるよ!
高速フーリエ変換の解説 見たいな事やってるホムペ知ってる人居ますか? ソースは在るが、何やってるんだかサパーリ!
>>364 そんなの検索すればいくらでも見つかると思うが・・・
あと、どの辺が分らないのかによるよ。
フーリエ変換が分らないのか、高速化のアルゴリズムが分らないのか。
>>363 ありがとうございます。
思ったより安いですね。福祉関係では重宝しそう。
367 :
デフォルトの名無しさん :02/03/12 16:55
>>362 エシュロンでその技術がつかわれているらしい。
368 :
デフォルトの名無しさん :02/03/13 05:49
>>359 そういうソフトたくさんあるから、MIDIから直接wavにコンバートする
プログラム作ってー。
家の1GHZパソコンではMIDIを最高音質で録音しようとすると途中でと
ぎれてしまうのです。
このスレで議論する内容ではないけど、 「MIDI → WAV」したい人って何が目的なんだかね。 MIDIデータなんて、ある音源のコピーがほとんどでしょ。 最高音質であろうが、データとしては薄っぺらいと思うんだけどね。 MIDIをWAVにしたあと、オーディオCDにするのかなぁ。 PCでMIDI再生する以外のことがしたいとなると。
>369 マジレスすると、どの環境でも同じMIDI音源ならそうなるが、実際は音源毎に音が違う。 >データとしては薄っぺらいと思うんだけどね ま、この辺読む限り、音源に関する知識に乏しそうだがね。
つーか楽譜を録音するってのが謎
音源に関する知識があったら、なおさらそんなソフトいらんぞ
373 :
デフォルトの名無しさん :02/03/13 16:19
昔はPC88とかから直接収録したゲームミュージックのCDとかありましたが 何か?
おそらくGM/GS/XGなどのMIDIファイルなんだろうからDTM板の話題だろ
375 :
デフォルトの名無しさん :02/03/13 17:35
wave録再コンソールアプリ作ってるんだけど、 コールバック、うまい方法無いですかねぇ・ CALLBACK_WINDOWは使えないし。
376 :
デフォルトの名無しさん :02/03/13 17:52
>>368 そのMIDIがどうゆうMIDIかは知らないけど、
macならQuickTime Playerでmidファイルを開いて、
AIFFに書き出しできるけど。
いや、外部のモジュールやらシンセやらの音源で鳴らした音が録音したいなら、 音源からの音をLINEでPCにつないで、 シーケンサー動かしながらWAVE録音ソフトで録ればいいわけでしょ。 そういう作業を自動で行う意味もないだろうから、 内部のソフト音源で鳴らせた音をWAVEにしたいわけでしょ、この場合。 (違うのかなぁ) で、そんなもんなら、わざわざ録音して残すほどの内容でもないだろうと。 そういう主張でした。
>377 言われてみれば、確かに。
MID→WAVって今需要あるのかなあ?
381 :
デフォルトの名無しさん :02/03/14 00:22
>378 できたよ、Thanks!
382 :
デフォルトの名無しさん :02/03/14 13:59
とりあえず、外部MIDI機器からのリアルタイムレコーディングができるソフトをつくる ノウハウを教えてくれ。 はなしはそれからだ。 レコポって、SMPU使ってないとレコーディングできない見たいだし。 サウンドブラスターからレコーディングしたい。
midiInOpenとかのAPIでできやんのか?やたことないが。
スレの流れと関係ない話題で申し訳なんだが、 Roadsの、CMT(の訳本)に多重キャリアFMの式があって、 MCFMt = A^w1 * sin(C1t + [I1 * sin(M)]) … + A^wm * sin(Cnt + [In * sin(M)]) (Aは振幅定数で 0<A<=1、 w1, …wnはキャリアnの重み、 C1, …Cnはキャリア周波数、Mは変調周波数) とあるんだけど、w1、wnとかの各キャリアの重みっていうのを、実装する際に どういう範囲で与えればいいのかな?
385 :
デフォルトの名無しさん :02/03/20 16:12
>>384 Aが振幅で指数でかかってるんだから 最大1 負側は実装出来る範囲で程度でいいんじゃないの?
386 :
デフォルトの名無しさん :02/03/23 14:42
もう少し簡単な話してくださいよぉ〜 MCI 低レベルAPIでイコライザする方法とか、ダメ?
>>386 Aが振幅で指数でかかってるんでちゅ。
MCI 低レベルAPIでイコライザする方法があるの?
ありますか?ということ?
少なくともMCIではできぬのでは。
出来るとしたらDMOかな
MCI はそもそも 高レベルAPIでしょうに
>>387 振幅云々の人とは別人ですが。。
DirectXですか? 全然わからんです
>>388 どでもいいけど
高) mciSendCommand、mciSendString
低) waveOut〜、midiOut〜、、、
やっぱイコライザするのは大変そっすねー
ソフトに付けてみたいんだけど
>>waveOut系でやれば可能だよ midiOut系にイコライザ付けるのは・・・
自前で実装するんならそりゃできます。 Cならサンプルありますね。 ww.tcct.zaq.ne.jp/kaname/equalizer/ ワタクシはVBに翻訳して使ったけど十分速い。
あ、もちろんwaveOutのハナシね。midiOutは基本的には無理でしょう。
393 :
デフォルトの名無しさん :02/03/24 19:08
>>390-391 有益な情報どうも
mixer〜なAPIの方の話で、イコライザってMixerControlがあるみたいなんですが
あれは使えないですか?
394 :
デフォルトの名無しさん :02/03/24 21:58
ありゃサウンドボードにEQ機能があれば使えるということでは? お目にかかったことはないですが。 TREBLE、BASSがついてるのは多いですね。 そもそもミキサーは共有のものなのでアプリ側に実装するのはちょと。
>>394 なるほど
mixer〜 APIもWeb上に資料少なくて(書籍当たらないとダメか。。)
でも、それだけ環境に左右されるなら無理ですね
waveOut〜とかDirectX方面を勉強してみます
396 :
デフォルトの名無しさん :02/03/29 00:20
やっぱりWindowsは色々とそろっていていいねぇ。 Linuxで少しやり始めたけど、基本的なライブラリから 手を付けないといけなくて少しゲンナリしてきたよ。 ただオープンソースだからOSのスケジューリングの改造まで 「やろうと思えば」出来るメリットは大きい。いつかはね(w
397 :
デフォルトの名無しさん :02/03/29 00:49
話の腰を折るようでわるいんだけど、 Win32 環境で、音ってどう出すの? Wav じゃなく、MML? みたいなので。 昔の BASIC の play 文みたいなの。 play("abc#ed")とかやると、♪ドミソ〜ラ♪、とかなるやつね。
398 :
デフォルトの名無しさん :02/03/29 00:51
>>397 midiでshort message送るのが楽かと思われ。
399 :
デフォルトの名無しさん :02/03/29 08:25
ええっとさ、それ考えたんですけど、俺の中でMIDIっつーと (この場合、MIDI機器を持ってるわけではないので、 使うのは正確にはMIDIをエミュレートする ソフトシンセモジュールになるとおもうけど)、 ・変なドライバが必須(すくなくとも昔のWindowsでは) ・立ち上がりがクソ遅くて、 ・しかもすぐ落ちる というイメージしかないんですが、 実はWin95以上ならドライバ抜きで普通に使えるとか? (じゃあいままでのあの変なドライバはなんだったんだ?)
400 :
デフォルトの名無しさん :02/03/29 08:27
ドライバっていっても、必要なのはI/Fのドライバでしょ
>399 じゃあsin波形ジェネレートするか、BEEPの周波数でもいじってろ。
402 :
デフォルトの名無しさん :02/03/29 09:26
Win95 からこっちなら、 midi マッパーになんか送れば、 ドライバも、MIDI機材もなんもなくても、 音は出るよ。ショボいけど。
403 :
デフォルトの名無しさん :02/03/29 19:31
そんなにドライバがイヤか?
404 :
デフォルトの名無しさん :02/04/03 13:22
1曲あたり3Mバイトといったら圧縮音声と同じくらいか。
でもそれでキーコンや速度変更が可能なのがいいね
409 :
デフォルトの名無しさん :02/04/06 12:35
mod?
音源をただ並べるのではなく演算で音源自体作れるということかな? これの利点を生かせるほど作りこむのは大変そう。 MIDIだって十分実力差がでるものな。
411 :
デフォルトの名無しさん :02/04/19 08:37
Waveファイルから csound にするような技術が作れたら面白そうだけど 無理かな?
412 :
デフォルトの名無しさん :02/04/19 16:07
>411 結局周波数ごとに分解してサイン波におきかえる音声圧縮に近くなる。 MIDIなら音源自体は有限だから waveの自然音声がどのノートの合成で最も近くなるか、 なんて方法が使えるようになる可能性はあるけど。 まあまともな楽譜にはならんわな。
突然失礼いたします。 とあるメーカーのMIDIインターフェイスを持ってるのですが、 ドライバ開発がWin95で止まっています。 近々Win2000マシンを自作予定(現在Mac使い)なので何とかして 2000用ドライバを作りたいのですが難しいでしょうか。 NT用のβ版は入手したのですが、海外のユーザーBBSのトピでは Meで動作するものの2000では動作しないようです。 ちなみにプログラミングは初心者です。
教えて頂くだけではなんですので自分の知る情報を少しだけ。
>>252 実際のディストーション回路では頭がきれいにクリッピングしません。
一定の閾値以上でサンプルレベルを圧縮する方法はどうでしょう。
その閾値を複数設定して、サンプルレベルと圧縮比を比例させると
特性上音楽的な歪みになると言われているようです。
逆にその圧縮比の関係をわざと乱すとキャラクターが変わってくるそうです。
>>144 カップリングコンデンサはインピーダンスを決定する抵抗と常にペアで働くので
必ずHPFを構成してしまいます。
コンデンサの容量はインピーダンスによって決定しますが、
音声回路では大体カットオフ周波数20Hzを基準に考えています。
接地側のコンデンサは反対にLPFを構成します。
どちらもコンデンサ1個につき1次のフィルターとなります。
一般論ですが、プログラミング初心者でMac使いの方が、Windows2000用のドライバを 作るのはかなり難しいのではないかと思います。
>>416 返答ありがとうございます。
残念ですが、他の方法を当たろうと思います。
ちょこっと6オペレータのFMシミュレータ書いてるんですが、
アルゴリズムのつなぎ方がよくわかりません。
MC FMは
>>384 の式で、
PMMFMt = A * sin(Ct + [I1 * sin(M1t)] + ... + [In * sin(Mnt)])
SMMFMt = A * sin(Ct + [I1 * sin(M1t + ... + [In * sin(Mnt)])])
となっているのですが、たとえば、
http://apple.presen.to/ma2.html のページのアルゴリズムにあるOP1のループしたような図は
どうやってつなげばいいんですか?
419 :
デフォルトの名無しさん :02/05/06 15:29
age
>>418 最後のページに2オペレータの例として
f = A sin(ωct + I sinωmt ) とあると思います
これを2つに別けて
f1= I sin(ωmt)
f2 = A sin(ωct +f1 )
β分の帰還は
f1= I sin(ωmt+βf1)
f2 = A sin(ωct +f1 )
>>420 なるほど、これがフィードバックってやつですか。
とりあえず、シンプルに作り上げる分には今は必要なさそうです。
ありがとうございました
422 :
418=421 :02/05/07 00:22
>>422 フードバック量については チップのマニュアルに 1がπ/16とか書いてあるでしょ?
>>423 いや、そういうことではなく。
MA-1シミュレータを書いてるのではないもので・・・
>>424 意味判らんけど、
やってみればいいんじゃない?
動的に音作ってみて波形を見る聞くすりゃいいじゃない
>>422 そこは音源の仕様だから、”これだ”っていう値はないと思う。
オリジナルだったら適当に自分が良しと思う値にすればよく、
なにか実機のエミュレーションだったら、425が言うように実機と
音が同じだと思う値を探し出さなければならないんじゃないかな
そういうのは 俺、WindowsでDelphiでやってるよ。 TrackBar付けて動かしてみて、これだと思う係数探せばいいだけだから
428 :
デフォルトの名無しさん :02/05/31 12:46
mmioWriteを使ってファイルに書き込もうとしていますが、 バイナリでファイルの中身を見ると、書き込むバイト数の後ろ約半分超が00で埋められてしまいます。 前側は正常に書き込まれているようです。16bitモノラルです。 原因がさっぱりわからないので解決法を教えてください。
>428 普通にwaveIn使う事をオススメします・・・
>>428 単純なミスじゃないの? というかコード出さないと何もアドバイス出来ないよ
431 :
デフォルトの名無しさん :02/06/02 20:49
>>404-413 タイトーのCsound カラオケ・ボードの記事、初めて今日知りました。
TDMとかVSTiとかCREAMWAREとか出ている中で、
Csound丸ごとハードウェア化して商品化ってのは、なかなかインパクトありますねー。
DTMマガジン の記事によれば、Web上にあるCsoundリソースを活用できるから、
可能性無限大みたいな感じでしたけど、Analog DeviceのDSP SHARK用のコンパイルとか、
どうやっているんでしょうね?
個人的に入手して遊び倒したいもんです。
modのプログラミング情報少なすぎデス。 hMPPSDK = (HMODULE)LoadLibrary("mppsdk.dll"); pFunc = (MPP_GETMODAPIFUNC)GetProcAddress(hMPPSDK, MPP_GETMODAPIFUNCNAME); pFunc(&pMPPAPI); HANDLE h; h = CreateFile("sound.it",GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL); if(h!=INVALID_HANDLE_VALUE){ map = CreateFileMapping(h,NULL,PAGE_READONLY,0,0,"SOUNDS"); LPVOID v = MapViewOfFile(map,FILE_MAP_READ,0,0,0); long l; l = pMPPAPI->LoadSong(v,65536); l = pMPPAPI->SetMixerOptions(MPPMIX_LOOP); l = pMPPAPI->SetWaveFormat(44100, 2, 16); l = pMPPAPI->GetSongLength(); // ココが謎。 //pMPPAPI->Render UnmapViewOfFile(v); CloseHandle(map); map = NULL; } CloseHandle(h); h = NULL; 読み込めるし長さ取得もできてる気配。 誰か再生方法教えてくださいm(__)m (っていうかRender()の引数がワカラナイだけかも?)
それってmodのプログラミングって言うご大層な物じゃなくて dllの使い方が分からないだけじゃん
434 :
デフォルトの名無しさん :02/06/29 23:54
ホシュage
435 :
デフォルトの名無しさん :02/07/17 09:31
ホシュage
436 :
デフォルトの名無しさん :02/07/21 19:16
AIFF-CのADPCM、MACE-3やMACE-6についての アルゴリズムやテーブル資料ってどこかにないでしょうか? 探してみてもIMAについての資料ばかりで、こっちについては見つからなくって…
>>436 漏れもむか〜し、MACEのデコーダ作ろうと思って資料探したけど、
全く見つからず断念した…。
>>437 見つかりませんでしたか…
MACEが再生できるのはQuickTimeだけで
WinAmpやKbMediaでも扱えないですし、解析されてないんですかね。
>>438 漏れが資料探したのは8年前の事だから、
今だったらどこかで見つかるかもね。
440 :
デフォルトの名無しさん :02/07/30 15:45
IIRフィルタ: y(t) = a0*x(t) + a1*x(t-1) + a2(t-2) - b1*y(t-1) - b2*y(t-2) これの周波数応答をグラフ表示したいんですが、 具体的にどうやったら良いのかがイマイチわかりません。 上の式から伝達関数を求めること、求めたい周波数の純音を代入すること、 fftが利用できることなどまでは薄ボンヤリとわかったのですが。。。 如何せん低学歴なもんで、出来たらコーディングに即した形でご教授願えませんでしょうか。
441 :
デフォルトの名無しさん :02/07/30 15:56
>>440 単純にZ変換形式にしてe(2*π*周波数*i)と複素数を代入して
絶対値求めるのではあかんの?
>>441 いや、それがやりたいんですが、あの・・・
Z変換した時のZって何ですか?何かの物理量?ガンダム?
見たいなところがわからないです。。。
443 :
デフォルトの名無しさん :02/07/30 16:14
やっと出来ますた。 伝達関数の変形がえらく大変でした。 こんな計算するの初めてなもんで・・・
単に周波数表示するだけなら Z変換した結果を変形する必要はないだろ? 複素数のまま計算すればいいと思うが・・・
いや、その場で自前で実装したんで。>複素数 使ったこと無いから敬遠したっつうのもあるんですが。
448 :
デフォルトの名無しさん :02/08/31 19:09
保守挙げ
450 :
スペクトラムのソースが欲しいです :02/09/13 01:57
ぼくはWAVEのエディターを制作中です。 つけたい機能でどうしてもスペクトラムの考え方が必要なんです。 「短時間フーリエ変換」の方式を希望します。 ある程度はお金がかかってもいいのでどなたかご存じないでしょうか? (言語:C++,C/データフォーマット:wav対応)
意味が…
>>450 今度はこっちで質問してるのか。
まずはお前が立てた糞スレの削除依頼をしてこい。話はそれからだ。
ピッチシフトやタイムストレッチ作ってるんですが、 昔のピッチシフターみたいにどうしてもプツプツとなってしまします。 プツプツ部の段差を直線的に結んで補正してもボーカルとか正弦に近いのはボロがでるわけで。 どうしましょうか?
>>453 1、 A-B 切替を使ってn周期前の音と切り替える
ただ、周期性が高いならkA+kB=1
完全なノイズなら kA^2+kB^2=1
だから、ノイズ度合いによって重み式を調整するとか
音質に拘ると色々とノウハウがあるけどね、 教えるのはここまで
2、フーリエ変換使って周波数上でシフトする(メンドクサイ上重く、音質も悪いが)
>>454 どうもです。
言われてみればなるほどですね。差を埋めることばっかかんがえてました。
フーリエ変換して操作して戻す、というのは
以前やってみてピョロピョロの音になったかな。
フーリエ詳しくないんでやりかたがいたらなかったのかも。
>>455 フーリエ変換を使う場合は
フーリエ変換は比例軸なのに周波数は
対数的に移動しなければいけない。
その場合の位相を合せて(時間毎に)という事になるのだけど
その位相をあわせるのが、
やっぱり周期性と非周期性成分とでゴチャゴチャ・・まあやってみたら?
ひょっとして解決策をキミなら思いつくかもしれないしさ
>>450 残念だなあ Delphiなら教えてあげたのに
>>453 シュア・ウェアの技術なんですが
エフェクトをかける周囲のデータに同じエフェクトを少し加えるという方式があります。
エフェクト制御値
加えていく(短時間)>>本来のエフェクト(通常の制御値)>>少なくしていく(短時間)
あと位相あわせが必要なようなんですが…
ちょっと、僕にはそこまではよくわからないんです。
(単純に位相差分を検出してそれを時間で分割して
加減していくとかでしょうか?)
>>457 ありがとうございます
気持ちだけ頂いておきます。
>>452 1:サウンドプログラミングのスレッドがあると
知らなかったのでご容赦下さい。
2:スレッドの依頼削除をすると
ホストが公開されるようなのでそれも勘弁してください。
3:ぼくは教えを乞う側の人間ですが"お前"は非道いと思います。
確立された技術を一からプログラミングするのは
避けたかったんですが、…
…フリーエ変換のプログラム、がんばって作ってみます。
フリーエ変換のプログラム探せば落ちてるだろ。 俺VBだけどVB版ですら見つかったんだから。
461 :
デフォルトの名無しさん :02/09/16 18:57
Windowsで低レベルWAV入出力を使って 入力にエフェクトかけて出力してるんだけど どうもサンプリング速度が微妙に違うみたい。 遅延時間が少しずつ違ってきてしまいにバッファオーバしてポツって音が出る で、出力を入力にケーブルでエコーバック(アナログ)して相互相関取ると 少しずつズレてくる。 サウンドカード2枚中2枚ともがその症状なんで自分のソフトのバグかと 思ったけど、知り合いのノート(DynaBook)だと問題無い これってズレてるのが普通?
板違い
>>462 いやだって普通にサウンドカード使ってるだけの人じゃ判らないでしょ?
プログラムを作ってる人じゃないと
>>463 そうかも知れないが、ソフト板なんかでプログラマが見るまで我慢しろ
この板でその話題は板違いなんだよ。
>>464 なんだかなあ・・・ハード板でもたぶん相手されないだろうと思ってコッチに書いたのに・・・
まあでも、俺、このスレじゃレスしてる方だから、その意見無視させてもらうよ。悪いけどさ
無視するのは勝手だけど・・。 バグじゃないの? 転送レート時間以内に処理しきれてないとか。
サンプリング周波数を√(Σ2)*³-√(log2 8)KHzにしたいのですが・・・
つまりここのソフトヲタにはハードウェア は理解できないと言うことだ。 あとドライバーなんかもここではNG。
>>466 ありがと
バグの可能性・・・・はあるなあ、実サイズが違うのかな・・
ただ、いつも dwBytesRecorded = dwBufferLength になってるのは確認してるし
HDRバッファは常に等長にして3つくらい渡してるんだけどなあ・・・
転送レート内・・・それは無い筈 同時にMP3プレイヤーを動かしても異音は出ないし
>>467 √(Σ2)*3-√(log2 8)KHzにしたいのですが・・・
Σ2=3 log2 8 = 3 ですか?
√3*3-√3=2*√3 という事?
11.025でサンプリングして 3.5Kの急峻なLPF作ってリサンプリングしたらソフト的には
実現可能と思うけど
それとも無理数だから絶対精度は決して得られないという有り難い教えですか?
全然関係ないような気もするけど、デバイスでできる以外の ことをやろうとしているとか。waveOutGetDevCapsで調べられるやつね。
バグではありません。 俺も録音同時再生のソフト作るけどハードウェアによって入出力のサンプリングが ずれるのとずれないのがあります。CPU負荷が高いとずれが大きくなったりします。 ボード上にクロックジェネレーターを持ってるやつは全くずれません。 あるいはASIO環境ならOKか?
>>472 ありがとう。 安心したと同時に、エフェクトかける時はサンプリング速度の差を
調べて調整しなければならないという事が確定して鬱だなあ
>>473 俺の場合waveInGetPositionとwaveOutGetPositionで比較して差分をスっとばす。
当然再生がブツっていうけど、なんとかならんもんかのう。
>>474 そうだね 微妙なサンプリングレートの調整は面倒だね
簡単な3点補間くらいじゃ高音の特性が酷く劣化するし
といってn倍サンプリングしてn/2のLPFでカットしてから補間する
まともな方法だと重いし、ただでさえ大きい遅延がより大きくなるし
コーラスエフェクトをつくってます。ノイズがのります。助けてください。 ディレイラインと、LFO(サイン波形)を使って、ディレイタイムを増減する方式です。 ディレイタイムの増減は細かく(1サンプル)で処理をしてるのにノイズがのります。 特に原音が高域ほどノイズがのります。fs=44.1Kです。 タイム変動時には、1次補完してみましたが、変わらず。 どうか、キーワードだけでもご教示ください。 よろしくおながいすます。
このスレでいいのかわからないのですが、エコーキャンセラーってどうやるんですか?
>>479 だいたい こういう戦略です
1、 エコーを見つけたら消音する
2、適応フィルタで出力(スピーカ)が入力(マイク)にかえって来るのをカットする
今雑音の低減について勉強しています。 雑音には呈上雑音と非定常雑音があることがわかりました。 定常雑音としては、白色雑音とかがあることがわかりました。。 一方、非定常雑音の具体的な例?というのがわからず困っています。 統計的に観て、時間幅を変えると性質が変わる信号という事はわかります。 これは自分の中では「突発的の雑音」(たとえばドアの開く音とか)と 解釈しているのですが間違ってますでしょうか?
>>481 目的以外の音が雑音。 別けるとしたら処理しやすさから
1、周期性雑音 ハムとかエンジン音とかレコーダのモータ音とか
2、定常雑音 サーとかザーとか
3、突発性雑音 バリバリ ガリ ドカン
とした方がいいんじゃないの?
>>481 なるほど.そのような分け方もありますか.
私の考えでいくと,1.2は定常雑音,3が非定常雑音に
あたるものとして考えていいのでしょうか?
age
8出力のサウンドカードの場合どういうプログラムになるんです? どうしても1,2しか使えないです。 ちなみにVC++でDirectSound使ってやってみました。
「優先するデバイス」しか使えんのではないかと
488 :
名無し@沢村 :02/10/19 06:55
皆様方、私はいまmidiシーケンサーに取り組んでいるところですが、 初歩的なところでつまずいているのでぜひ教えてください♪ それはmidiファイルに保存するとき、音色指定で、 32 の Guitar harmonics まではプレイヤーで聞いてみると音が出るのですが、 33 の Acoustic Bass 以降の音は出ないのですよ。 バイナリエディタで開いてみると、33 の Acoustic Bass 以降の音を指定した場合、 どうもファイルがこわれているようなのですよ…? 皆様方、これは一体どういうことなのでしょうか? 32 の Guitar harmonics までと33 の Acoustic Bass 以降とでは音色の指定の仕方が違うのでしょうか? ちなみにMidiOutShortMessageでは同じように指定して同じように音が出るのですが…? ぜひ教えてください!!
そもそもSMFなんかどうなんかもわからんが、 ファイルが壊れてるってのが本当なら誰も教えられないよ。 自分で作ったPGなら、自分で1ステップずつ追えば幸せになれるでしょう。 変なバンクセレクトで、PGチェンジを受け付けてないなんて事はない?。。。だろね
493 :
デフォルトの名無しさん :02/10/19 15:41
∧,,∧ ツマナサスギテ ミ;゚Д゚ミつ 背筋寒くなりました
494 :
デフォルトの名無しさん :02/10/20 01:43
sinc関数(sin(x)/x)の補間についえ教えてください。 sinc関数でどうやったら補間ができるんですか? 線形補間や、スプライン、多項式ならイメージあるんですけど、 sinc関数をどう適用すれば補間になるのか、さっぱりわかりません。 WEBで結構調べたんだけど、どうも理解できません。 よろしくおねがいします。
495 :
デフォルトの名無しさん :02/10/20 05:52
複数のリニアPCMを合成するのって、 それぞれの重なるフレームを単純に加算して、リミッタかければいいの? a,b,cが16bitPCMの1フレームだとしたら x=a+b+c if(x>32767) x=32767 if(x<-32767) x=-32767 みたいな処理でいいのかなあ。
>>495 OKです。
ツッコミいれとくと
-32768 〜 32767でないかな?
フレームって何じゃ?サンプルとかワードとかっていわないか?
497 :
名無し@沢村 :02/10/21 20:08
皆々様方〜、自分は先日ここで 「33 の Acoustic Bass 以降の音を指定すると、プログラムチェンジがピッチベンドに変わって、それ以降のノートオンオフがメチャクチになるかわからんのよ」 という質問を発しましたが、無事解決をばいたしましたので、ご報告をば申し上げます。 というもの皆々様方、自分はファイルに書き込むとき、プログラムチェンジのCnに楽器ナンバーを足した2バイト分をいっぺんに書き込んでいたのであります。 この足しかたがどうもうまくなかったみたいで、楽器ナンバーが16ふえるごとにプログラムチェンジがチャンネルプレッシャーにかわり、 チャンネルプレッシャーがピッチベンドにかわりとなっていたのであります。 そこで自分は2バイトいっぺんに書き込むのをやめ、1バイトづつわけて書き込んだとたん、 ちゃんと音がでたというわけであります♪
>>487 優先するデバイスはMultichannelってやつですけど、これでもだめなんですかね?
俺が前作ったのはDX3+VBだったのでなんか知らんができなかったけど DX8調べるとやっぱできるかも・・。 DirectSoundCreateのguidにGUID文字列のアドレスかな? デバイスを列挙する方法がありそうに書いてある・・。 VBだとDirectSoundEnum8.GetGuid(Index)だって。
500 :
デフォルトの名無しさん :02/10/23 02:54
今、音声認識のプログラムを作っているのですが、 WAVEファイルからデータを取り出し、FFTをして スペクトル表示してグラフをだし、第一ホルマントは出したのですが、 第2ホルマントをうまい具合に決めて出せません。 誰かアドバイスおねがいします。
>>500 FFTしたなら無理にフォルマントに別ける必要はないという発想で行ったら?
502 :
デフォルトの名無しさん :02/10/23 10:33
>>501 音声認識ならフォルマンとにわけたほうがいいでしょ
なぜ?前段で別けてしまうと子音と母音の認識が必要になる。
そういう方法もあるけど、 少なくとも
>>500 のような質問の仕方だとそのレベルにはないだろ。
その前に周波数情報のまま処理する方法で基礎や勘を養え
>>494 sinc関数を使ったことなかったので、試しに書いてみた。
サンプリングデータ
x[0],x[1],...,x[n_data-1]
をtimes倍に補間して
y[0],y[1],...,y[n_data*times-1]
を生成する。x,yはdouble型配列、n_data,timesはint型。
#define PI 3.14159265358979323846
double sinc(double x) {
if (x == 0.0) return 1.0;
return sin(PI*x)/(PI*x);
}
とsinc関数を定義しておいて、
for (int yi=0; yi<n_data*times; ++yi) {
double yt = (double)yi/times;
y[yi] = 0.0;
for (int xi=0; xi<n_data; ++xi)
y[yi] += x[xi]*sinc(xi-yt);
}
計算量が多くなってしまうので、
sinc関数に窓関数をかけて範囲限定するなり工夫して。
505 :
名無し@沢村 :02/10/23 20:38
皆々様方〜、MIDIシーケンサーつくっててまたいきずまってることが出てきたので、ひとつ教えてくださらぬか〜、皆々様方〜♪ それはMIDIシーケンサーの編集画面の中で「拍子」をいろいろ設定できるようにしたいわけよ。 「拍子」というのは、3/4拍子とか4/4拍子とかいうあれな。 だが、この「拍子」という概念がMIDI以前の音楽的にピンとこなくてな…。 3/4拍子が一小節の中に4分音譜が3個分で、4/4拍子が4分音譜が4個分ということくらいはわかるのだが…。 だがこの「小節」という概念もよくわからんのよ…。 たとえば4/4拍子の音楽だって4分音譜が3個分のところで区切って考えて3/4拍子というふうにこじつけても曲の出来自体は変わらんだろ? だからそう考えると「拍子」とか「小節」というものにどういう意味があるのかわからんのよ…。 皆々様方はわかりますか? またSMFのメッセージの中に「拍子」を表現するパラメータがあるかどうかさがしたんだけど、どうも見つからんのよ。 そもそもSMFには「拍子」や「小節」を表現するものが存在するのかどうか? 皆々様方〜MIDIシーケンサーで「拍子」を設定するようにするにはどうしたらいい? 編集画面の「小節」の区切りの長さを帰るだけでいいの?そうすると作成する曲には何の影響も与えないことになると思うけど…。 皆々様方〜、そこんとこの疑問を教えてください〜お願いします♪
>>504 ベリーサンクス。
すごくよくわかりましたよ。
畳こみ演算みたいな事をするのか。
窓の大きさがキーですね。
>>505 >>編集画面の「小節」の区切りの長さを帰るだけでいいの?そうすると作成する曲には何の影響も与えないことになると思うけど…。
それでイインジャネーノ?たとえば3/4と6/8と9/12の違いとか人それぞれ主張があるだろうし、
直感的に解るには音楽沢山聴くしかないねぇ。
510 :
名無し@沢村 :02/10/25 23:38
皆々様方〜また教えてくだされ〜♪ 自分は現在リズム音に取り組んでいるのですよ。 ところがリズム音をmidiファイルに保存してそれを開いて聞いてみると、音が出ないんです。 自分はまたデータが変になってるんじゃないかと思ってバイナリエディタで開いて調べてみると、ちゃんとデータは間違いなく保存できてるんですよ。 それで何故音が出ないのでしょうか? ちなみにこのファイルに普通の楽器音を追加してやると、前に保存したリズム音もちゃんと鳴り出すんですよ。 皆々様方〜、これは一体どういうことでしょうか? 何故、リズム音だけでは音が出ずに楽器音を追加してやると音が出るんでしょうか? 普通に考えるとリズム音だけでも音が出るはずで、自分はどこかにミスがあると思うのですが…? 皆々様方〜、自分はどこが間違っているのか教えてください〜!!お願いします!!
DTM板に逝け馬鹿
DTM板に来られても困るYO!
行き場を失い泣きたい気分の名無し@沢村なのであった
>>511 ほらぁ、本当に向こうでスレ立てちまったじゃねえか。
こういうヤツは天然なんだから迷惑な誘導しないでくれ。
この流れ秀逸ですな。 知的な良スレだったのに・・。
516 :
ドシロウト :02/10/30 02:06
最近ちまたで「速聴」とかいうものをよく見かけるのですが、アナログテープを高速で ぶん回すのならともかくCDなどのある決まった周波数でサンプリングされたものを 4倍速で再生するという処理はどうやって実現されているのでしょうか。 サンプリングしたデータを間引いたりしたら原音の高速再生だと認識すること自体が困難に なりそうな気もしますし… それとも単位時間あたりに4倍のデータを流し込める専用のハードウェアなのでしょうか。
CDが 44.1*4KHz (176.4KHz) でサンプリングされてる とみて再生すれば高速再生になる。データを間引くのは その高速再生されている音声をもとのピッチで再生 しようとしたときだけ。むしろ、4倍速なんてぜんぜん 聞き取れない予感。WinAmpのプラグインであるから いちどきいてみるといい。
>>516 11kHzサンプリングで録音した物を4倍速してんじゃねーか?
3.4kHz以上を再生できるから、聞き取れない事もないと思う。
…まぁ、やってみないと分からんけど。
速聴って何かと思ったけど、あのいかがわしい奴でしょ? 雑誌の裏表紙に載っているような。 適当にサイト見つけて聞いてみたけど、普通のタイムストレッチだよ。 ピッチは変わってない。
その機械をバカ高く売ってるみたいね。 そういうソフトを安く作ったりしたら怒られるかな。
俺が見たサイトでは、トップページに 「 類 似 品 に ご 注 意 く だ さ い 」 との警告をgifアニメで点滅させてたから、多分怒られると思うYO! ていうか、安くも何も、騙しのテクニックが無いと売れないと思われ。
いやだから騙すのは本家に任せてさ。 実際高くて買えないから作れんかという話をされたことがある。 機械でやるんならCDプレイヤーにDSP積んでとか大変だけどソフトならリッピングしてストレッチしてバッファに送ればいいんだもんね。
ナポレオンヒルのお言葉じゃないと速聴しても意味ないんじゃない?
http://www.ssi-co.co.jp/napoleonhill/top.html というかシェアウェアで出せば売れると見た(w
おれ、これ聞いたことあるけどただ単に自己啓発プログラムの朗読を
4倍速で聞くだけだからね。
ちなみに英語の早口ニュースなんかをヒアリングするのとは
なにか違うのかな?おれにはこっちの方がよっぽど能力活性化して
英語力もアップしていいと思うのだが。。。
シェア作るひとは気をつけてネ。かなりあやしく、
そしてしつこい営業やってるところだから。
スレ汚しスマソ。
525 :
ドシロウト :02/10/30 10:41
えと、まずは沢山のレスポンスありがとうございます。 当方この分野には明るくないので基本から勉強したいと思うのですが、サウンドプログラミングの バイブル的な存在のものはあるのでしょうか。 タイムストレッチという処理が具体的にどんなものなのかとか興味があるので。 できれば特定のプラットフォームに依存しない書籍だと嬉しいです。
527 :
ドシロウト :02/10/30 11:43
早速の情報提供ありがとうございます。 結構お値段がはるようですが自分への投資と思って購入してみようと思います。
528 :
デフォルトの名無しさん :02/10/31 17:19
フィルターの周波数特性を出すにはどのようにすればよいのですか? H(z)からH(w)にするあたりでつまずいてます。 プラグイン等でグラフィック表示されてますが、上記の方法でよいのですかね? それとももっと簡単に特性図をだせたりするのですか?
530 :
デフォルトの名無しさん :02/10/31 21:06
Z=e(jwt) で置いた時に Z(-1) -> e(-jwt) = cos(jwt) - jSin(jwt) Z(-2) -> e(-2jwt) = ? Z(-3) -> e(-3wt) = ? って感じです。
>>530 とりあえず、それだと数学の勉強からしたら? と答えるしかないなあ
Z(-1) -> e(-jwt) = cos(jwt) - jSin(jwt)
だったら
Z(-2) -> e(-2jwt) = cos(2jwt) - jSin(2jwt)
Z(-3) -> e(-3wt) = cos(3jwt) - jSin(3jwt)
ああ、もしかして、jwtのj を虚数記号に使ってるなら >Z(-1) -> e(-jwt) = cos(jwt) - jSin(jwt) これからして間違いだ。 Z(-1) -> e(-jwt) = cos(wt) - jSin(wt) で、wt が一つの変数じゃなくて w*t で tが時間を意味してるなら、それも間違い。
533 :
デフォルトの名無しさん :02/11/02 02:18
H(z)= 1/(1-aZ^(1)) の周波数特性 H(w) = 1/√(1+a*a - 2aCoswT) になぜなるのでしょう? H(z)の分母を2乗すると 1-2aCoswT + a*a*CosWt*CoswT-a*a*SinwT*SinwT+2ajSinwT-2a*aSinWt*Coswt になりますよね ここからなんで上記まできれいにきえてしますのですか?
>>533 だから、先に数学勉強しろって言われただろ?
最初の式はゲインを求めたもの 後の式は、位相+ゲインの式
周波数軸上の複素数だから、l絶対値がゲインで、位相が位相
サンプリング定理にはずれないようにね。
んな簡単に死んだからといって切り捨てるの?
でもそれでキーコンや速度変更が可能なのがいいね
↑mailto:tnn
ASIOSDKの解説書のような物はないですか?
良スレだな
545 :
デフォルトの名無しさん :02/12/24 19:53
各種音楽ファイルのフォーマットに関してお聞きします。 waveファイルの中身をバイナリエディター等でみると 必ず"RIFF"から始まると思います。 oggファイルやmp3ファイルもこのような何か特定の文字列 で始まるのでしょうか? なんでこんな事を聞くかといいますと一つのファイルに固めてある(主にゲーム) から音楽ファイルだけを抽出するときに特定の文字列で始まっているならばそれを 目印に音楽ファイルだけを抽出出来るからです。 ちなみに終わりは特定の文字列とか決まっているのでしょうか?
抽出したいならファイルのフォーマット調べるのは当たり前でしょ 検索しる
547 :
名無し@沢村 :02/12/24 20:20
皆々様方〜、とくMIDIシーケンサーでポートの設定で「Rolland」とか「yamaha」に設定する機能がついているよな? この機能がついていないMIDIシーケンサーは皆無に等しかったりする…。 で、まずこの「Rolland」とか「yamaha」に設定していないと「再生」ボタンを押しても音が出ないようになっている。 だが、俺のMIDIシーケンサーではこの設定機能はついていないが、音が出るよ。 皆々様方〜、これは一体どういうことかな? 自分のマシンではよく使っていから音が出るが、俺のMIDIシーケンサーを他のマシンにインストールして鳴らしたら音が出ないのかな? そもそもこの「設定」は必要なのですか? 皆々様方〜、教えてくだされ〜♪
またコピペか
>>546 バイナリエディタでoggファイルみてみました。
みんな”ogg”で始まっていました。(←あっけない…)
そんなもんものなのでしょうか?
>>549 そこでなんでWeb上に公開されているであろうOggのファイルフォーマット仕様を調べる、
という方向にいかないのか疑問なんだが。
ちなみにmp3に関してはファイルフォーマット自体存在しない。
う〜ん、"OggS"から次の"OggS"が始まるまでをバイナリエディターで切り出して oggファイルとして保存してみたけどうまく再生されない… waveファイルの時はうまくいったのに…
ネタだ
ああ、ネタだな。
ネタでわざわざこんなスレまで来ないって! う〜ん、もしかしたらこのゲームでは特殊なフォーマット (oggと見せかけて一部をちょこっと変更した特殊な形式)が使われている 可能性もあるのかなぁ… でもゲームのディレクトリに ogg.dll vorbis.dll があるからogg汎用フォーマットのような気もするし…なぞだ。
ちょっとスレ違いかもしれませんが・・・ MMC-3を使って音楽CDの情報を得たいとおもっています。 そこで1トラック分の曲の長さを知りたいのですが どのようにすればよいのでしょうか? READ TOC/PMA/ATIPコマンドで曲のスタート時間は 得ることが出来ています。
556 :
デフォルトの名無しさん :03/01/08 00:34
質問です wavとかaiffとかmp3のプロパティを参照したい場合はどうするのが簡単? たとえば再生周波数、チャンネル、bit情報などなど。 GUIではなく、コマンド実行でプロンプトに情報表示されるようなやつつくりたいんだけどなぁ。
unix方面にコンバーターがあったと思った
>>556 mp3はフレームヘッダ見ればその手の情報が書いてある。
後は知らんが、ファイルフォーマット調べれば出てくるだろ。
560 :
デフォルトの名無しさん :03/01/08 09:26
IP記録実験
http://qb.2ch.net/test/read.cgi/accuse/1042013605/ 1 名前:ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日:03/01/08 17:13 ID:???
そんなわけで、qbサーバでIPの記録実験をはじめましたー。
27 名前:心得をよく読みましょう 投稿日:03/01/08 17:20 ID:yL/kYdMc
SETTING.TXT管轄でないということは全鯖導入を視野に、か?
38 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:22 ID:rLfxQ17l
>>27 鋭いです。
73 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:27 ID:rLfxQ17l
>ところで、IPが抜かれて何か今までと変わることってあるのでしょうか?
・今までより、サーバが重くなる。
・裁判所や警察からの照会があった場合にはIPを提出することがある。
>>571 j-comいつやめる?
どうしようか考えてるんだけど
566 :
デフォルトの名無しさん :03/01/09 14:52
>単純に鯖の負担は2倍 閉鎖
======2==C==H======================================================
2ちゃんねるのお勧めな話題と
ネットでの面白い出来事を配送したいと思ってます。。。
===============================読者数: 138720人 発行日:2003/1/9
年末年始ボケがそろそろ収まり始めた今日このごろのひろゆきです。
そんなわけで、年末に予告したIP記録ですが実験を開始しています。
「2ちゃんねる20030107」
こんな感じで各掲示板の最下部に日付が入ってるんですが、
20030107以降になってるところはログ記録実験中ですー。
んじゃ!
────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50 ────────────────────────────
>>725 で、板潰しの粘着荒らしさんを
規制して貰えると助かるっす。
ウルトラマンコスモス
けんすうさん。 痛々しい事はいいです(ていうか見てるこっちが辛い) 今用件を伝えますから電話しましょう。 ずばっと出て下さい 度量の小さい人は無理だろ、か。
>>499 400万ぽっきりで済むなら話は早い。しかし、訴訟はこれ一つではない。
> えっと、何度同じ事を言わせればいいのか知りませんが。。。 >削除○さんが判断した時点ではコピペは確か2つ。 >単文ですし、他の方も確実にスルーでしょう。削除対象≠削除です。 >私が判断した時点で4つに増えたので、私が削除しました。 >ひょっとしたらそれでも人によっては削除されないかもです。 >また、消さない事による判断ミスということは相当なことがない限りありません。 >その辺は2ちゃんねるの削除の仕組みについて運営板をお調べになれば宜しいかと。 削除対象≠削除 だそうです2chは 裁判検討してる方は良くメモっときましょう
糞スレ立てたやつもIP抜かれてアク禁 串使っても意味なし
>復帰人さんでしたらICQぐらい持っていると思いますが えー?当たり前なのー? 水面下でやる必然性が全く理解不能なんですけど。
神社・仏閣
>>359 犯罪系かキタ━━━(゚∀゚)━━━!!かな?
管理人も不本意ではあるだろうが今回はやむを得ないですね 『閉鎖』よりは全然マシです。 別にそんなに困らないし…OKよ?・
(^^)
例えば企業が出してる商品の噂話とかも名誉毀損とかなるんでしょうか むなしいですね
名誉毀損罪って、例えば、政治家Aは、隠しているけど実は大学の 成績がビリだった(そして事実)、とかいうことでしょうか。
======2==C==H======================================================
2ちゃんねるのお勧めな話題と
ネットでの面白い出来事を配送したいと思ってます。。。
===============================読者数: 139038人 発行日:2003/1/10
なにやら、連日メルマガだしてるひろゆきです。
そんなわけで、ログ記録実験ですが、いちいちサーバ指定するのが面倒なので、
全部のサーバに入れてみました。
重くなって落ちたりしてもご愛嬌ってことで。。。
んじゃ!
────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50 ────────────────────────────
言いたいことも言えないこんな世の中じゃ
(^^)
さろゆきが自作自演してるな、、 自作ラジコン
動機は、酔狂とモノグサと惰性。
残念ながら、2chは匿名性以外にも存在価値ができてしまったインターネットです。
記念牡蠣粉
質の低い=情報価値のない書き込みはいらん というのがこの掲示板の管理者の方針 そういう書き込みが出来ない奴は来なければいい ということなのではないか
おれも
つまらんよ、そこ。
すごい釣り師だよな
渋谷の若者200人に「2ちゃんねるを知ってますか?」「モナーを知ってますか?」 と質問したところ、 知っていると答えた人 0人。 この結果をどう考える?運営の人。。
(・∀・)?
(620) なぜ 2ch 利用者でもない者が 2ch の削除ルールを守らなくてはならないの? >ちゃんと削除依頼のルールを守って待てばいいだけの事じゃん キミの脳内では (現行法での)合法的な抗議方法としての内容証明つき郵便よりも ローカルルールに過ぎない 2ch 削除ルールが優先されているようだな。 頭、悪いよ。
(^^)
4nd…… ラウンジの「ラウンジ恋愛部」かとおもた
(^^)
Waveの波形データから音量をデシベル単位で求めるにはどのようにすればよいですか?
どっかで答えた質問だと思ったら
>>322 のコピペだったか
603 :
デフォルトの名無しさん :03/01/15 22:05
ソフトウェアでイコライザとかコンプとかやりたいのでいい資料URLとか教えて下さい
>>603 VST プラグインのソースを書いたり読んだりするのがいいんでないか
605 :
デフォルトの名無しさん :03/01/15 23:12
とあるサイトにあった簡単なコンプレッサーのコードを試して試してみたら うまく行きません。 どこが、おかしいでしょうか?leveは変数の型は書いてなく1から10の範囲でした。 int tmp; for (i=0; i <= MaxSamples; i++) { tmp=in_buf[i]; out_buf[i]=32767*sign(tmp)*(abs(tmp)/32767)^(1-level/10) }
あらら。すいません。 × コンプレッサー ○ Compression × 試して試して
> うまく行きません。 どううまくいかなかったのか書けないようなバカは来るな
608 :
デフォルトの名無しさん :03/01/15 23:40
俺が思うにコンパイルエラーだなw サウンドプログラミングはまだ君にははやそうだ。
>>607 おお!
現象としては全く音がしないのです。
>>608 公式自体は合っているってことですか?それなら安心しました。
書き直してみます。
セミコロンないよと釣られてみる
611 :
デフォルトの名無しさん :03/01/16 00:04
パソコンのマイク端子を使って録音するプログラムが書ければいいのになぁと 思っているのですが、とっかかり程度で良いので教えていただけないでしょうか?
612 :
デフォルトの名無しさん :03/01/16 00:24
つーか、言語機能にpowerが組み込まれてる 言語が存在するわけもなく。 matlabとかは大丈夫なのか・・・
613 :
デフォルトの名無しさん :03/01/16 00:25
>>612 ** で power な言語はあるよ。
>>611 録音は簡単ですね。WaveInとかMCIとかDirectSoundCaptureとかで。
ミキサーで録音ソースを指定するのが俺できんのだが。
サウンドカードによってラインの順が違ったりするんよ。
あと録音ソースを複数同時選択できるタイプのミキサーもできん。
誰かわかる?
>>615 ミキサーのコントロールは諦めて Mixerを表示させてるよ。
ただ、現在の設定保存だけでも出来ればと思ってるんだが
mixerGetControlDetailsしてmixerSetControlDetails
すりゃいいんだろうけど、
出来れば
Enabele = True
Volume = 95.5
Balance =0
みたいな文字列でそのコントロールの全部の設定が読めて
一部が書き出しが出来ればいいのに
FFTを利用したスペアナを解説している 良いホームページがあれば、教えてください。
>>617 そおいったソフトでソース付のがあったから見つけれ。
619 :
デフォルトの名無しさん :03/01/19 01:15
int tmp; for (i=0; i <= MaxSamples; i++) { tmp=in_buf[i]; out_buf[i]=32767*sign(tmp)*(abs(tmp)/32767)^(1-level/10) } まだ、役に立つかな。 多分演算時の型の問題だろ。 out_buf[i]=32767.0 *sign(tmp)*(abs(tmp)/32767.0 )^(1.0 -level/10.0) ってやっとけばdoubleとかでケイサンしてくれんだろ。 9 / 10とかだと、intの計算になるから結果0になんだろ。音でねぇよな、そりゃ。
型の問題もあるが(万全を期するなら整数を全部キャストしたほうがいいと思われ) ^ ←が本当にべき乗の演算子なのかが一番不安なのだが。 C/C++だとコンパイルエラー吐いてくれないので(XORになって)、 俺もデバッグに苦労したことがあるyo。
621 :
デフォルトの名無しさん :03/01/19 13:16
ハットで羃乗になる言語って何?
やべぇ ^ は XORかと思って(コンパイラーにも怒られて) int にキャストしてた・・(汗 powに置き換えたら解決しました。 みなさんサンクス!
625 :
デフォルトの名無しさん :03/01/20 00:23
どんな分野のプログラミングでも、 コンパイルエラーの回避にキャストをする香具師は逝ってよし。
626 :
デフォルトの名無しさん :03/01/20 01:46
>>625 javaで
float f = (float)10.245;
はOK?
>>626 Javaって、floatリテラル表記ないのかと思ったじゃん。
10.245F
「読まれるかもしれん」という立場で書くのなら、
数値計算でcast使うのは、なんか特殊なことをしてるのか?と
思われるので、cast使わずに表記できるのなら、そちらを使う方がベター
628 :
デフォルトの名無しさん :03/01/20 20:44
質問です。 「ピンクノイズ」の生成ルーチンを作りたいのですけど 指針を教えてくれませんか? 検索したのですけど生成方法についてはさっぱりでした。
真のピンクノイズは当然作れません。 ホワイトノイズを作って、 1、1次LPF を通し、ゲインをかける 2、2次HPFでDCカットして積分する もちろん、どちらも、f0は非常に低くします。
>>630 すいません、
ホワイトノイズの作り方もわからないんです。
あ、ひょっとしたら for(i = 0;i i < buf_size; ++i)buf[i] = rand() % DEPTH; でホワイトノイズつくれちゃったりします?
>>628 マッカーだけど、あぽーはもういいよ あんな横暴で自分本意な会社は迷惑です
>>632 基本はそれでもいいと思う、ただ、それだと直流が加算されるから、
635 :
デフォルトの名無しさん :03/01/20 23:09
>>627 じゃぁ、
byte b = (byte)128は?
636 :
デフォルトの名無しさん :03/01/21 22:52
Final Fantasy 7,8,9は何を使っているのですか?
PS内蔵音源とちゃうの。
(^^)
640 :
デフォルトの名無しさん :03/01/31 01:46
MLDをWindowsで鳴らすにはどうするの? 参考になるサンプルとかどっかにない?
641 :
デフォルトの名無しさん :03/02/01 23:52
おまえら、馬鹿? 答えろよ。
642 :
デフォルトの名無しさん :03/02/02 00:30
サンプルはないです。 WindowsAPIを使うといいです。
643 :
デフォルトの名無しさん :03/02/03 02:47
そりゃそうだ。
644 :
デフォルトの名無しさん :03/02/04 20:41
低レベルオーディオのプログラミングしようかと資料探したんだけれどあんまり ないね。 何処かに無い? 無かったら俺が書いて何処かにアップしとこうかなと思ったんだけど。
647 :
デフォルトの名無しさん :03/02/08 21:50
>>646 英語だったら死ぬほどころがってるけど、、、
基本的な所の資料って無いね。俺はWindows上での低レベルオーディオのプログラミング したくて調べたんだけど、MSDN Onlineだと関数のリファレンスだけしかない。 Win32APIの分厚い本とかも買おうかと思ったけど読んだらあまり詳しくは書いて無いので やめた。 例えばwaveOutOpenとかどう使うかとか、デバイスの状態を知る為にウィンドウ メッセージを受け取るとか、いやコールバック使う方法もあるとか、構造体にある デバイスのメーカーID一覧表とか、そんなの書いてある所見た事ねぇよ。
649 :
デフォルトの名無しさん :03/02/09 20:13
>>7 の本は読んでみましたか?
低レベルAPIのことしか書いてありませんよ〜。
そんなわけで、
MCIを使わずに低レベルAPIを使うメリットなどがわからないままです。
ここで質問しちゃいます。
どうしてでしょう?
バカかよ。MCI使ってて不満に思った事ねーのかよ。 あんな糞ウンコMCIなんか貧弱すぎだろ。
せめて、「DirectSound使ってるんだけど、低レベルAPIを使うメリット・・・」 位書けや。
652 :
デフォルトの名無しさん :03/02/09 21:04
>>645 様
はいはい、旦那様が一番でございます。旦那様は天才でございます。
旦那様以外はカスでクズでございます。
653 :
デフォルトの名無しさん :03/02/09 22:00
>>645 探し方が悪いか、英語が読めないかどっちかだろ、おまえ(w
すげー怒られてる(笑
たしかに誤解されやすい文章でした。申し訳ない。
このあいだからプログラムの勉強をはじめて、
>>7 の本を買ったばかりなんですよ。
その本にはMCIについてまったく書かれていなく、
MCIの知識がない俺はちょっと不安になってしまったわけです。
それぞれの長所・短所などの情報も皆無でしたので、
どちらを勉強するべきなのか教えてください♪というレスでした。
怒られはしましたが、 「MCIは低レベルAPIに比べて貧弱」という、 気になっていた情報を知ることができました。 感謝です♪ それさえわかれば、あの本の勉強を頑張れそう。
656 :
デフォルトの名無しさん :03/02/10 07:24
わたし、まったく音の科学について知らないのですが、ひとつやりたい事があります。 それは単純に二つのOggファイルを一つのファイルに合成したいのです。 しかも Ruby上から、かつリアルタイムで。 こういうのはなんと言うのでしょう? 論理合成? キーワードだけでも教えていただけないでしょうか?
>>656 一番簡単なのはプレイヤーを2つ別のプロセスで走らせる事かな
同期させるのは難しいかな
658 :
デフォルトの名無しさん :03/02/10 08:46
>>657 同期は確かに課題ではあるのですが、悩んでいる問題は別の所にあります。
実は、データをネットワーク経由で転送したいのです。
ここで、2つのファイルを同時に転送した場合、帯域が約二倍必要になってしまいます。
そして、そこにデータの遅延による同期の問題もあります。
なので、送信元で合成できないかなと。
659 :
デフォルトの名無しさん :03/02/10 09:21
660 :
デフォルトの名無しさん :03/02/10 16:15
MODてゲームから鳴らせるの? 公式にDLLがあるってどこかにかいてあったけど、どこが公式やら。 ゲームからMODを鳴らす方法、どこかに詳しく紹介した頁ないでしょうか。
>>660 やる気ないでしょ?
検索エンジンでキーワードを入れれば腐るほど出るものを探そうともしない
多分MODplugのSDKの事だと思うけど、 ライセンスが妙だしゲームには不向きだよ。
それより、わざわざMODを使う理由が聞きたいぞ。 データ作ってくれる作曲者もほとんどいないだろうに。
>662,663 ありがとう。参考になりました。 >661 CDをプロテクトするMOD何とかの方がたくさん出てしまうのです たしかに、今の時代MP3の方がいいですね。回線が速くなったから3 メガ4メガのゲームをDLするのも苦にならないし。 だからMOD紹介のサイトもつぎつぎ廃れてきてるのかな。 わかりました。MODは触らないでおきます。
665 :
デフォルトの名無しさん :03/02/11 08:41
周波数変えて(データを間引いて)再生するとキーンてノイズが入るんだけど これって灰パスとかやら無いとだめ? 読み飛ばしたデータの平均値でやってみたけど変わらず
>>665 LPF ですね。 リサンプリング/2を70dB以上カットするようなフィルタが望ましいです。
平均値では十分なカットは出来ません。
>>666 ネットで拾ったソース見ててどうしても分からない箇所があります
FFTで
a = (int)((log(ar[i]*ar[i]+ai[i]*ai[i])*5.0-30.0)*5.0);
バタフライ演算後に、ある周波数iからその周波数成分の強さaが求まるらしいのですが
このような計算の意図はなんでしょうか?
普通に実数と虚数の絶対値の和じゃダメなんですか?
フーリエ変換の意味を知らないのにFFTなんて触っちゃダメ
(意味を知らないの方ね)
うーん、あれが判らないってことはリア厨あるいは高校生かな?
>>667 正確には log10( hypot(ar[i],ai[i]))*20-定数 です。 hypot(a,b)=√(a*a+b*b) ですから log10( ar[i]^2+,ai[i]^2)*10-定数 となります。 実数と虚数の絶対値の和でダメな理由は、回転に独立でなくなる為です
>>672 2時間程考えてましたが下のような方法でやってるソースもあり何がなんやら
「回転に独立でなくなる」事で実際のサウンドの周波数解析に
どのような問題が出るんでしょうか?処理速度が惜しい場合は
これらの計算をはしょる事もアリですか?
// パワースペクトルを計算して代入
data[dwDataPos1].r = data[i].r * data[i].r+ data[i].i * data[i].i;
>670 まあ意味くらいは分かるんだろ
675 :
デフォルトの名無しさん :03/02/18 17:05
デジタルミキサーのように複数の音声信号を合成するときって 単純に足し算になるのでしょうか?
既出やで。 オーバーフローせんようにね。
678 :
デフォルトの名無しさん :03/03/01 09:37
保守
679 :
デフォルトの名無しさん :03/03/05 05:49
m d x
680 :
デフォルトの名無しさん :03/03/14 00:28
681 :
デフォルトの名無しさん :03/03/14 00:51
682 :
デフォルトの名無しさん :03/03/14 00:52
>>680 wavの構造とか考え方ですごくわかり易く解説している本がありますよ
CQ出版社の
Visual Basicで物理がわかる
音波シミュレーション入門
定価2,625円(税込) ISBN4-7898-3699-1
です。
>>681 さん。
>>682 さん。
どうもありがとうございました。
これでwavファイルの勉強がはじめられます。
WindowsのDirectXでストリーミングサウンドを使ったプログラミングしてます、 Win98では大丈夫なんですが、 Win2000だと作成したアプリケーションのウィンドウのフォーカスが なくなると音切れしまくってしまいます… どなたか解決法ご存知ありませんか?おねがいします。 ストリームへの書き込みは CreateThreadで作成したスレッドから書き込んでいてスレッド優先度はhighestにしてます。
686 :
デフォルトの名無しさん :03/03/22 19:55
>>685 本当に再生ポジションが移動しているかどうかチェックしる
>>686 >>687 ごめんなさい、Win2000再起動したらなおりました。ごめいわくおかけしますた。
linuxでsoundcard.hの中身ありますでしょ? サウンドフォーマットの AFM_S8とAFM_U8ってどう考えても逆じゃございませんのオホホホホホホホホ
690 :
デフォルトの名無しさん :03/04/07 20:24
midiシーケンスソフトを作りたいんですが、何からはじめたら、いいかわかりま せん。プログラム言語もまったくの初心者です。これは釣っているわけではあり ません。本気で作りたいと思っています。アドバイスお願いします。
>>690 ご自身でわかっているはずでしょう?
まずはプログラム言語を使えるようになって下さい。
まずはMIDIシーケンサをいくつか使ってみなさい。
>>690 無理。いきなり高望みするのはやめよう。
つーか、専用スレ見ても思うが
MIDIシーケンサという題材には初心者を惹きつける何かがあるのか?
音楽畑の人が興味を持つんじゃない?
>>692 どのプログラム言語でつくれるのかわからないです・・
>>694 >>695 音楽をやっている人間としては初心者ではないと思います。
>>691-
>>695 アドバイス ありがとうございました。まずはシーケンサを使いこなせるように
なりたいと思います。ご迷惑をおかけしました。・・・。
>>696 まずはMIDIシーケンサをいくつか作ってみなさい。
>>690 あなた自身は何が必要だと思うよ?
ここで的を得たものがいくつか挙げられれば作れる可能性があるし、
協力なりアドバイスをしてくれる人間がいるさ。
>>694 いきなり、というのは無理だと思うが望みを持つのはいいんじゃない?
それが何年後になるかは判らないけどすぐには無理だ、という認識があれば。
5年ほど前、プログラムや波の事も満足にしらない大学生と話ししたりメール交換なり
した事があったんだが、今ではSoundEngineなるツールを公開するにまでいたってる。
既に漏れを越され(略
もはや的を得るはそれなりに使われているからなぁ
>>703 フジのバカなアナウンサーも使っていたしな
フジには人殺しアナウンサーがいるらしい
>>697 今日 本を買ってきました がんばって勉強します
シーケンサ・・ XGを買ってきました・・。
がんばろ・・。
>>706 XGはMIDI規格であってシーケンサ名では断じてないわけで。
あのう、漏れも激しくプログラミング初心者で、 ゆくゆくは音楽関係のプログラムを作ってみたいんですが、 やっぱりサウンドプログラミングつったらC,C++必須ですか? 他の言語で書かれたアプリの例があったら教えて君ですいません。 今はPythonで勉強中です。
>>709 別にどの言語かは関係ない。
ただ、手に入りやすい、参考になるソースなどが多いのがCやC++
というのはあるかもしれない。
>>710 あ、レス付いてる。ありがとうございます。
つうか、漠然とした質問ですいませんでした。
調べたら、Pythonにも音を扱うライブラリはあるんですね...。
がんばって勉強します。
712 :
名前は開発中のものです。 :03/04/09 06:48
696さんは「セガサターンエミュ作るぞ」のスレで見たような文章。
MIDI YOKE(内部仮想結線?)みたいなものを作るのですが、質問等はこのスレで行ってよろしいでしょうか? 「サウンドプログラミング」の名の通り、波形関係の話題がメインなので躊躇しています。 「MIDI YOKE使え。」とのレスは勘弁して下さい。
シーケンサーは違うだろ DDKスレも機能していないしなぁ
スレの流れからいって、「MIDIシーケンサー(ry」の方が
適切だと漏れも思うよ。
がんばってね >
>>713
>714-716 ありがとうございました。行ってきます。 >716 はい、がんばります。
718 :
デフォルトの名無しさん :03/04/11 15:26
現状、MIDI YOKEみたいなクリティカルな良いツールが少なすぎる。 これで「コンピュータミュージック」と名乗ってよいものか。
そうだね。こんなこともできないの?って事が多い。 メーカー物は閉じてるし。
ステレオのWAVファイルをモノラルのWAVファイルに変換するのに、 左チャンネルと右チャンネルを足すだけというのを聞いたことがあるのですが、それだけで いいのでしょうか? Webを検索してみたんですが、該当するものが見つかりませんでした。
この場合WAVファイルと言うのは関係ないですね
>>720 単純に加算したらオーバーフローしちゃいますよ。
要は平均をとるわけですから、足したチャンネルの数(この場合は2)で
割ってやらないと。
あとはwavファイルの仕様を調べれば、自ずと解決するはず。
>>722 おーなるほど。 ありがとうございます。
(^^)
それとも自動伴奏なのかな? >ACID
>>720 モノラルに変換したあとに更に処理があるなら出力精度を上げておいた方がいいかも。
16bitの2chなら最低17bit(処理的には32bit化するのが無難でせう)の1ch、みたいに。
(5+6)/2 = 5.5 さあどっちに丸めよう、となるので。
いっそ浮動小数にしる。 グラフィック方面でも浮動小数のピクセルフォーマットが使われ始めてるし。
>>726 >>727 追加レスありがとうございます。うーん、サウンドプログラミングは奥が深いぞ・・・
∧_∧ ( ^^ )< ぬるぽ(^^)
そんな・・・S/N 96dB から+6dBを聞き分けられる耳持ってる人は滅多にいないよ。 まあその方が楽だけどさ、
731 :
デフォルトの名無しさん :03/05/18 23:03
ホシュ飛馬
732 :
デフォルトの名無しさん :03/05/18 23:08
>>727 浮動小数にする
誤差でそうだけど、大丈夫なのか?
音や画像では誤差なんて気にしない
>>730 再量子化誤差の問題。ディザなしで切り詰めると再量子化誤差が信号と相関性
を持ってしまい耳障りなぐらにゅらーディストーションとして聴こえてしまう
ので、ディザを使う必要がある。ステレオ足してモノにする場合も、センター
ならまだいいが特定の音源が左右どっちかに片寄ってる場合は非常に信号レベル
の低いところで耳に付く恐れがないではない。
まあグラニュラーディストーションもエフェクトのうちと割り切ればいーんで ないの? ダンス系とかでローファイの雰囲気出すのに、切り詰めて盛大にグラ ニュラーディストーションださせてなんてわざとやってると思われるCDとかあるし。 16bit+16bit->16bitじゃその手の音にはあまり効果なくて、逆に非常にSNの良い 生音源なんかでは、ごく微少レベルがちょちざらっとした感触になってしまうというnegative な効果しかないと思う。
736 :
動画直リン :03/05/19 13:11
厨ですが、 ここではC,C++でやってる人が多いようですがJAVAの人はいますか? 最近JavaSoundの存在を知ったのですが、どうなんでしょう?
OGGの使い方がよく分からん 検索しても使い方書いてるサイトまだ見つかんないし どっかにOGGを鳴らすC, C++のサンプルコードないかなぁ
>>734 ほんとに、(16bit+16bit)/2 でそこまで聞こえる耳持ってるの? すごいなあ
1サンプルだけ聴いて違いが解るやつなんてそうはいないとおもうけど、 誤差が積み重なって全体的に歪みが出てきたらそりゃ判るだろ。
とか言いつつ、ブラインドテストさせてみたら全然わからなくて恥かくヤツとか たくさんいるけどな。
なぜ必死なんだろか
いや、そういう耳を持ってる人がいるだろう事は否定はしないけど、 まあ、ノッチフィルタで音消してノイズだけ増幅すれば別だろうけど、 素で判る人は1万人に1人じゃないのかなあ
データによっては問題が目立つ場合があるという話では?
たとえばどんなデータ?
低い周波数で-60dB程度のサイン波が記録されてるとか
聴いて自信が無かったら目でみるんだ。 そのための波形表示と周波数表示。
∧_∧ ピュ.ー ( ^^ ) <これからも僕を応援して下さいね(^^)。 =〔~∪ ̄ ̄〕 = ◎――◎ 山崎渉
(^^)
751 :
デフォルトの名無しさん :03/07/05 07:26
あげ
__∧_∧_ |( ^^ )| <寝るぽ(^^) |\⌒⌒⌒\ \ |⌒⌒⌒~| 山崎渉 ~ ̄ ̄ ̄ ̄
753 :
デフォルトの名無しさん :03/07/19 18:08
保守あげ
755 :
デフォルトの名無しさん :03/07/19 21:46
携帯電話の信号圧縮の仕組みを教えてください
757 :
デフォルトの名無しさん :03/07/22 22:52
(RSSのように)前方2チャンネルで3Dサウンドを鳴らしたいのですが, どこの分野を勉強すればいいのでしょうか.
(^^)
(⌒V⌒) │ ^ ^ │<これからも僕を応援して下さいね(^^)。 ⊂| |つ (_)(_) 山崎パン
2ちゃんねる分野
Emergency Blow!!
762 :
デフォルトの名無しさん :03/08/26 00:54
sageでやってどうする>> 自分
DirectSoundでOGGをBGMとして扱いたいです 日本語の詳しいコメント入ったソース公開してるサイト教えて下さい 一応検索していくつか見つけたけどこれはいい!というようなサイトないんですよねぇ
DirectX SDKのストリーミングのサンプルの、 waveのデータをバッファにコピーしている部分を、 OggVorbisのデコード処理に置き換えるだけですよよん
mid→waveコンバータつくってます。 でもwaveのヘッダに書き込むlengthってwaveデータ生成が終るまでわからんのですけど、これって まずデーター部だけを一時ファイルに書き出し→そのヘッダをつけて一時ファイルを読み込んでもういちファイルをつくる しか方法ないんですかね、なんか遅そうで。
そんなあなたにはfseek関数をオススメ
>>766 ガビソ、完全にその関数の存在忘れたよ、、、こんな初歩的なことを…
どうもサンクスです。
>>765 がんばれ〜、それが出来れば(ゲームの)サウンドドライバなんてへっちゃらだー
そういやサウンドドライバって具体的にどんなものことなの? いまいちよーわからん…、今作ってるものがあれば楽につくれるのかな
やっぱDOS向けのそういうのか〜、 そういうのってハードとかわからんと絶対ムリなきが… ていうかWindowsじゃ意味無くない?全部DirectXAPIで、、 だから768のレスがいまいちよくわからんかったり
ASIOっていったいどういう原理でレイテンシおさえてるんでしょ? Windowsのタスクシステムの切り替えの周期25ms(?)は絶対に超えられないのかとおもてたら 最大0.75msまでいけるそうで…
フーリエ変換をちょいと勉強してみてるが 自分の頭の悪さに泣きたくなったw
MIDIHDRのdwFlags、1, 2, 4, 8って感じで倍数倍数で存在するはずなのに 漏れがプログラム組むと3で返ってくる…。死にたい。
>>775 おいおい・・・もう少し仕様を読もう・・・
保守
778 :
デフォルトの名無しさん :03/11/24 08:58
アゲ代わりに サイン波を発生する演算として良く使う演算 y2:=y2 -y1*b y1:=y1 +y2*b この演算は 3角公式 cos(w/2+n*w)=cos(w/2)*cos(n*w) -sin(w/2)*sin(n*w) sin(w +n*w)=sin(n*w)+2sin(w/2)*cos(w/2+n*w) より導かれる 結果 b=2*sin(w/2) 初期値 y1=0ならy2=cos(-w/2)
サインテーブルとこの演算どっちがいいのだろう、迷う…
>>779 そりゃ、掛算命令の速さ次第でしょう。
もっとも、
半端な周波数を出したいとか、周波数をスムーズに変更したい場合は掛け算遅くても
>>778
パソコンなら s=sin(w) c=cos(w) wk:= c*y2 - s*y1 y1:= c*y1 - s*y2 w2:=wk の方を良く使う。 y1,y2の位相差が常に90度だから色々使えるから。 それから発振を安定にする為に、最小ビットの1/2程度の部妙な加算を入れるのがコツ y2:=y2 -y1*b +y2/2^16 のようにね。 で、オーバフローを監視しておけば安定に発振を続けてくれる。
782 :
デフォルトの名無しさん :03/12/17 13:33
簡単、高速動作するLPFを教えてください。データは16bit 44.1kHzです。
1、2次ですか? 2、f0はいくら? 3、f0は動作中に可変? 4、浮動小数点?固定小数点?
0, 0.00100345 カットオフが 16KHzという事はサンプリング周波数変換用ですか? 1, -0.00244519 2, 0.00164698 そうするとIIRフィルタではなく FIRフィルタの分野ですね。 3, 0.00294595 4, -0.00831451 15KHz -6dB 5, 0.00675733 16KHz -16dB 6, 0.00600769 17KHz -40dB 7, -0.02119682 8, 0.01954429 こんな感じでどうですか? 9, 0.00958664 10, -0.04821507 11, 0.05290816 12, 0.01248738 13, -0.13903491 14, 0.26618036 15, 0.68015925 16, 0.26618036 17, -0.13903491 18, 0.01248738 19, 0.05290816 20, -0.04821507 21, 0.00958664 22, 0.01954429 23, -0.02119682 24, 0.00600769 25, 0.00675733 26, -0.00831451 27, 0.00294595 28, 0.00164698 29, -0.00244519 30, 0.00100345
>>785 単に高音を消したいだけです。
>こんな感じでどうですか?
数字の意味が分かりません。
数字の意味は 配列 c[31] dly[64]; c[0]=0.00100345; c[1]=-0.00244519; ・・・ static int dlyp=0; double in , out; dly[dlyp]=in; dly[dlyp+32]=in; out=0; for(i=0;i<31;i++) out += c[i]*dly[dlyp+32-i] ; dlyp= (dlyp+1) & 31; でも、単に高音を消したいなら2次 IIRフィルタが少し軽いですね これも例が必要ですか?
>>787 ありがとうございました。しかしFIRフィルタについてすこし勉強したところ、フィルタ定数みたいなのって簡単にいじれないのですね。
FIRフィルターは断念します。
FIRフィルタの方が高域に限れば、同じコードで係数だけ弄れば色んな調整が出来るので 面白いのですけどね。 といってもパソコンレベルじゃないと動的に係数調整は難しいけど あと、FIRフィルタは位相がフラットなんで、2つのフィルタの合成が容易というのもメリットだし 自分の所では周波数特性をグラフ上でマウスでグリグリと調整出来るようにしたりしていますよ。 IIRフィルタの例が必要なら言って下さい。 軽いけど、動的(実行中に)変更が難しいタイプと、 重いけど、w,Qが独立で変更が容易なタイプ(ハシゴ型構成)があります。
結局IIRも定数みたいなのがあるんですよね。多分。
だとしたらこれも断念します。
で、
>>150 のHPFの周波数をもっと高くして、源信号から引けばいいかなと思ってやったら、
それらしい音になったんですがダメですか?
下の式でも全く同じ結果になってると思いますがいかかでしょう。
out += (in - out) / 1.25;
それは1次のLPFですね。(1-b)/(1-bZ) Z=1/z でも、その係数では高域は 16KHzで-3dB 一番高い場所でも-4dB程度しか落ちていません。 高域では さらに(1+Z)/2を掛け算して (1-b)*(1+Z)/2(1-bZ) とするのが普通です。 というか、適当な減衰が必要なら (1+Z)/2だけで十分です つまり out=(in+old)/2 old = in です。 これで16Kで -7.6dB 18KHzで-11dB落ちます ところで、この周波数で差が聞けるというのは凄いですね。
ついでに、16KHzでの減衰が大きすぎるなら (1-b)*(1+Z)/2(1-bZ) の実現式
out+=k*(in+old -2*out)
old = in
k = (1-b)/2
k = (1 -0.37)/2= 0.685 で 16KHz -3dB です。
>>790 より少しだけ重いですが、特性は 16KHzより下で減衰が減り 高い所でよく減衰してくれます。
正直ゆうと音源エミュなんですが、一部の音の波形の立ち上がりが良すぎて耳につくので和らげようと言うもくろみだったんです。
16kHzと言うのは想像の数値です。あと
>>790 の1.25も色々試したうちの一例です(波形表示ソフトで確認しています)。
で、
>>791 、
>>792 の方法を試しましたが、減衰して欲しくない音まで減衰してしまい、うまくありませんでした。
後からLPFで処理しようと言うのがそもそも良くなかったみたいです。
それで、エミュレーションの内部に
>>791 の方法を入れて一応解決しました。
また、
>>792 は簡単な式なのに矩形波にリンギングみたいなのが発生して(本格的で)ビックリです。
この式は別の所で使わせていただきます。
ありがとうございました。
一点おかしな点
k = (1 -0.37)/2= 0.685 ←計算が合いません。
1 -0.37 =0.63
0.63/2 = 0.315?
矩形波を合成するのはサイン波より何倍も難しいのですが
ガンバってるのですね。
後半の話、
ごめんなさい。
(1 - (-0.37))/2
です。
サンプリング周波数/4 の時に k=0.5 となり、 IIRである
>>792 の式は
out+=k*(in+old -2*out) -> out = out+(in+old -2*out)/2 = (in+out)/2
で
>>791 のFIRフィルタとなります。
ついでに b と カットオフ周波数f0との関係は w=2*PI*f0/サンプル周波数 r=tan(w/2) b=(1-r)/(1+r) です。 この式は 双1次変換 でアナログ1次フィルタとマッピングしたもので 高域では少しアナログと比べて性能がキツメですね。
>>794 >(1 - (-0.37))/2
分かりました。
矩形波は単純に一定間隔で、例えば音量100なら、
0→100→0→100
の様に書き込むだけです。
>>795 のような式になると私には理解できましぇん。
最後に、out+=k*(in+old -2*out)は
kを調整してもっと低い周波数で使ってもいいんでしょうか?
>>796 矩形波は・・・・それでは割り切れない周波数でザラツキが出るでしょう?
オーバサンプリングからダウンサンプリングするとか
>>114 >>119 の合成方式とか
後半、
kを小さくして低い周波数に使っても大丈夫ですが、
fs/100程度迄にしておいた方が良いです。
中域〜高域用の連続可変可能な1次フィルタとして活躍します。
その式を使う為の kは上に書いた式より
k=(1-b)/2 = ( 1- (1-r)/(1+r))/2=r/(1+r)
r=tan(π*f0/サンプル周波数)
どうしてこれを低い周波数に使わないかというと、低い周波数になると
分母に比べて(1+Z)の分子は殆ど効かない(分母で十分に落としてしまっている)
という事で >> 790の
out += w*(in-out) (f0 が十分小さいなら w=2πf0/サンプル周波数)
で十分
ただし、 outには in のビット幅 - log2(w)が必要です 浮動小数点ならあまり注意しなくて大丈夫ですが
固定小数点だとちょっとした工夫が必要。
矩形波の話
デジタル信号上では fs(サンプリング周波数)
fs/4〜fs/2 の 周波数のどんな繰り返し波もサイン波と同じものが出なければいけません
元が矩形波でも、その矩形波そのままをサンプリングしてくると折り返し雑音が発生します。
ただ、元が完全な同周期の矩形波であれば、折り返してもそれはその周期の倍音なので
雑音的に聞こえない事になりますが、
実際には、その周期の矩形波をfs/2以上をちゃんとカットしてサンプリングした音とはずいぶん
違った信号になります。
だから
>>793 のように
>1部の音の波形の立ち上がりが良すぎて耳につく
という事になります。
そういう意味で、矩形波を合成するのは、サイン波より数倍難しいのです。
Win32 APIのwaveInGetPosition()関数で、TIME_SAMPLESを指定できない サウンドカードってあるのでしょうか?
>>797 矩形波の濁る問題は既に処理済みです。実際は波形の立ち上がり、下がりの時ひと工夫しています。
out+=k*(in+old -2*out)の式の説明、ありがとうございました。
その後調べたんですが5khz前後で使用する予定。
このたびは、色々勉強になりました、ありがとうございました。
801 :
デフォルトの名無しさん :03/12/31 22:06
質問です。 ミキサーのPanはどのように実装すべきでしょうか? 右に振ったときは、左の音量を引くだけですか? そうするとLRをあわせたときの音量が、 Panがセンターにあるときより減ってしまう気がします。 かといって左の音量を引いた分を、右に足すと、 右に振り切った場合は、右が2倍の音量になってしまいクリップしまくります。 そもそも音量の考え方がわかってない気がしますが、 どうやって実現するものなのでしょうか?
>>801 用途によって色々あるとは思いますが、
オーディオ機器のバランスは主にMN型と言うボリュームが使われていて、中央で左右共に100%,
左に回すと左はそのままで右だけが減少し、右に回した時はその逆です。
左: ̄\
右:/ ̄
>>802 ありがとうございます。
実験してみたところ、その方法で違和感なさそうです。
>>802 そのままだと聴感上よくないので左右に振るとやや小さくなる
ようになってるDAWってなかったっけ? CUBASEかな。
OS X用のAU作りたいとか夢見てます。 Objective-C+Cocoaでちょっとゲームっぽいの作った事がある 程度のスキルじゃサンプルコードすら把握できない。。 Apple、もっと日本語ドキュメント整備して欲しいなぁ……。
AUって何?
KDD(ry
AudioUnit: Apple版VST/VSTi 傘下EmagicのLogicが採用 OSサービスなので対応がラク。 AU対応ソフトはフリー・シェア界隈でも意外と多い OS X/Xcodeで開発可能 プラグイン開発側にしてみれば日本語ドキュメントが致命的に少ない
インプレッサVST/VSTi
>>809 手を出してる香具師が少ないみたいだな。
AUプログラミング入門なんて本でも書いたら売れそうだ。
AUに限らずサウンドプログラミングの本は少ないからなぁ。 出版不況ですか・・・
プラグイン物は単価高く取れるかもしれないけど、 DTMユーザの絶対数が少ないからな。 ただでさえ少ないからwin市場=vst/vstiを狙っちまう。 ドキュメントの整備や定番本の出版なんかされて、 AUのシンプルなソフトシンセのサンプルソースとか出してくれる 先駆者がいれば乗り出す人も増えるだろうけど、フリーも増えて にわかが金取るのは難しくなるだろうねぇ。 Xcode付属のサンプルとか説明翻訳するのも偉い手間。 少なくともDSP初心者には手が出せない臭い
ディレイ(20〜30ms)をサイン波のLFOで変調して フランジャーを作ってるんですが、周期的にノイズが乗ってしまいます。 バッファー周りをどういう仕様にしたらいいのか教えてくださいm(__)m
バッファというよりディレイの作り方が悪いんじゃないの?
配列の添え字がズレてるとか?
8倍程度のオーバサンプリングしないと高域がノイズになるって話じゃないの?
>>814 いや、ディレイ自体は問題なく動作してます。
上に書いた20〜30msは10〜30msの間違いですた。コーラスにも使えるようにと。
LFOもトレモロやフィルターで動作確認済みで、その要領でディレイタイムに作用させてます。
それでそのLFOの周期に合わせてノイズが乗ってしまっているようで…。
>>816 まだオーバーサンプリングの仕方がわかってません。勉強してきます…
自分なりに調べていて「interpolation」というものが出てきたんですが、これは関係ありますか?
>>819 ディレイの補間のアルゴリズムが悪いんじゃないの?
どうやってるの?
if (i >= samplerate) i = 0; float x = in; Buffer[ i ] = x; j = i - (DelayTime * samplerate); if (j < 0) j = samplerate + j; float y = Buffer[ j ]; Buffer[ i ] += y * Feedback; i++; out = x * (1.0f - wet) + y * wet; いま手元にソースが無いんですが、こんな具合です。 実はまだディレイ覚えたてで、作りが簡素杉ですか?
オーバーフロー/アンダーフローしてるだけとかじゃないの?
1からコード全部書き直したら難なく動作しました!ギュインギュイン言ってます! まだどこが悪かったか見直ししてないんですけど おそらくスケーリングか何かのイージーミスかと…_| ̄|○ お騒がせしてスミマセンでした!
>>819 たぶん サンプルレート/8〜サンプルレート/2の高い周波数成分が入っていると、
それじゃノイズが出ると思うよ。
たしかに音源ソースを変えると前回とはまた別のノイズが乗ってます。 これはLPFで対処するのでしょうか?
高い周波数が入っていると、どうしてノイズが出るか判る? それがわかれば高い周波数でもノイズを出さない方法も判ると思うよ。 それが判らないなら ディレイの入力にLPFを入れるしかないね。
増幅されてエイリアシングノイズになるからオーバーサンプリングしる!ということではないんですか? とりあえず自分で書いてたinterpolationを見様見真似で載せてみたところ 幾分モジュレーションが滑らかになったような気がするけど、コーラスはまだノイズが気になります
補間のやりかたは? 簡単な補間だと、中間位置は (D[i] + D[i+1] )/2 で ピッタシの位置では D[i] になってしまう。 これでは、 中間位置は (1+Z)/2 そうでない時には Z となって高域はハイカットされたりされなかったりで グチャグチャになる。 中間位置でも ピッタシの位置でも出来るだけ同じ特性でなければいけない。
827 :
デフォルトの名無しさん :04/01/22 12:56
はじめまして 無音の検知をしたいのですが 良い方法ないでしょうか? 周波数求めて人間の声を判断するのが最適でしょうか?
wave音声の複数のチャンネルを合成して (つまり1チャンネルにして)出力したいんですが、 アルゴリズムとか紹介されてるサイトはないでしょうか? 当方では、多チャンネルを想定していますが、 たぶんステレオをモノラルに変換するのと同じ 方法だと思うけど。。。よう分からん。。。
今上のほうを見てみたら
>>720 から
ステレオ→モノラル変換の話がありましたね。
ということは、16ビットオーディオで4chを合成
出力する場合、各サンプリングをワード単位で
加算して4で割って平均を取ればいいってこと?
いや、割らない、もしくは割るのは2ぐらいまででいいとおもわれ
ただしサーチュエイションは忘れぬように…
ありがとうございます。 上限下限の限界を超えないように 必要であれば適当に割ればいいのですね。
サーチュエイションってなんですか? 検索しても0件です。
読み方間違えたぽい(TT) saturation 足し合わせたとき上限を超えたら上限の値でクリッピングすること、 いや、合ってるのかな…
>>834 それのことですか。ヨンクス。
サチるってクリップすることだったのか。
クリップしてくれたら、それは安全側。 ラップしてしまうともっと状況は悪くなる
>>826 musicdspの"Class for waveguide/delay effects"のコードを少し書き換えて使ってみました。
まだ十分なチェックはしてないけど、高域のノイズは消えたようです。
あとはオーバーサンプリングを勉強して実装してみます。他に「コレやっとけ」ってのがあったら教えてください。
帰りに買ってきた本にコムフィルターも載っていたので、これもそのうちに。
>>827 無音検出は、簡単には音量がシキイ値以下かどうかでやるけど
自動なんて事を考えると、やればやるほど難しいね。
840 :
デフォルトの名無しさん :04/01/23 15:15
>>827 ある一定時間以上、レベルが閾値以下みたいな感じでやらないと
0クロスするたびに無音検出してしまうよ。
ピークホールドとリリースを組み合わせて音量に見立てるとかもイイと思う。
841 :
デフォルトの名無しさん :04/01/26 12:00
.midファイルのデータ構造について説明しているサイトがあるなら 教えてください。やりたい事はバイナリで直に書いてピアノでドの音を 5秒鳴らすとかです。
上の方ってプロトコルももちろんかいてるが、ハードウェア側にだいぶページ使われてた記憶あるが、どうだったかな。
847 :
デフォルトの名無しさん :04/02/06 00:48
素人で申し訳ないのですが、
>>813 からの話題がよくわかりません。
求める値がサンプルとサンプルの間にある場合に、
二つの点を直線で結んで考えると誤った値が出てしまう
ということだと思うのですが、
>>822 のサンプリングレート/8という周波数は何から考えると出てくるのでしょうか?
それと、これは、オーバーサンプリングかローパスフィルタを通さないと
解決できないものですか?
他に有効な回避方法があれば、どなたか提示していただけないでしょうか。
848 :
デフォルトの名無しさん :04/02/06 06:21
>>848 コピー防止技術は最早、気違いの域に達してますな。
850 :
デフォルトの名無しさん :04/02/07 23:02
TTS(Text to Speech)みたいに音声を綺麗に、プログラムで作るっていうのは個人レベルではやっぱり難しいんでしょうか。 今のTTSだと声に表情がつけられないし。
852 :
デフォルトの名無しさん :04/02/10 21:15
wavファイルを サンプルサイズを16bit<->8bit サンプルレートを22kHz<->44kHz というように相互に変換できるプログラムを自作しています。 webでいろいろ調べているのですが、変換の仕方(理論)が見つからず 四苦八苦しています。 何かよさげなサンプル・情報ないですか。
16bit<->8bitは係数を掛けて足し算引き算で調整するだけ 22kHz<->44kHzは単純に2倍、1/2倍して補間するだけ
>>853 > 16bit<->8bitは係数を掛けて足し算引き算で調整するだけ
う〜ん、これじゃちょっと分からないです。
具体的にはどんな感じになるのでしょうか。
16bit<->8bit 超単純に 256を掛ける<->256で割る じゃだめなの?
>>853 16bit<->8bitは
下位bit切り捨てになるんじゃないかな?
音質にこだわるならディザとか掛けてみるのもいいかと。
16bitは0-65535 8bitは-128-127 じゃなかったっけ?
>847 逆だろ 16bit -32768〜0〜32767 8bit 0〜128〜255
レス番間違えた>857
22kHz<->44kHzの変換処理の実装はできましたが、 16bit<->8bitの変換処理がやっぱりうまくできません。 基本的にデータをshort型で扱っているのですがそれがまずいのでしょうか?
なんとか完成できました。 レスしてくれた方、サンクスです。
>>847 1、(1+Z)/2 と Z の周波数特性差がどこらへんまで気になるかで 1/8まで気になるという事じゃないかな
2、オーバーサンプリングもローパスフィルタを通す事も、表現が違うだけで処理は同じ
他の方法は
1、良い補間関数を作る事
2、気にしない・気にならないようにする事
>>862 レスありがとうございます。
いろいろ実際にやってみないとわからなそうですね。
8bitのwavデータで、Fade in Fade outさせるときは普通どのようにしますか? 一旦、16bitに変換してから掛け算、割り算をするのは大げさな感じですが、単にビットシフトさせるのでしょうか?
普通がどーかは知らんが、8bit程度ならテーブルで十分じゃねーの?
866 :
デフォルトの名無しさん :04/03/04 22:49
>>864 普通に掛け算、割り算すればいいんでない?
>>864 16bitに変換してからというか、普通はパソコンなら32bit整数で計算するでしょう。
フェードインなら
out= 128+(((in-128)*gain +128)
>>16 );
gain=min( gain +32 , 0x10000) ;
いろいろ、教えていただき有難うございます。 実は、マイコンで音をだそうと思っているので、8bitのままで処理できれば良いのです。
8bitマイコンってPICのような? 掛け算無いと厳しいね。 どうせノイズ多いんだから、クリッピングしていったらどう?
Java Sound API について詳しく解説してある本って何?
871 :
デフォルトの名無しさん :04/03/20 14:52
age
873 :
デフォルトの名無しさん :04/03/31 09:59
>>875 うん。そこに移行したのは
わかったんだけど、smaf仕様書の
詳細が見れなくなっているみたいなんだ。
もしくは探しきれてないだけなのかな?
877 :
デフォルトの名無しさん :04/04/01 22:33
>>876 pdfないねぃ。
問い合わせすれば公開してくれるかな・・・
>>877 さっき、お願いメール?をサポート窓口?にだしました。
さて、どうなることやら?
曰く「個別回答はしない。頂いた内容はFAQを充実させる参考にする。」(意訳)
YAMAHAさんお願い!
公開して!!
タイトルではプロフェッショナルを唱っておいて、対象読者は初級者だと。 目次を見る限り概論書っぽいね。
触りを詰められるだけ詰め込んでみましたって感じだな。
将来ゲーム音楽の職に就きたいなとか思ってる小中学生には良いんじゃない
('A`)だって秀和だし
ヤマハに無視されたようだ。 悔しいので、そこらに置いてある ファイルを元に解析して公開してくれるわ。>誰かが
MA-2までの仕様なら個人で公開してる香具師がいたような・・・
>>886 是非、思い出して欲しい。
ここ数週間探し続けているが
見当たらないのです。
OggのプログラムをWindowsのC++で組もうと考えてるんだけど、 ソースコードはどこに行けば手に入るでしょう。 以前はオフィシャルサイトにダウンロードできるところあったと おもうのですが、言ってみたらサイトが無くなってた?っぽいのです。 ご存知の方いたら教えてください。
あれ、ホントだ。 助かりました。ありがとうございます。
そういえば、前にプログラム板にOggのスレなかったけ? 結構参考にしていたんだけど、もうない?
ちょっとお尋ねします。 waveファイルの中で、たとえば音声だけを重点的に 拾い出したい場合など、どのようにするんでしょうか? たぶんイコライザの応用みたいな感じで、特定の 周波数範囲だけを抜き出すみたいな。。。 結構、難し気ですか?
難しくは無い
素晴らしい即答、ありがとう。
オレンジからオレンジジュースを作るのは簡単でも オレンジジュースからオレンジを取り出すのは不可能
つぶ入りオレンジジュースからつぶを取り出すのは可能
>897 それを言うならミックスジュースだろ。
クラスプラットフォームで(・∀・)イイ!!ライブラリないですか?
あれ? 昔のが残ってたのか。
>>894 ソースがステレオなら、LchとRchを足したり引いたりである程度は可能だけど。
そういや、ボーカルだけ消す装置があったな
wavの波形を表示するプログラムを作成中なんですが、リニアPCMの波形表示は 出来たのですがMS ADPCMでつまずいてます。 MS ADPCMのデータ構造やデコード(データ部を元に戻したいんです)についての 資料ってないものでしょうか? 開発環境は Win2K/C++(MFC) です。
>>905 MSDNだけではよく分からなかったんですが、acm使ったサンプルを
見つけられたのでなんとかなりそうです。
ありがとうございました。
>>908 WebページはUTF-8で書いて見た。
あ!HTMLタグのEUC-JP削除するの忘れてた。
音楽CDからWAVファイルを生成する方法に関する質問ですが DeviceIoControl関数を用いる方法以外に考えられますでしょうか。 考えられる場合、具体的な方法を教えていただきたいと思います。 よろしくお願いいたします。
line等から録音、ASPI32 あたりが定番
>911 ありがとうございます 調べてみます
913 :
デフォルトの名無しさん :04/06/04 16:56
みんなクセナキスは聴くの? シナファイage
積極的にはあまり聴かない
915 :
デフォルトの名無しさん :04/06/04 17:44
wavマンセー mp3は糞 midは最悪
同士ハケーン
midは最悪といってる時点で何かわかってないきがする
midは最悪だな、SC-8850でも32kHzだし。
さらに勘違いしてるぽいな
本当にしらないっぽいな
midはやめて、centerにしようぜ
DTM板住人どのくらいいる? ノシ
924 :
デフォルトの名無しさん :04/06/05 01:34
DTMもみとるよ! おめーら、もうすぐBSでブーレーズ見れるぞ(バルトーク) レポン大好きだろ?おめーら
midi嫌いな人居ますか? (^^)ノシ
MIDI楽器は普通に使うが、配布smfをショボい音源で素で鳴らす奴多すぎなのは嫌い。
位相保証されたiirの技術資料ってないですかね・・(ソースだと尚嬉しい) pass付きの論文ならワラワラ引っかかるんですが・・
ASIO SDKをDLして、音を出すアプリケーションを書いてみたんだけど 音が出なくて困ってる。 bufferSwitchTimeInfo コールバック関数の中でbufferInfos[出力ちゃんねる].buffers[index]に 何か書けばノイズくらいは出るだろうと思ってたら、何も出ない。 ためしに入力をファイルに書き出してみたらこっちは問題なし。 他はおおむねhostsample.cppと同じなんだけど、何が問題なのかサパーリわからん。
switch (asioDriverInfo.channelInfos[i].type) { case ASIOSTInt??LSB を処理した?
>>928 typeが同じなのを確認してから入力を出力にmemcpyしたり
バッファサイズx(サンプルのバイト数)を乱数で埋めたりしてみた。
サンプルのバイト数はそういうswitchで判定してるけど、デバッガで見た感じ問題なさげ。
asioMessageコールバックが一度も呼ばれないのは問題ないのかな?
しかしSDKのサンプルが「無音を20秒鳴らす」だけって、ひどいよな…。
loading ASIO Driver : ASIO DIGI96 Serie
ASIOImplVer=2 DriverVer=1 name=digi96
ASIOOutputReady() supported
Channels: inputs=8 outputs=8
input0 In,Active,group=0,channel=0,type=ASIOSTInt16LSB,name='1 D96 PST (1)'
input1 In,Active,group=0,channel=1,type=ASIOSTInt16LSB,name='2 D96 PST (1)'
(snip)
output0 Out,Active,group=0,channel=0,type=ASIOSTInt16LSB,name='1 D96 PST (1)'
output1 Out,Active,group=0,channel=1,type=ASIOSTInt16LSB,name='2 D96 PST (1)'
(snip)
ASIOGetBufferSize (min: 2048, max: 2048, preferred: 2048, granularity: 0);
ASIOGetSampleRate (sampleRate: 44100.000000);
ASIOGetLatencies (input: 2048, output: 2048);
ASIO Driver started succefully.
39857092 ms / 39857092 ms / 172032 samples / TC: 00:00:00:00000
callbackにきてるんなら問題ないハズだらか他が原因かね・・ オレも翻訳ソフト駆使して全コメントを意味不明な日本語にしてガンガッたよ(w 動作は完全にhostsample。mainの入り弧 if (ASIOStart() == ASE_OK) { ・・・ } に入ったら現状維持で抜けて(!)、再生終了したら用意した終了関数でその後処理の続きをしてる(汗 ch設定とかその辺カニ・・?
今試したら 再生時に long asioMessages(〜 は来るなぁ kAsioEngineVersion kAsioSupportsTimeInfo と来た。
段々思い出してきた(w オイラの場合 long init_asio_static_data (DriverInfo *asioDriverInfo, int rate) 内で if (asioDriverInfo->sampleRate <= 0.0 || asioDriverInfo->sampleRate > 96000.0) { // Driver does not store it's internal sample rate, so set it to a know one. ・・ } この直後に以下を追加してた else { if (ASIOCanSampleRate(rate) == ASE_OK) { if(ASIOSetSampleRate(rate) == ASE_OK) { if (ASIOGetSampleRate(&asioDriverInfo->sampleRate) == ASE_OK) { //_RPT1(_CRT_WARN,"ASIOGetSampleRate (sampleRate: %f);\n", asioDriverInfo->sampleRate); } else return -6; } else return -5; } else return -5; } そのままコピペ。理由は忘れた。多分関係無いな・・
winampのASIOプラグインだと音が出てるから、やっぱりコードの問題なんだろな。 あれってソース公開してたから見てみるよ…
935 :
デフォルトの名無しさん :04/06/29 13:50
936 :
デフォルトの名無しさん :04/06/29 14:06
MIDIクソ
ヘッドフォンで「後ろから音が聞こえる」という状況って どうやれば作れるんでしょうか?
バイノーラル録音でググれ! 計算で求めるのはそれなりにホネが折れる
941 :
デフォルトの名無しさん :04/07/28 21:17
MIDIクソって言ってる人いるけど、鳴らす音源によって全然音変わってくるじゃん。
それで?
>941 だから(再現性がないから)クソって言ってるんじゃないの?
MIDIはインターフェースなんだが
そういや昔MIDIってレーベルがあったなぁ(遠い目
MIDI規格の策定には楽器メーカーとPC関連企業が参加したが、 楽器メーカーは楽器ごとの個性を生かせる規格を主張し、 PCメーカーは同じコマンドを送ればどの楽器でも同じ音が出るべきだと主張した。 音源をPCの周辺機器と見るか、PCを楽器のコントロール装置と見るかの 立場の違いだ。
>944 に同意。 よって、通信速度が遅いからクソって言ってるんじゃないの?
大昔の規格だからしょうがないよ。
まぁmidiを音楽ファイルのひとつとしか捕らえてないようなのはさすがに痛い
通信速度さえ速くなれば問題ないってことか?
mlanとかいうのをYAMAHAが提唱してなかったっけ
いいかげんUSB使った新しい規格出さないと、業界全体が萎んじゃうよ。
>950 通信速度が上がるなら、多少データを冗長なものにして編集しやすくして欲しいな。 1命令4バイトの倍数単位とかで。 レコポかなんかの形式がそうじゃなかったかっけか。 そして次スレは>970くらいでいいのかな?
>>953 >>949 で言っているのは恐らく君のことだ。
MIDIのプロトコルとSMFフォーマットをごっちゃにしてる匂いがするぞ。
シーケンス的には、発音:消音とコマンドを分けるのではなく
発音+ゲートタイムとした方が編集しやすいと常々思っているのだが
プログラムの問題だしどうでもいいな。
955 :
デフォルトの名無しさん :04/07/29 07:12
>>953 いや、950を越えてるから、もうそろそろ建てないと このまま落ちてしまうよ。
俺は建てられない。
957 :
デフォルトの名無しさん :04/07/29 10:49
このスレの存在に始めて気づいた (゚д゚)ウマー もう、DSPっていったらFFTの今の時代 FIRに走ってる俺は・・・orz
>>954 もともとMIDIは電子楽器同士の制御用の規格だし。
(ちなみに初めてMIDI端子を搭載したシンセはあのYAMAHA DX7)
シンセで弾いた演奏を他のシンセの音で鳴らしたりとかするためのものだから、
ノートオン・ノートオフそれぞれ別に送らないと困る。
鍵盤を押し下げた時点では音長などわからん。
んで、SMFもMIDIの信号に時間軸の情報を与えただけのものだから、 まあそういうことだ。
人間の演奏速度を考えるとデータ転送速度は今のままでもあまり問題にならないのかな?
>>960 モマエはMIDIを常に一人分の演奏データしか転送しないものと思っているのか?
>>962 もともとは1人の演奏用に作られたんだと思うよ。その命令体系からしてさ
命令体系はどう見ても、多人数で複数の楽器を扱えるようにしか見えないが、 どこをどう見たらそう思えるのか理解できない。
モノフォニック・シンセサイザーの時代なら今の通信速度でも十分だったろうけど、 16chフルに使ってる楽曲とか、もたついてるのが聞いた耳で解るよ。 >960 ここはプログラム板だし、人間の演奏速度は議論対象外じゃね?
>>964 そうか? 誰が誰に送ろうとしてるかの情報が欠落してるように思ったのだが?
送信元が複数だと ランニングステータスで連続送信してる時に割り込めないしな
>>958 いや、それは分かってるんだが...
だから953がMIDIのプロトコルとSMFフォーマットをごっちゃにしてると書いたのであって。
俺が後段で言及してるのはデータフォーマットのことね。
「レコポかなんかの形式」ってのもデータフォーマットの話だべ。
>954 ノート、バンクチェンジ、コントロールチェンジなんかもMIDI規格内だべ。 デルタタイムの処理ももちろん面倒だが、 これらのメッセージも2バイトだったり省略したりで処理しにくい。
>>966 きちんとチャンネルを設定出来るようになっているだろう。
そもそも割り込めないも何も、時系列で必要なタイミングを処理するのに、
他のデータを送信中に突然割り込む必要性など無い。
>>965 > 16chフルに使ってる楽曲とか、もたついてるのが聞いた耳で解るよ。
単に音源の処理速度が遅いというケースも多々。
ローランドとかローランドとかローランドとか。
つーてもまあ、31250bpsはやっぱり不足なんだけどね。
>>969 いいか、
>>962 の論理を分析しよう
・「常に一人分の演奏データしか転送しないものと思っているのか?」 疑問形だが、これは
・「常に一人分の演奏データしか転送しないものではない。」 となる。さらに反転すれば
・「マレには2人以上の演奏データを転送する場合がある」 と同義になる
つまり、1人が他のデータを送信中に2人目が突然割り込める必要があるんだ!
まず、MIDIは1対1タレ流し通信なので 2人の演奏データを物理的にマージは出来ない。
もちろん、コントローラが、2つの信号をマージして出せばそれは可能だが、
どちらが演奏しようとした情報かはこの時点で失われる。
そして、ノートON/OFFの制御についてはこのコントローラが負わなければいけない。
結論として 「マレには2人分の演奏データを転送する場合がある」なら
それはMIDIの外側で実現せねばならず、容易な事ではないということだ。
>972 異議アリ! そもそも2人分のデータを1台のMIDI機器で演奏する場合がある。。。 たとえば、MIDIキーボードで連弾する場合もあり得るだろう。 このばあい、"突然"割り込む必要はない!
974
ALUTの英語解説読むのが面倒age
976 :
デフォルトの名無しさん :04/08/10 23:27
age
ASIO 対応の再生ソフトを作りたいのですがSDKがダウソできません。 フォームに適当に入力して送られてきたメールのアドレスにアクセスしても アクセス権がありませんと怒られます。 ダウソまでの手順がわかる方いませんか?
スレさようなら
979
JAVA SOUND API と C#+DIRECTX って どちらがサウンドプログラミングしやすいでしょうか? ドキュメントの面も含めて・・・
C#やるくらいならJAVA
サウンドプログラミングって何をやりたいの? FM音源とかのエミュレートなら、低レベルオーディオAPIで十分だよ。 楽なのはDelphiで¥・
>>981 JAVAを少し囓っていて
いまは必要に迫られてC#をはじめたところです。
C#ってBeep鳴らすのも面倒だと判ってこのような質問をしました。
>>983 FFT解析などをしたいと思っています。
DelphiってWin32APIを呼び出すのでしょうか?
それともDelphi独自のサウンドオブジェクトが用意されているのでしょうか?
¥・ ってなんでしょう?
>>984 確かに今のパソコンならJAVA/C#でもFFTかけるだけならリアルタイムに処理させるのは可能だけど
重いんじゃないかなあ
低レベルAPIってのはWin32APIの事だけど
自分はDelphiで低レベルAPIをラップして貼り付けてイベントに書くだけで
リアルタイム処理が出来るようにしてるよ。
たぶん探せばフリーのもあるんじゃないの?
>>985 ありがとうございました、調べてみます。(`・ω・´)