トップページ⇒tech
986コメント333KB

サウンドプログラミング

レス数が950を超えています。1000を超えると書き込みができなくなります。
0001デフォルトの名無しさんNGNG
アナログ音源やFM音源などのエミュレートや、
MODトラッカー,MIDIシーケンサの技術的な話題に関するスレ
0002デフォルトの名無しさんNGNG
http://www.buzz2.com/
0003デフォルトの名無しさんNGNG
VCO-VCF-VCA
0004デフォルトの名無しさんNGNG
スレ立てた奴がネタを出さないスレは、煽られるか廃れるだけ
他人に頼るだけの奴はスレ立てるな
0005デフォルトの名無しさんNGNG
ネタねーのかよ
sage
0006デフォルトの名無しさんNGNG
スレ立てたやつは自分の興味のある内容について
現状でも希望でもいいから書け
0007not 1NGNG
本出てるぞage
ttp://www.cactussoft.co.jp/books.htm
win限定なのは痛いが、まぁ仕方ない。

でもwinのAPIをunixの奴(read()/write())に比べると
なんでこんな面倒なんだ?とむかついてくる。

ソフト音源作ってみたいなあ。
テキトウにそれっぽく書いて(winで)やってみたら
全然処理が間に合わなかった(わら
まだまだスキル足りない模様。
unix用(語弊あり?)のオプソの奴のソースでも
じっくり読んでみるか…
#なんでウニかというと、上記のように出力の仕掛けが単純なので、
#いらんこと気にせず読めるはずだから。

>>3
TVO-TVF-TVA は労陸(LA音源)だっけ?
0008デフォルトの名無しさんNGNG
興味ありage
自分もFM音源(OPM)のエミュ作りたいと思ってたら、すでにあって消沈。
ttp://homepage1.nifty.com/mpuusan/x68sound/x68soundbody.htm
ソースも公開されてるし...

>>3
VCFのアルゴリズム知ってたら誰か教えて、できればレゾナンス付きのやつ
0009デフォルトの名無しさんNGNG
直流成分を除去するアルゴリズムを教えて下さい。
あるNESエミュのソースを見たのですが理解できません。
0010デフォルトの名無しさんNGNG
>>8
>VCF

この板でしかも「アルゴリズム」って質問の仕方だってことは
ソフト(デジタル)でやる話と思うが、
ならばFIRフィルタやIIRフィルタを使うんじゃないかやっぱり?

アナログのコンデンサ的フィルタと
デジタルのディレイ的フィルタじゃ
定数のかましかたが全然違うが、
そのへんは適宜行列計算かなんかで
相互変換すればいいんじゃないかと想像する。

そういえばアナログシンセの真髄は、デバイスの癖のせいで
(MOOGの)理論通りに音が出ない、という点に尽きる。
だから、馬鹿正直に理論を実装しただけじゃ
それこそLA音源並の音になる。
0011デフォルトの名無しさんNGNG
>>9
平均値を引けばいいだけ.
0012デフォルトの名無しさんNGNG
>>10 LAのSquareWaveは大好きだ・・・
0013デフォルトの名無しさんNGNG
オートワウやリングモジュレーターとか、
アナログエフェクターの回路図読める様な人ならエミュレートって
多分簡単なんだろうね。
(自分はハンダコデは使ったことはあるけど回路図読めない)

>>8
昔図書館で、「自作する電子楽器」みたいな本に
そういう回路図とかのってた気がするけど、
そういうのって役に立つのかな
0014デフォルトの名無しさんNGNG
>>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 と計算します
0015デフォルトの名無しさんNGNG
なお、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

となります。 
0016デフォルトの名無しさんNGNG
http://www.mirai.ne.jp/~mitsuman/mag/lab/digitalfilter.htm
> アナログフィルタのシミュレーション(?)とそのフィルタの特性を
> ラプラス変換で確かめます.
> またディジタルフィルタを作成し,z変換で特性を調べます.

ここにいろいろ書いてある。レゾナンスも。
0017>>14NGNG
この辺の情報に詳しい書籍やwebページない?
俺、大学行ってないから、どうしてこうなるのか知りたいんだけど
0018デフォルトの名無しさんNGNG
友情リンク

OggVorbisを使うスレ
http://piza2.2ch.net/test/read.cgi?bbs=tech&key=992580185
001914NGNG
>>17 俺も大学行ってないよ。
 とりあえず三角関数と複素数が判ってれば利用するのに支障無し
00208NGNG
>>14
ありがとう、2次IIRでいけるのね。
固定小数点で、16Mhz程度の組込用16bitCPUで出来ないかと考えてたけど
やっぱりSHクラスのCPUで浮動小数点DSPを使わなきゃ無理そうですね。
パラメータ変わったときの係数再計算も重そう。
最近はやりのバーチャルアナログシンセはどんなCPU使ってんだろう?

>>13
S(アナログ)からZ(デジタル)への変換って結構計算が重いと思います。
結構複雑な式だった記憶が...
精度良くかつ安直にやると次数も増加するんじゃないかな。
0021>>19NGNG
んー、利用するだけですか。
公式丸暗記はあまり好きじゃないので、
原理を知りたいのですが。

これ知らないと、自分でフィルタ作れないですしね
002214NGNG
あれ? >>14 の >>9 へのレスは間違いだ。
除去というのは取り出す事じゃなくて取り除くことだから LPFじゃなくてHPFだね

>>20
固定少数点だと、厳しいのは
w^2の項があって、wを可変するとたぶん可変範囲は8bit程度
必要だから処理は24bit程度でやらなければいけないからかな

係数の再計算はそれほど大変じゃない。tanだけあらかじめ
係数と、その差分をたテーブルにしとけばいいでしょ。
そんなに係数の更新は急ぐ訳じゃないし。


ところでクロック16MというとH8かM16C?
 という事はサンプリングは10K程度かな?
それなら出来ない範囲じゃないと思うけど
002314NGNG
なんか、キミの事がよく判らんが、こんなサイトはどうだ? >>21
ttp://www.signal.tutics.tut.ac.jp/~dspcai/mtanaka/filter.html
00248NGNG
>>14
今のところできたらいいな程度にしか考えてませんが、仕様は
AKI H8とかM16Cなどの5千円以下で手に入るCPUボードで外RAM,ROMなし
サンプリング20KHz、2VCO、EG&VCA、VCF(レゾナンス有り)構成のMIDIから
操作するバーチャルモノシンセってとこです。

係数更新の許容範囲は、数十msぐらいかなぁ。

やはりボトルネックはVCFと非同期のMIDIの受信割り込みかと思うけど。
20KHz=>800cycle@16Mhzだからどのみち、直感的な意見ですが
浮動小数点積和はスピードで厳しいでしょう。
とりあえずゆっくり頭を冷やして、全体の処理構成と各処理の重さを
検討して見ようかな。
002514NGNG
ああ、浮動小数点積和は厳しいな 固定少数点で計算した方がいいよ

非同期のMIDI受信はそう厳しくないよ31.25Kbpsだからしれてる。
M16CでCで素直に書いてもおいつく

VCFを作るのにこんな方法はどうだろ?

どうせVCOでサイン波ジェネレータは作るから、2相のサイン波が
出るようにしておく。つまり複素数でいえば e(-iwt)の信号ね
これを元信号と掛算すると周波数軸上でシフトした事になる
このシフトした状態(複素数)に1次のLPFを回転周波数に応じて
かける。これに2相のサイン波を再度掛算する。今度はe(jwt)ね
するとwの周波数のBPFが出来る

掛算は4回必要だけど2次のフィルターのように係数にシビア
じゃないし綺麗でしょ?
0026デフォルトの名無しさんNGNG
>>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がサンプリング)
だから係数更新し易い。
0027デフォルトの名無しさんNGNG
おしれーた
0028デフォルトの名無しさんNGNG
稲本がんばれ
0029デフォルトの名無しさんNGNG
小野もな
0030デフォルトの名無しさんNGNG
>>14
アナログのレゾナンス付LPFの伝達関数
H(s)=w^2/(s^2+(w/Q)*s+w^2)
に双一次変換の公式
s=(2/T)*(1-Z^-1)/(1+Z^-1) Tはサンプリング周期
を代入してみたけど
そんな簡単な式になりそうになかった。
どのような元式を使ったか教えてください。

>>25
それってエーリアスは問題にならないの?
またこの方法だとレゾナンスは無しでしょうか?

なんかプログラムじゃなくて数学色が強くなってきたね。
0031デフォルトの名無しさんNGNG
>>30
双一次変換した方は >>15
>>14 はいわゆる共振型
 wが大きくなるとアナログと外れて来るけど
低い周波数ではよく一致する。 周波数特性描かせて見たら判る


サイン波をかけ周波数シフトした上でフィルターをかける方法は
かけるフィルターがLPF以外だと折り畳みの問題がある

例えば 20Kサンプリングで 8KHzの音に3KHzのサイン波をかけたら
5KHzと11KHz 11KHzは折り返されて 9KHzの音と区別がつかない

ただ、2相でやってる事に注意。 複素数の場合、位相関係を
揃えればサンプリング20Kで20K迄表現出来る。
0032デフォルトの名無しさんNGNG
ちなみに双一次変換の分母は 係数を
 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が小さければ分母の効果だけでも十分というのが理屈
0033デフォルトの名無しさんNGNG
>>32
俺がいま言おうとしてたのに。
0034デフォルトの名無しさんNGNG
Zじゃなくて Z^(-1) じゃないのか?
003534NGNG
スマン >>14でそう書いてるな・・・・。
0036デフォルトの名無しさんNGNG
もーフィングとかもエミュれる?
0037デフォルトの名無しさんNGNG
>>36
Emuのあれですか?
そもそもあれが大雑把にいってどんな処理なのかが判りません私(T_T)
時間領域でグラフをMorphingやったって単に音声をMIXしただけにしかならない(藁)から、
周波数領域でグラフをMorphingするって感じでしょうか?
0038デフォルトの名無しさんNGNG
ここの人は何を読んで勉強したのでしょうか?
自分は数学は少しできますが、音声についてはまったく分かりません。
0039デフォルトの名無しさんNGNG
昔のアーケードで良く使われていたFM音源のOPMエミュは(重いけど)
あるみたいですが、DX7のエミュとかって無いでしょうか。
0040デフォルトの名無しさんNGNG
>>39
答えるかどうか、熟慮しています。15日までまってください。
0041デフォルトの名無しさんNGNG
>>40
期待される答え(^^;の人の行いはそれはそれで称えるに値する行いなんだけど、
それは別として、4OPと6OPって結局はOP数とパラメータが違うだけだよね。
なんで今まで無かったんだ?というのは、激しい不思議。
4OPな奴(おぷそのも有るよね)を改造してとりあえず6にした人とか
既にいないの?

ところで15って…終戦っすか?

>>38
漏れは関係ないが、それ方面な友人の挙動を見て推察するに、
たとえばトラ技なんかを愛読していたよ。
0042デフォルトの名無しさんNGNG
>>38
情報系の学校の授業とその教科書
アナログ領域は数学のフーリエ級数、デジタル領域はデジタル信号処理とか
DSPってタイトルがついてる本なら基礎理論はだいたい同じことが書いてある。
俺はあまり理解はしてませんがね。

あとDTMマガジンとか、インターフェース、
デザインウエーブの連載かな。

>>41
エミュ作るのに必要なチップの仕様書が手に入らないからでは?
OPMやOPLなら昔のパソコンの取説や解説書なんかに内部構成とか、
パラメータの計算式やテーブル値が載ってるけど、
DX7のやつって見たことない。

あと実は激重だからとか...
0043デフォルトの名無しさんNGNG
>42
1〜2年前ぐらいまでは重かったけど、
最近のPCなら余裕でしょ。
あと、YAMAHAがチップの仕様書を公開してるとは思えない。
有料で入手できるかもしれないですが
0044デフォルトの名無しさんNGNG
age
0045デフォルトの名無しさんNGNG
DX7IID
0046デフォルトの名無しさんNGNG
>>42
4OPのエミュって、仕様書読んで作ったんでしょうか?
てっきりパラメータ突っ込んで出力音をオシロやスペアナとかで
観察して挙動を見切ったのだと思ってたよ。

>>43
んだ。単なるサイン波(というかtable読み出し)なんだから、
フィルタでいろいろやる音源より軽い可能性も。

7のチップは出してないねえ。一番安いのはMU用プラグインボード?
楽器としてはTX802なんかが中古で一万くらいで有るけどさ(藁
なんでチップ出さなかったんだろ。面白かったのに。
0047デフォルトの名無しさんNGNG
>>46
たしかに書籍のデータは観測して書いてるかも。

ttp://www.yamaha.co.jp/product/lsi/prod/index.html
でも今では、これぐらいまで一般の人が見れるんだから、パソコンメーカには
同じ程度の資料があって取説を書いてるはず。
このような資料と実機測定あとパラメータいじりながらの耳ミミコピ、
プログラムスキルがあれば6OPだろうとエミュは作れると思います。

>>43
知人から聞いた話ですが昔、YAMAHAへFM音源ICの資料請求したがもらえなかったと。
いまでもそうじゃないかなぁ。
あと1年ぐらい前だったか海外のYAMAHAサイトに古いFMのカタログがあったらしいが
自分が見に行ったときはすでにリンク切れてました。
0048デフォルトの名無しさんNGNG
オシロスコープage
0049デフォルトの名無しさんNGNG
javaSoundAPI使ったプログラムない?
0050通りすがりの名無しさんNGNG
サウンドプログラミングスレですか。面白いですね。

さておき、いきなり質問で恐縮ですが、
WinAmp のプラグインについて質問があります。

WinAmp のプラグインに、
「レンダリング波形数とレンダリング先のバッファを指定すると
波形を吐き出してくれる。繰り返し実行すると、再生ポイントが
進んでいく。これらの機能は、プラグイン単体で動作できる。」
というような仕様の、波形レンダリング関数(または手段)は
用意されているでしょうか?
ざっと仕様をみたところでは、内部で再生スレッドを立ち上げたり、
WinAmp と連動したり、ややこしい作りになっているようで、
上記の関数は表には見えていない様でした。

WinAmp のプラグイン単体で再活用できれば、
世間に存在する多種多様のサウンドフォーマットの資産を、
ゲームの BGM など、WinAmp 上での再生以外の用途で活用できるのですが。
0051通りすがりの名無しさんNGNG
>>47
> でも今では、これぐらいまで一般の人が見れるんだから、

YAMAHA も随分とオープンになったもんですなぁ。
0052デフォルトの名無しさんNGNG
>>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らしいといえばそのとおり。

というわけで、実際に使った人の声聞きたい。
あの厳格なクラス構成をきっちり使ったのかどうかとか、ね。
0053デフォルトの名無しさんNGNG
>>50
本当に出来るなら面白いですね。
試しにソフト音源とかを作ってみるときに足回りとして転用できそう。

ところでVSTって、音源ソフト(プログインとか)を作る側から見て、なんなのでしょう?
ソフト作るための資料としてFREEなものは有りますか?APIとかの。
0054デフォルトの名無しさんNGNG
YM2203ならコミケでどっかのサークルが資料として載っけていたのを
見たな・・・

>>51
半導体を売っている会社でWebにデータシートが載せていない方がいまは
珍しいと思う。
0055デフォルトの名無しさんNGNG
>>53
steinbergのpageを見るべし。
developer登録すればSDKはダウンロードできる。
0056デフォルトの名無しさんNGNG
age
0057デフォルトの名無しさんNGNG
>>50
input plug-inのこと?
DSPならApollo等他のソフトでも使えるけど、
inputの方はwinampと連動してるから無理かなーってことか?
なんとかできんことはない気がするね。
0058デフォルトの名無しさんNGNG
ちょっと話は変わるんですが、
Cubaseのプラグインを作るために参考になるサイトとかってありますか?
0059デフォルトの名無しさんNGNG
ttp://www.interq.or.jp/jazz/kuniox/
0060デフォルトの名無しさんNGNG
WO=〜
めちゃめちゃありがとう>>59
0061デフォルトの名無しさん01/09/03 03:45ID:LXi6Pi92
22050Hzのwaveファイルを44100Hzにバッチ的に変換したいと
思っているんですが、自分でこういった処理を作る場合、
波形の2度書き(↓)以外になにかすることってあるんでしょうか。
22050Hz         44100Hz
_| ̄|_| ̄|_→__| ̄ ̄|__| ̄ ̄|__
考えられるのって曲線補完とかですかね?
参考になるサイトなどありましたら教えてください。
0062デフォルトの名無しさん01/09/03 07:48ID:3fY0oBq.
>>61
2次補間でもそれなりな結果になりますが
 本に載ってるより一般的な方法は、
 1)間をゼロで埋める
 2)前サンプリング周波数÷2より少し低い周波数で強力なLPFをかける

というものです
0063デフォルトの名無しさん01/09/03 08:06ID:zmFVSFBM
えっと、標準MIDIフォーマットの規格にはループないですけど、
規格外のループイベントではどんなのがあるでしょうか?

とりあえず、RPGツクール2000の
コントロールチェンジ111番だけ確認したです。
0064デフォルトの名無しさん01/09/03 12:12ID:ewvSMjxY
>>61

リサンプル?
マルチレートFIRフィルタ使ったら?

あるいは、変換後のサンプル位置から変換前のサンプル位置へ
マッピングして、その時小数座標になるから、シンク関数で補完する。
0065デフォルトの名無しさん01/09/03 12:23ID:XtwpCTmA
MAX/MSPあげ
00666401/09/03 12:23ID:ewvSMjxY
追記

Windowsなら、

ttp://www.intel.co.jp/jp/developer/vtune/perflibst/index.htm

にあるインテル信号処理ライブラリのマルチレートFIRフィルタ使うと楽。
nsp?FirLowpass_Proc()で、まず前サンプリングレート÷2のローパスフィルタを設計し
nsp?FirlInitMr()で初期化して、
nsp?Fir()に掛ける。

Windows以外だとそれ使えないから、その場合はこれ参考にするといい。
ソースコードつき。
ttp://www.geocities.co.jp/Technopolis/9674/ssrc/
0067デフォルトの名無しさん01/09/03 12:59ID:nCTaZ.02
>>66
インテル信号処理ライブラリって便利なのがあるんだね。
これは使わなきゃ損だ。

ところでこの場合、実際にFIRかけるとき、入力データは2個に1個は0だから
その辺は工夫しないと、演算が無駄に増えてしまうね。

>>64
シンク関数を使う場合はどうしたらいいの?
ハミング窓とかの窓関数をかけて範囲を有限にしてから演算すればいいのかな?
00686401/09/03 15:19ID: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フィルタ使った方がいいだろう。
0069デフォルトの名無しさん01/09/03 18:26ID: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)
たったこれだけの演算でよいわけね。これはメチャ速そうだ。
これでどれくらいの音質を確保できるんだろう?
実際に聞き比べた感じでは分からないレベルなのかな?
0070デフォルトの名無しさん01/09/03 19:19ID:nCTaZ.02
ところで便乗質問だけど、
>>62の2)の工程で使うLPFは直線位相特性を持つ必要があるので、
普通はFIRフィルタを使うと思うんだけど、
聞いたところによると直線位相特性を持つIIRフィルタもあるとか。
これってどんなの? このサンプリングレート変換処理に直線位相IIRフィルタって使えるんですか?
また直線位相IIRフィルタの欠点って何かありますか?
0071デフォルトの名無しさん01/09/03 20:59ID:56CCihG6
>>63
AnnexMIDIはスムーズな無限ループ・途中から繰り返すループが可能だ。
ゲーム向けの仕様なんだろな。
でもこれスタンダードMIDIフォーマットじゃないんだよね。
0072aruru01/09/03 21:46ID:.hT78Mno
SB Live!とかの音源をMIDIからではなくて、直接いじるようなイメージの
APIはあるんでしょうか?
MIDIと普通のサウンド出力以外の使い道があるなら活用したいんだけどな〜
00736101/09/03 22:15ID:U9hn1Usc
みなさんどうもです。
なんかやたら難しそうですね。
とりあえずは簡単そうなssrcを解析してみようと思います。
ありがとうございました。
0074デフォルトの名無しさん01/09/03 23:52ID:TwJ99J86
>61
前に同じようなことをやったんだけど、やってみるとサウンドカード側で
補間されていることが分かって愕然としたことがあるよ。
補間せずに44k化したものより、22kのwaveをそのまま再生したほうが
音質がよかったってことね。
なんで補間しても音質が変わらないのか最初分からなかった。
0075デフォルトの名無しさん01/09/04 12:00ID:DASKlEA.
>>74
単にD/Aの出力が結果的に線形補間に見えてるだけじゃなくて?
0076デフォルトの名無しさん01/09/04 15:16ID:rccG4HwI
>>74

補完しても音質はかわらんだろう。むしろ大抵下がるだろう。
そのまま22kで再生した方が音質が良かったのは、
つかったサンプルレートコンバータのエンジンより、
サウンドカード内蔵もしくはドライバレベルで用意されている
サンプルレートコンバータの方が精度が良かっただけ。
必ずしも良いとは限らんさ。特に安物サウンドカードだった日には、鬱氏だぞ。

>>70

漏れも興味ある。数学もしくは信号処理詳しい人の回答きぼーん。

>>74

ssrc解析するよりインテルの奴使うほうが簡単だよ。
漏れはssrcの解析はあきらめたクチ。
解析っつーか、SSE化をあきらめたんだけど。
0077デフォルトの名無しさん01/09/04 15:19ID:rccG4HwI
>>69

音質はかなり悪いと思われ。
ま、用途によって変わるだろうが。

その式は、音程を変えずに再生速度を上げるとか、
ビブラートとかのエフェクト中で使うために
ごくごく簡略化された計算だから。
そういう用途向けで無いとそれだとちと辛い。
0078デフォルトの名無しさんNGNG
関係無いけど、CASIO FZ-1(サンプラ)とかはサンプルの再生周波数36khz
だったけど、なんであんな中途半端な周波数だったんでしょう?
CDの存在する時代ですよね?
音は(当時にしては)結構良かったけど。
0079デフォルトの名無しさんNGNG
SC-88ProやSC-8850も36kHz出力ですぞ。
高音成分まったく出てこないので、めっちゃやな感じ。
プロユースにゃもっと高いヤツ買えって
Rolandの声が聞こえてきそうだ。
0080デフォルトの名無しさんNGNG
>>79
そりゃ初耳。
ありがとう
0081デフォルトの名無しさんNGNG
>>63
>えっと、標準MIDIフォーマットの規格にはループないですけど、
>規格外のループイベントではどんなのがあるでしょうか?

「規格外」ということは「標準」じゃないということなので、
好きなだけ作れば出現する(でもそれは既にSMFではない)、というだけのこと。

>とりあえず、RPGツクール2000の
>コントロールチェンジ111番だけ確認したです。

一生探し回ってください。原理的にその捜索の旅には終了は定義されていない。
今日もまたどっかのドキュが新たなフォーマットを…

CtrlChangeでループの指示ねえ。大昔のオープンリールテープで
低い音を感知したら反転するってのがあったそうだが、
パイプオルガンだと時折誤作動したそうだ(藁
あんまり特異なことをしても空しいぞ、という教訓だと思われ。

>>65
>MAX/MSPあげ

ついでにPureDataあげ
008281NGNG
>規格外のループイベント
変なフォーマットを陳列する博物館を作りたいのでもない限り、そんなものに関心示すのは無駄。
もともとSMFは(そういう用途には)効率悪いんで、
使いやすいフォーマットを別途自作する方向で考えたほうが実りが多いぞ。
0083デフォルトの名無しさんNGNG
After Touch でループの会社もあったよ・・・
>そんなものに関心示すのは無駄。
そゆことなのでsage
008463NGNG
>>81-83
あー、そういうことは百も承知しとるっすよ。
なんか他にもとんでもねーものが一部で普及しとるんちゃうかと
興味本位で訊いただけなのに。しく。鬱。
0085デフォルトの名無しさんNGNG
まあまあ。
0086デフォルトの名無しさんNGNG
>>84
一部で普及というか、ある閉じた環境でなら通用する方法なら、
多分沢山あると思いますよ。閉じてんだから、その環境で通用
すれば何やっても良いわけですし。

私が知っているものでもControlChangeの組(始点と終点)で
ループを表現しています。実際にはそのCCを付けた元データを
変換して最終的なデータ(似非SMF)にするわけですが。
0087 NGNG
このスレまじでためになるからあげ!
008883NGNG
>84
泣かせちった。ゴメン。
興味本位って事ならそうだなー、
ドリームキャストっていくつかのMIDIを組み合わせて、
イントロやループ部を構成する上部構造のシーケンスがあったような。
0089デフォルトの名無しさんNGNG
age
0090デフォルトの名無しさんNGNG
>>88
ラッパーを被せてそれによって機能拡張する、というならば
全然反則じゃないと思われ。
単にそれ自体をSMFと名乗らせるのが詐欺なだけ。

>>86
CCを埋めるというお約束を使ったSMFというなら、一応Standardだな。
ただ、効果は世間一般に保証されるわけじゃないだけで。
使いそうもない鍵盤の端っこに、Start/Stopとかの機能を割り当てて
リモコンできるシーケンサ、とかと同じレベル。

それならば許せるが、未定義イベントなんか作った(使った)ら、市なす!
少なくともStandardじゃない。
009183NGNG
>90
いや、SMFとは言ってなかったよ。たしかその時点で、
aiffとかと一緒にしてpackになってたと思う。(うろおぼえ)
SMF or Not を気にする人って
シーケンサを作ったりしてる人なの?
0092デフォルトの名無しさんNGNG
>>59
WinでBorand C++Builderでコンパイルする方法の情報は存じありませんでしょうか?

サンプルのADelayをmakeしようとADelay.dspから必要なファイルを読み取り、
それらをすべてプロジェクトに登録して、ADelay.DLLまで出来たんですが...
VSTのフォルダーに突っ込んでもCubaseVST32が認識してくれませんでした。
0093デフォルトの名無しさんNGNG
age
だれかやってるだろうからgoogleで英語で検索してみたら?
009492NGNG
>>93
それぐらいはすでに実行済みです。
意外な程、VSTiのプログラムまで手を出してる人は少ないみたい。
ソースの中に、CBUILDERの条件マクロがあるし、MFCとか使ってないから
やる方法はあるんだろうと踏んでるんですが。
素直にVisualC++を手に入れろってことかなぁ...
ちなみにDLLのことはほとんど解らないです。
0095=94NGNG
>>93
失礼!!英語ですね。
今やったら引っかかりました。
どうもありがとう。
#ばかだな俺。
0096デフォルトの名無しさんNGNG
フリープログラマーなんですが
この手のノウハウを武器に、個人で商売するのってやっぱ
むずいかなー。
みなさん、かなり詳しいようですが、何か仕事にいかしていますか?
それとも趣味ですか?

こんなにサウンドプログラマーな人がいるってびっくり。
画像系の会社だと、サウンドっていうと「再生、停止」の概念
要するに、鳴ればそれでいい
くらいの認識だもんね
0097DB02NGNG
シンセを作る会社にいるならともかく、一般にわからせること自体が
難しいよな。
理解がなければ、絶対わかってもらえそうにないし。
0098デフォルトの名無しさんNGNG
むしろ波形の知識を生かして測定機メーカーに行くのはどうか。
なに、周波数の桁が2つ3つ上がるだけだ(w
0099デフォルトの名無しさんNGNG
他の所にも書いたのですが、質問させて下さい。
普通のCDや音楽データをDJmixのように、段々盛り上げていくような
曲順に勝手にしてくれるようなプログラミングが
(理想としては)作りたいと思うのですが何を勉強したらよいでしょうか。
単にBPM速い曲と遅い曲に分けるだけでもいいです。
当方何も知りません。とりあえずCとjavaぐらいです。Windows使ってます。
C++とMIDIプログラミングについて勉強しようかと思ってはいますが
それで方向性正しいのかもわかりません。
本も1冊ぐらいしか見つからない&サウンドプログラミングについて
詳しく説明しているHPもあまり無い感じだったので聞いてみました。
もしそういうHPがあったらそれも教えていただけるとうれしいです。
っていうかこの考えは実現できますか?
またはとっくに実現されてますか?
質問自体が馬鹿ですか?
本当に何も知りません。よろしくお願いします。
0100デフォルトの名無しさんNGNG
ACIDとかあーいう奴でしょー?
違うかな。生成じゃないのか。


とりもあえず、MIDIよりPCMの方が楽だと思う。
010199NGNG
ACIDっていうのは作曲ソフトですか?
よく分かりませんが、要するにCDプレーヤーのランダム再生機能を、
例えばゆっくりした曲から激しい曲になるような、
ある意図に基づいたランダム再生(?)をしたいので
作曲とかではない感じですが、取り敢えずこういうものは制作可能なんでしょうか?
ともかくPCMについても調べます。ありがとうございます。
0102デフォルトの名無しさんNGNG
>>99 BPMを調べるのはWinampのプラグインで実現されてた
ような気がする。で、今調べてみた。
http://www.winamp.com/plugins/detail.jhtml?componentId=6564
0103197NGNG
>>99

MIDIなら元々BPMが埋め込まれているし、
その他のPCMに出来る形式なら、>>102の言ってる奴のように
推測することができる場合もある。
PopsとかRockなら、フーリエ変換でもして、低域のゲインの推移を追って、
ある程度の間隔の規則性を持って変化するはずだから、それから推測が可能。
クラシックとかは難しいんぢゃないのかなぁ。
とりあえず、プログラミング自体あまり詳しくないのなら、道は遠いとおもう。
010499NGNG
>>102-103
レスありがとうございます。大変参考になります。

うーん、遠いですか、C,javaぐらいじゃ駄目ってことっすよね。
どのくらい遠いんでしょうか…むう。
まあ逆に考えればちょっと詳しくなれば近くなるのかなと、
とりあえずクラシックは無視してもいいかなと、
微妙に勉強してみます。
0105103NGNG
>>104
とりあえず、フーリエ変換か、ウェーブレット変換を調べてみ。
ポリフェーズフィルタとか、FIRフィルタでもいいや。
その辺の周波数軸で扱える理論が理解できるようなら、道は近いと思われ。

まずは、いちばん簡単で高速なので、フーリエ変換をお勧め。
つーかもっとも基本(?)だし。
0106104NGNG
>>105
おおーっ。ありがとうございます!
「一応」大学生なのでフーリエ変換は習ったような習ってないような・・・アハ。
勉強し直します〜〜。
0107名無しさんNGNG
さっぱりわからないですけど、とりあえず興味あるので応援age
0108デフォルトの名無しさんNGNG
どうせMIDIの話かと思ったら、結構まじめにDSPの話題じゃん。
0109103NGNG
>>106

大学でやったのは、一般的なフーリエ変換だと思われ。
漏れが言っているフーリエ変換は、その大学でならったフーリエ変換のうち、
特殊な事例である離散フーリエ変換のことだよ。
調べるのなら、一応キーワードは『離散 & フーリエ変換』にしといた方が、
作るだけなら早いかも。
ま、一応一般的なフーリエ変換の概要は知っておいた方が、
のちのち役に立つと思うけど。
0110デフォルトの名無しさんNGNG
サイン波合成だけで、任意のパルス幅のパルス波はどうつくればいいんでしょうか?
方形波:f(t) = 馬=1->∞ (4r/π)(2n-1)sin((2n-1)ωt)
って基本式だと、パルス幅は波長の50%ですよね。。。これを
10%とか40%とかにするには、どんな方法あるんでしょうか?
ちょと、数学ネタにちかいけど、現在ソフトシンセつくってます。
VCOの難関はあとは、パルスワイズモジュレーションだけなんだけどな。。。
どなたかよろしくおねがいします。
0111デフォルトの名無しさんNGNG
>>110
厳密には無限まで足しあわせてはじめて方形波になるわけだから
やっぱさ、合成じゃなくて
if(t<0.4) r=1.0;
else r=-1.0;
(ただしtは[0,1]でループ)

ってやれば?
0112デフォルトの名無しさんNGNG
>111
その方法だと、無限に高次倍音をふくむので、エイリアスノイズ(だとおもう)が発生するんです。
特に、サンプリング周波数44.1KHzで、1KHz以上を再生すると「ピー」とか「ジー」とか
基本周波数とは全然関係ない成分が目だって、聴くに耐えないんですよ。
(シンセサイザと名乗る以上は、これは問題と思ってます。)
2通りの解決策をかんがえてるんです。

策)再生波形そのものを、ナイキスト周波数以上の倍音を含まないように
合成する。つまり、適当な次数まで足しあわせて終わらせます。高い周波数になれば
なるほどサイン波に近づくわけです。

この方法でノイズが消えるのは実験済みなので、あとは、
パルス幅可変にして、合成できれば、ばっちりかと、思ってるんです。
が、、、、いかがでしょう。
0113デフォルトの名無しさんNGNG
俺音楽にもちょっと才能あんだ
どうせ波だからゆくゆくはやるつもり。
0114Delあめ猫にゃNGNG
>>112 理論的にはそれでいいにゃ

パルス幅を可変にする方法は 方形波じゃなくて
帯域制限されたパルス波を基本にして、
 プラスのパルスとマイナスのパルスを積分すればいいにゃ
0115デフォルトの名無しさんNGNG
>>111 にフィルタをかけて20kHz以上の周波数をそぎ落とすという方法はどう?
0116114NGNG
>>115 オーバーサンプリングする必要があるよ
0117デフォルトの名無しさんNGNG
>114
ありがとうございます
しかし、まず、プラスとマイナスのパルス作ろうとしたら、うまくいかないです。
パルスって、どうやってつくるんだろ。
てっきり、基音の全整数倍音を同じ大きさで含むものがパルスだとおもって、
サイン足しあわしたら、こんな感じ、
_|___|___|___|___
 |   |   |   |

で、脳波やんけこれ、プラスもマイナスもなくなってしもた。。。
なんか、まちがってるんでしょうか?
うーむ。
0118デフォルトの名無しさんNGNG
>>117
すんまそん。
絵が乱れてる。。。
―╂─―╂─―╂─―╂─
こんな感じ。に訂正
0119114NGNG
もしかして sinを重ねたんじゃ? パルスは偶関数だからcosを重ねないと


それから、無理にスパッと切らなくても 1/exp(x^2) みたいなので我慢するとか
これのフーリエ変換は√π*exp(w^2/4)になるから
0120114NGNG
×√π*exp(w^2/4)
○√π/exp(w^2/4)
0121デフォルトの名無しさんNGNG
おーーー、パルス幅かわりました!
あめ猫さんのいうとおり、上パルスと、下パルスの位相ずらして、
たして、積分したら、幅かわりました。むひひ
みんさんありがとう!!
119>
COSでいけました。
なるほど、1/exp(x^2) でもそれっぽくなりますね、

>115,116
どしても、だめなら、その策を考えてました。

実は、昨日この掲示板をはじめて知って、質問したんですが、
みなさん、高度なスキルをお持ちですね。
この掲示板だけじゃ、もったいないなー。
メーリングリストとかで、情報共有できると、いいのになー
0122デフォルトの名無しさんNGNG
121に自己フォロー
結局、上向きののこぎり波と、下向きのノコギリ波とカメハメ波に0
を乗算したものをずらして足せば任意のパルス波が
得られちゃうのでした。。。うーん、単純。すっきり。
パルス波って積分すると、ノコギリ波になるのでした。
0123デフォルトの名無しさんNGNG
DXiとか作れる人います?
0124デフォルトの名無しさんNGNG
DXi、まだ作ったことないけど、DXi対応にしようとおもってます。
VSTiでもいいけど。これも経験無し。
全然調査してないけど、、、特定のエキスポート関数を持ったDLL作る
ようなもんじゃないのかな?難しいのですか?
いいサンプル、資料あります?
0125デフォルトの名無しさんNGNG
非常にいいスレありがとう
0126デフォルトの名無しさんNGNG
>>86
PSのライブラリで使える SEQ フォーマットがもろそれ系ですな。
0127106NGNG
>>109
ありがとごじゃります〜〜〜♪
ガムバリます。
0128デフォルトの名無しさんNGNG
>>124
自分も2chのどっかの掲示板で知ったんだけど

VSTiのSDKサンプル付
ttp://www.steinberg.net/developers/VST2SDKLicence.phtml

DXiのSDK同じくサンプル有
ttp://www.directxfiles.com/developers.htm

どっちも落としたけど、自分のコンパイラがC++Builderのため、
VSTiはサンプルはコンパイルできたけどCubase(DEMO版だけど)で認識できず、
DXiにいたっては、WizardがVC++Ver6専用、サンプルもMFC使用していて
使い物になりませんでした。;_;
素直にVC++買ったほうがいいのかなぁ...
0129デフォルトの名無しさんNGNG
DXi作ろうとしてる人同士で情報交換しませんか?
DXiのサンプルコンパイルしたんですが
COMを使ってるので、レジストリに登録しなきゃならないとかで
上手くできません
ちなみに、まだ英語の説明書を読んでません
0130デフォルトの名無しさんNGNG
>128
ありがとうございます。
DXiサンプル、早速ダウンして、ながめていじくりたおしてみました。
MFCですな〜。BorlandC用に作り変えますか?難しいのかな?

>129
情報交換いいですね。
ちなみに、
レジストリへの登録は、VC使っていれば、ビルドの最終フェーズで行われて
いますよ。ちなみに、SONARできちんと、発音されるところまで動作確認でき
ました。

情報交換、どっかにMLつくりますよ。
作ったら、ここにアドレス書きますね。
01311NGNG
正直、こんなにスレが成長してるとは
思いませんでした。
0132128NGNG
思い出した,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の方が、サンプルがシンプルで、インタフェースも簡単だから
理解しやすかったです。

とにかくお二人ともがんばってください。
0133129NGNG
ちょっと用事があって、時間空けちゃいました
申し訳ないです
人数少なさそうですが、情報交換しましょう

>レジストリへの登録は、VC使っていれば、ビルドの最終フェーズで行われて
>いますよ。
え、そうなんですか?
さっそくリビルドしてみました
(ビルドじゃ駄目なんですね)
で
\Debug\Tonar.dll
1 個のファイルをコピーしました
指定されたパスが見つかりません。
0 個のファイルをコピーしました。
c:\winnt\system32\cmd.exe の実行エラー

Tonar.dll - エラー 1、警告 0
なんてのがでちゃいました
で、バッチビルドでクリーンしてからリビルドしたらできました

ttp://isweb37.infoseek.co.jp/art/dtmp/
ここに掲示板を作るので、ここで情報交換しませんか?
0134デフォルトの名無しさんNGNG
>133
私もfreeml.comに、音楽プログラミングMLつくってしまった。。。
そのうち、公開されるので、そのときはよろしく。
とりあえず、そっちいきますよ。
0135133NGNG
>>134
どうもです
相当がんばらないと、情報交換じゃなくて
情報もらうだけになっちゃいますね、私は・・・
土日でがんばってみます

MLはぜひ参加させてくださいね
0136デフォルトの名無しさんNGNG
おれもcubaseのプラグインを作ってみたいなぁ
0137音楽プログラミングMLNGNG
>130
ということで下記に「音楽プログラミング」MLつくりました。

http://www.freeml.com/cat/entertainment/music/desktop_music/

#MLプロバイダにDTMのコーナにされてしまいました。。。しくしく

ここで、扱っているような話題は大歓迎なので、
興味があれば、ご参加ください。

とりあえず、DXiの開発情報流しています。
>136
VSTプラグインにも対応予定なので、ぜひ。

よろしく。
0138音楽プログラミングMLNGNG
>137
せっかく公開されたと思ったら。。。なぜか、MLが表示されなくなってる。。。
うーむ。。。
公開されたら、また書きます。
0139デフォルトの名無しさんNGNG
http://www.freeml.com/ml_info.php?ml=musicpg

これか?
0140DTM板出身NGNG
http://pc.2ch.net/test/read.cgi/dtm/1004170691/
のサウンド機能だけのやつあれば欲しいDTM板の人間いると思うよ
0141音楽プログラミングMLNGNG
やっと、ちゃんと、公開されました(と願う)。
http://www.freeml.com/ml_info.php?ml=musicpg
興味あれば、是非ご参加ください。
情報共有していきましょう。
0142DTM板住人NGNG
>>79S
>SC-88ProやSC-8850も36kHz出力ですぞ。
32kHzです。sageておきます。
0143128NGNG
自己レス
>どっちも落としたけど、自分のコンパイラがC++Builderのため、
>VSTiはサンプルはコンパイルできたけどCubase(DEMO版だけど)で認識できず、

steinbergのメーリングリスト過去ログ読みまくったら対処法があり、
無事認識できました。
っうか、SDK直しておいておいておくれ>steinberg ;_;
0144デフォルトの名無しさんNGNG
1つ質問があります。
回路図で見ると,アンプ等で良く入力と出力にコンデンサが直列に繋がって
いるのを見かけるですが,あれは一体どの様な効果がある物なのでしょうか?

また,プログラムで動作をリアルタイムにシミュレーション(?)する場合,
一体どの様な感じになるのでしょう…。

詳しい方がいらっしゃれば,ご教授頂けたら幸いです。
0145デフォルトの名無しさんNGNG
>>144
オーバーシュート/アンダーシュートを軽減。
0146デフォルトの名無しさんNGNG
>>145
カップリングコンデンサのことじゃないの?

>>144
AMP ICの出力端子と出力ジャックの間に入ってる
コンデンサだとしたらそれは直流成分カットのためです。

回路のことは工学板の方が的確に答えかえってくると思います。

>また,プログラムで動作をリアルタイムにシミュレーション(?)する場合,
アンプの動作でしょうか?それともプログラムの動作?
0147デフォルトの名無しさんNGNG
>回路図で見ると,アンプ等で良く入力と出力にコンデンサが直列に繋がって
コンデンサをつけて、実際の回路を補整しているのではないでしょうか?
つまり
コンデンサの容量分だけ、立ち上がりが遅れると言う意味ではないでしょうか?
0148146NGNG
>>146さん
そうです。そのコンデンサの事です。

プログラム的にそのカップリングコンデンサ(ですか?)をリアルタイムにシミュ
レーションする場合の事です。

直流成分カットに付いては最初の方で誰かが聞いていましたが,全部のデータ
がある場合であれば直流成分カットは平均値を引くだけで良さそうなのですが,
PCMの様なデータを1サンプルずつ順次入力していった様な場合にはどういう
プログラムをして良いのかが良く分からないのです。
0149144NGNG
すみません。↑の名前は144です。
0150Delあめ猫にゃNGNG
カップリングコンデンサは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には倍長計算が普通必要です)
0151Delあめ猫にゃNGNG
×-(1-f0/fs )
○ -2π*f0/fs
0152Delあめ猫にゃNGNG
×bは負数で小さな値 サンプリング周波数をfsとしたら およそ -(1-f0/fs ) f0は10以下
○bは小さな値 サンプリング周波数をfsとしたら およそ f0/fs f0は10以下

×M1:=M1-y
○M1:=M1+y

・・・・何書いてたんだろ・・・鬱
0153デフォルトの名無しさんNGNG
>>150
最終出力手段が、ラインOUTとかの音声なら、件のカップリングコンデンサが働くから
何も考えなくても問題ない気がしますが、それでは計算時のオーバーフローとかの問題で
だめなんでしょうか?

あと出力をオシロのような画面にしたいんだったら、初期値を画面の中心として
それからの単純な差分で点を打っていくだけでそれっぽく見えると思う。
#Offsetは見る人に調整させるとして。
0154デフォルトの名無しさんNGNG
以前パルス幅変調について質問した者です。
その節は、ありがとう。
なんとかソフトシンセ(DXi版)のベータ公開できたので、ご報告まで。
http://www.geocities.co.jp/SiliconValley-SanJose/5005/
0155144NGNG
>Delあめ猫にゃさん
詳しく有難うございます。ちょっと見ただけでは理解できてないのでそれを元に
色々試してみます(^^;

>153さん
PCM出力である音源をエミュレーションしていて,元のデータが小さくて何倍かに
しているのですが,時々大きな波形変化をする事があるのです。

具体的な感じですと,16bitPCMで半分くらいデータが大きく変化してしまう事が
あり,これをPCのスピーカーなどで聞くと,”ブツ”と言う大きな音が鳴ってし
まうのです。

実機ではそういうことが無いので,何故そうなるのかなぁと言うのが,例のコン
デンサの効果なのか?と言うのが疑問だったのです。
0156Delあめ猫にゃNGNG
>>155 整数(固定少数点)で計算してない? 計算のどっかでオーバーフローしてる可能性大きいよ。

 ゲインが無い筈の単純な2次のフィルターでも 数式通りだとオーバーフローしてしまう
0157144NGNG
>Delあめ猫にゃさん
先の方法で試しました。HPFが掛かり,確かにDC成分が除去されるのは確認出来ました。

オーバーフロー等はチェックしています。また,PCMでやっているのでビット数の最大最小
でのクリップも行っています。

教えてもらった方法ですと,一旦大きな値が入力された時は,大きな値から段々と下がって
行きますよね。

で,一旦大きな値が入力された時の大きな値をどうやって無くせるかが今の所の課題です。
0158153NGNG
>>155
>PCM出力である音源をエミュレーションしていて,元のデータが小さくて何倍かに
>しているのですが,時々大きな波形変化をする事があるのです。

カップリング以外の別の部分がエミュレーションしきれてないような気がします。
実機で”ブッ”とまではいかなくても大きな振幅変化はあるのでしょうか?
あるのならアンプは電源以上の電圧へは振幅できず、飽和したりするので、
その辺かなと思います。
実機があるのでしたら回路の各点の電圧波形をオシロスコープで確認し
比較できると楽かと思いますが、そこらへんにあるもんじゃないから無理ですよね。
0159144NGNG
>>158
流石にオシロは無いです…(^^;
0160デフォルトの名無しさんNGNG
 FFT表示プログラム作ったら非常に低い周波数でけっこう大きい信号が
 なんだろと調べたら、FFTの実行周期毎にCPUの消費電流が増えるせいだった
 ヘッドホン無音で大音量にして実際に音が出てるのを確認
 サウンドボードはカタログS/N良くてもダメだな
 IDE上をマウス動かすとブリブリ音するのも発見。
 マザー内臓のも、手持ちの2枚も同じ症状

と判ってONKYO-USBサウンドボード買ったら不定期にブチ音が入る
win2000との相性かなあ・・・鬱
0161 NGNG
>>160
サウンドボードを鉛板でカバーしてみれば?
0162デフォルトの名無しさんNGNG
アルミホイルにラップを撒いてそれで遮蔽してもOK
0163デフォルトの名無しさんNGNG
>>160
マウス移動ノイズありますね。
私の環境だと、Win2000の時はマウス移動ノイズがはいるんだけど、
Win98の時はなぜか入らんのです。ちなみに、3000円程度のPCIサウンドカード。
ドライバのできで、ノイズの乗りかたが変わるってどういうことだろう。。。謎。
マウスノイズの発生源は、ドライバ事態のチョンボってことかな。
0164デフォルトの名無しさんNGNG
っつーか、CPU-FAN、HDD、電源、全部ノイズのります。(50〜100Hzくらい
しかも、PCIバスから直接。
アルミでくるんでも、ショートするのがオチだと思われ。
0165デフォルトの名無しさんNGNG
age
0166デフォルトの名無しさんNGNG
音ということで便乗なんですが、
人間の声を簡単な演算でできるだけ小さなファイルサイズで録音するにはどうしたらよいのでしょうか。
音質は言葉の聞き取りが出来る程度でかまいません。
イメージ的には昔の”サンダーフォース”的な音質でもいいとおもいます。
漠然とした目標なんですが、信号強度の分解能を8bit以下、サンプリング周波数は3k以下としたいとおもいます。
0167デフォルトの名無しさんNGNG
>>166
じゃあそうすれば?
0168デフォルトの名無しさんNGNG
簡単な演算ではないけど、人間の声なら携帯電話やVoIPに使われてる圧縮方法がいちばんでしょう
ITT 携帯電話 VoIP で検索してみて下さい
0169デフォルトの名無しさんNGNG
>>166
PWM音源とか調べてみたら
0170デフォルトの名無しさんNGNG
PCM 8bit*3Kサンプリング/s は厳しい 。
4bitADPCM*6K/s ならなんとか
0171_NGNG
サンプリング定理にはずれないようにね。
0172デフォルトの名無しさんNGNG
>>166
gogo.dllでも使ってmp3にすれば?
0173デフォルトの名無しさんNGNG
スペアナ作ってるんですが、波形表示する際のdB変換で困ってます。
各周波数帯の振幅をdBに変換する際はどうすればよいのでしょうか。
0174デフォルトの名無しさんNGNG
>>173 周波数分析は フィルタ? FFT?

 どちらにしてもlog10(結果の2乗和)*10
0175173NGNG
FFTで行っています。波形から求めるならば振幅が最大のとき
0dBとなればいいというのは分かるのですが、FFT結果から
求める場合にはどうするのでしょうか。
0176デフォルトの名無しさんNGNG
FFTは実数ペアを複素数においてする方法でやってるよね?
 それぞれ複素数で得られるから そこらへんは大丈夫?

 それから 2^n のFFTだと全体に何倍になってるかも判ってるよね?
 拾ってきたFFTルーチンだと あらかじめ割られているかもしれないけど

0dBをどこにおくかはそんなに大事じゃないと思う
16bitの符号付数だとすれば、 2^15 が最大振幅だから
log10( (2^15)^2 )*10 を引いてやる方法もあるし

 フル振幅のサイン波を 0dBと考えて
log10( ((2^15)^2)/2 )*10

 とする方法もあるよ

 他の良く使うソフトと比べて同じになるように調整すればいいんじゃないの
0177173NGNG
手捨てす。
0178173NGNG
FFTは自前で実装してます。
でも実数をペアにするんじゃなくて、虚数部はゼロにしてます・・・。

とりあえず4096点でやってますが、いろいろ考え直してまたきます。
0179デフォルトの名無しさんNGNG
FFTについてはこの板なら
 最速の素数判定アルゴリズム 
http://pc.2ch.net/test/read.cgi/tech/993457354/

が参考になるよ 203 付近で実数のペアのFFTの解説がある
これを使って L/R同時に処理すればいい

ところで窓関数は何使ってる? 窓関数のゲイン分を忘れてるってオチじゃないの?
0180173NGNG
レクタンギュラー、ハニング、ハミングを切り替えられるように
なっています。ゲイン分ってことは、窓関数で圧縮される分を
考慮して、FFT結果(絶対値)の最大値を求めるという
ことでしょうか?
0181デフォルトの名無しさんNGNG
いや、
絶対値じゃなくて log10(実数部^2 + 虚数部^2)*10
横軸が対数の場合は 帯域分2乗和平均するかピークを求める

窓関数のゲインてのは
ハニングの 0.5-0.5cos(2πn/L) という式を使ってたら 2倍しないといけないとかそういう意味
0182デフォルトの名無しさんNGNG
はじめまして、質問です。
MIDIシーケンサなんですけど…

曲の途中から再生をしたいときって
リバーブ、エクスプレッション、システムエクスクルーシブなどの値が
曲の場所によって変わるので
曲の最初からノートON、OFF以外を一気に送らないといけないんですけど

この方法ってヤバイですよね…

なんかイイ方法あります?
0183デフォルトの名無しさんNGNG
>>182
直前との差分持っておけば?
あと、重複するイベントは最後のだけ送る。
0184182NGNG
>>183
直前との差分っていうのはどういうことですか?

PS.すいません、作ってるのシーケンサじゃなくてプレイヤ−でした、書き間違え。
0185182NGNG
取りあえずステートチェンジイベントをすべて把握しておかないと
いけないって事になるんですが、

GMならたかが知れてるんですが。
XG、GSとなるとかなりの量になりそうです。

すべてステートチェンジイベントを調べる必要はありますか?
0186183NGNG
>>184
プレイヤーでも同じ事。
めんどいのでくわしく説明しないけど、
「直前」てのは再生前の状態の事。
いきなり途中から再生するんだったら、
曲の最初から、その途中までの情報。
いきなり最初からのイベントを垂れ流したんじゃ、
長い曲の場合いつまでたっても始まらないでしょ。
0187デフォルトの名無しさんNGNG
だから重複するイベントは最後のを残して全部削除する。
ステートチェンジをすべて追う必要はない。
0188182NGNG
>>186
なるほど、そう言うことですか。ありがとうございます。
でやはり
すべてステートチェンジイベントを調べる必要があるのでしょうか?
GS,XG規格など含めて。
0189182NGNG
>すべてステートチェンジイベント
すべてのステートの間違いでした。
0190デフォルトの名無しさんNGNG
ランダムアクセス性を保ちたいなら、何小節か、何秒か毎に
その時の状態を持っておく。
0191デフォルトの名無しさんNGNG
>>188
音源の音色の状態が変化する可能性のあるやつは
すべて持っておく必要があると思うよ。
0192182NGNG
>>190
ありがとうございます。
っていうことは>>188でも書いたように
GM,GS,XG規格すべてのステートをやはり調べ挙げる必要があるのですか?
どうなんでしょう?
0193182NGNG
>すべて持っておく必要があると思うよ
やはりもっておくべきなんですね。ありがとうございます。
>GM,GS,XG規格すべてのステート
これらは調べ上げるぐらいの量なのでしょうか?
GMであれだけ多いとしたらかなりの量になりそうですが…?
0194182NGNG
>調べ上げるぐらいの量
「調べ挙げることが出来る量」のまちがいでした。
0195デフォルトの名無しさんNGNG
>>192
そんなに調べたりする必要があるんだっけ。
初めから全部把握しなくてもいいんじゃない?
GS/XGで使いそうなヘッダとか
エクスクルーシブメッセージとか、
知らないやつはとりあえずナニも考えずに送っちゃって、
パフォーマンスが問題になるんならジョジョに対応して
いけばいいんじゃないかなあ、と思う。ああIMEがヘンだ
0196182NGNG
>知らないやつはとりあえずナニも考えずに送っちゃって
途中から再生するためには送るだけでなく保持しておく必要が
あるとおもうんですが?

で、保持するためにはステートすべて把握する必要があると思うんですが
間違ってたら指摘お願いします。
0197デフォルトの名無しさんNGNG
>>196
だから、知らないイベントはなにも考えずに保持する、
って事なんだけど。把握する必要あるの?
0198デフォルトの名無しさんNGNG
もっと楽になる様に考えた方がいいよ。
送信するデータ量なんてたかが知れてるんだから。
0199182NGNG
>知らないイベントはなにも考えずに保持する
知らないイベントに対して
どこがステータス識別部(ID)でどこがパラメータ部(数値)かがわからない
ってことはないですか?
0200182NGNG
>もっと楽になる様に考えた方がいいよ
というわけでここに質問しにきました。
0201DTM板から出張@名無しさんNGNG
フリーのソフトウェアMTRて無い?

出来ればかなり実用できるレベルの、
それが無ければ、VC++のオープンソースで
実用レベル満たしていないの無い?(その方が無いか
0202デフォルトの名無しさんNGNG
>>201
買った方が早い。
(しまった、禁句だったか)
0203182NGNG
>送信するデータ量なんてたかが知れてるんだから
しかし曲によっては同一ステートの連続変化とかがあると
(たとえば100個連続)
とかあると死にません?
0204デフォルトの名無しさんNGNG
>>199
仮にIDとVALUEがあって、IDだけで識別してるなら、
知ってるIDだけそれなりに処理して、あとはそのまま
記録するって方法じゃ駄目なの?
処理としては簡単そうだけど。
0205デフォルトの名無しさんNGNG
>>203
だから一度試してみて、パフォーマンスが問題になったら、
その都度処理するIDを追加していけば?って事なんだけど。

>しかし曲によっては同一ステートの連続変化とかがあると
だからそういうのに対しては最後の状態だけ持っておけば?
って言ってるじゃん。
0206デフォルトの名無しさんNGNG
>あとはそのまま記録するって方法じゃ駄目なの?
これが一番よさそうですね。

ただ知らないIDのステートチェンジが連続で出てくることがあったら
すべて出力することになりそうなので
やばそうです。割り込みルーチン内で長く処理をとめることになりそうで。
0207208=206NGNG
>最後の状態だけ持っておけば
だから状態を持っておくためにはステートIDを
理解してないとだめです。
0208186NGNG
206と207名前間違えです…スマソ。自分です。
0209デフォルトの名無しさんNGNG
>>206
>やばそうです。割り込みルーチン内で長く処理をとめることになりそうで。
適当なタイミングとって送ればいいんじゃない?
0210186NGNG
>適当なタイミングとって
割り込みルーチン以外で書く
ってことですか?
0211デフォルトの名無しさんNGNG
たとえばMIDI信号で1秒間に送れるバイト数とかを概算でいいから
見積もっておいて、デルタタイム0の連続データに対しては前倒し
で送ってしまうとか。
0212186NGNG
>>211
つまり割り込みルーチンで処理する「重み」を
2、3回に分けるってことですか?

それだと根本的解決にならなくないですか?

ここでは曲の途中再生の際に
大量データ転送が生じるのが問題です。
0213デフォルトの名無しさんNGNG
>>212
2、3回というか・・
途中から再生するのってそんなにシビアなタイミングが必要なの?
プレイヤーなら少しぐらい遅延しても気づかないよ。
それよりも音源に負担をかけない様に送らないと、
まともに鳴ってくれないと思うけど。
0214186NGNG
>>213
あ、必要ないです。

つまり、かなり複数回に分けて送ってもいいってことですね。
その分け方がまた問題になりそう…

でも一応これで解決っぽいですね。
・メジャーなステートチェンジIDは控えておき最後のひとつのみ送信
・マイナーなステートチェンジはすべて送る
・負荷が重くなりそうなときは割り込みを多数回で分散させる。

こうでしょうか?
0215デフォルトの名無しさんNGNG
>>214
割り込みとか考えないで、(つまり再生ルーチンはそのままで)
単純に再生データに対して加工するのが簡単だと思う。
0216186NGNG
>単純に再生データに対して加工するのが簡単
よくわかんないです。説明きぼうです。
0217デフォルトの名無しさんNGNG
具体的に言うと、(途中)再生用の音源初期化用バッファを持って
おいて、プレイヤーは最初にそのバッファをかならず経由して
データ送る様にしておく。曲の途中から再生する要求が着たら、
そのバッファに必要なデータを溜め込んで、プレイヤーに、ただ
再生要求を送る。
0218デフォルトの名無しさんNGNG
↓初期化用バッファ
------------|  ↓曲データ
- - - - - - |a-----------------------------
時間→

バッファは可変長。
プレイヤーはaの時点で、
初期化用バッファ→曲データ
に出力を切りかえる。
0219186NGNG
バッファに対する同時アクセス共有問題とかは
どうやって回避するんでしょう?

割り込みはスレッドと違うので
クリティカルセクションが使えないきがするんですけど。
0220デフォルトの名無しさんNGNG
>>219
同時アクセスなんて起こらないと思うけど?
プレイヤーという表現が悪かったかな?
いままで言った「プレイヤー」は「再生エンジン」に読み替えてね。
「再生エンジン」に要求を出す時点ですべてのデータの書きこみは
終わってると考えて。
切り替える、とかを考えたくなければ連続したメモリに並べればいい。

↓初期化用バッファ ↓曲データ
<-------------|----------------------------->
時間→
<…始点
>…終点

「再生エンジン」はただメモリの始点から終点までの範囲を再生する。
0221デフォルトの名無しさんNGNG
処理の流れは、

ユーザーが再生ボタンを押す
↓
ポインタが曲の途中ならつじつまが合う様に初期化データを作成
↓
初期化データと(途中からの)曲データをメモリに並べる
↓
「再生エンジン」に再生要求を出す。
0222186NGNG
あ、なるほど、よくわかりました。
今の「再生エンジン」に初期化バッファ
と初期化バッファ再生
を追加すればいいわけですね。
0223186NGNG
う〜ん、でもいまいち
このやりかたの利点がわからないです。

割り込みルーチン内で
ならつじつまが合う様に初期化データを作成
をしなくていい、ってことでしょうか?
0224186NGNG
間違い・

割り込みルーチン内で
「つじつまが合う様に初期化データを作成」
しなくていい、ってことでしょうか?

でした
0225186NGNG
つまり

割り込み部分以外で
「つじつまが合う様に初期化データを作成」
することが出来る

ってことですか?
0226デフォルトの名無しさんNGNG
>>224
なんで「割り込み」にこだわるのかなあ・・
再生を開始する時点で割り込みを始めるんだよね?
開始までの間って、なにか割り込みが関係あるの?
0227デフォルトの名無しさんNGNG
>>225
多分割り込みって「再生エンジン」内部の事でしょ?
今「再生エンジン」内部の事は、
ナニも考えない方向で話を進めてたんだけど。

「再生エンジン」の役割はただ、始点から終点までの再生であって、
その内部についての実装手段はどうでも良い。
0228186NGNG
>開始までの間って、なにか割り込みが関係あるの?
これまでは割り込み開始時に
割り込みルーチン内で初期化をやろうとしてました。
これが間違いということで。

「割り込み開始前に用意」のほうが自然ですね。
0229デフォルトの名無しさんNGNG
>>228
そうそう、なるべく切り分けて、モジュール化した方が良いよ。
例えば「再生エンジン」をすげ替えるだけで、
色んな環境に対応できるかもしれないし。

今思ったんだけど、この話題は↓の方が適当だったかもね・・
http://pc.2ch.net/test/read.cgi/tech/1005053427/l50
0230186NGNG
>>229
そうみたいですね。これからはそちらに書くようにします。
どうもありがとうございました。
0231デフォルトの名無しさん NGNG
ASIOの資料ってどこかにありませんか?
0232デフォルトの名無しさんNGNG
WinGrooveのソースコードって、どっかで流出してないだろうか。
timidityは難解だ。
0233デフォルトの名無しさんNGNG
>>231

ttp://service.steinberg.net/webdoc.nsf/show/development_e

ASIO SDK、Mailing Listとアーカイブがここからリンクされてるから、
その中から探してみては?
0234デフォルトの名無しさん NGNG
あげ
0235デフォルトの名無しさんNGNG
>>232
流出してたら商売にならんな(藁
0236デフォルトの名無しさんNGNG
このスレの内容的にbuzzは見逃せないと思うけど、
なんで出てこないのかna?
0237デフォルトの名無しさんNGNG
死んだからかな?
これからはpsycleか。
0238デフォルトの名無しさんNGNG
んな簡単に死んだからといって切り捨てるの?
0239デフォルトの名無しさんNGNG
DirectSoundをベースに効果音はWAVファイルで、
BGMはMODという事は可能ですか?
0240デフォルトの名無しさんNGNG
BGMがMODのゲームなら見たことあるよ。
0241239NGNG
WAVが同時に遅延0.1秒以内ぐらいで鳴らせるかどうかが重要なんだよね。
以前にMODPlayer(だったかな?)のライブラリを使ってやったときは
一秒近く遅延が発生した。漏れの使い方わるかったんかもしれんが。
0242デフォルトの名無しさんNGNG
このスレ(↓)で知ったんだけど、
http://pc.2ch.net/test/read.cgi/dtm/1007315135/

Virtual Audio Cable便利。
これってシェアウェアなんだけど、
プログラム的に難しいことしてるんだろか?
デバドラ書く技能を要求されるとか。
DDK使えば可能ですか?
0243デフォルトの名無しさんNGNG
結局buzzはもうだめなの?
0244デフォルトの名無しさんNGNG
>デバドラ書く技能を要求されるとか。

あほらしいことだがwinのwave in/outは
ドライバとしてしか存在できないアーキテクチャになっているので、
この手のソフトは一見ドライバに見えるソフトとして実装するしかない。

アプリとして作れるようになっていればさぞかし楽だったんだろうが、
そういうことにしてしまうとMSとドライバ(そしてハード)屋との
利権構造が保てなくなるので、わざとしてないのだろう。
まあカーネルモード云々という問題もあるが。

似たソフトとして、midi in/outをバイパスする仮想ドライバとか、
プリンタ仮想ドライバとして「まとめ印刷」をやってくれるソフトとか、が既にある。

midi/audioみたいなリアルタイムのものならば、カーネルモードでないとまずい
などの技術的問題があるだろうけど、
プリンタメーカーが出してるドライバは完全に利権の問題だな。
あんなものを「ドライバ」として作る技術的必然なんか何もない。
わざと作成やインストールが色々面倒なので参入障壁の高い「ドライバ」として作ってる。
0245デフォルトの名無しさんNGNG
>>241
最近のModplug,fmod,bassではそんなことはないと思う。

>>244 Windows3.1の話ですか?
MIDIなんてソフトMIDIからべた通信まであるのに....

最近はOSデフォルトのMIDIシンセですら4ms〜100msとかなのに
あとWavもDirectSoundのサウンドバッファーでミキシングされるので
音の数増やしても遅延は変わらない
演奏って要は”プログラム”なわけだから全体で時間的なクッションをおいてやれば
結果としてはちゃんと同期したものが作れるんじゃない?
0246デフォルトの名無しさんNGNG
>>245
>MIDIなんてソフトMIDIからべた通信まであるのに....

独自仕様の通信方法はここでは話題ではないっしょ。

「およそどんなアプリにでも」対応しようと思ったら、
win上では、ドライバに擬態(?)する作りにせざるを得ない。

>演奏って要は”プログラム”なわけだから全体で時間的なクッションをおいてやれば
>結果としてはちゃんと同期したものが作れるんじゃない?

それのことをレイテンシというわけだ。
で、リアルタイム弾きと合わせるとおかしなことになる。
0247デフォルトの名無しさんNGNG
VSTでディストーションの作り方を教えてくダサイ
0248デフォルトの名無しさんNGNG
>>247
音量上げてクリッピングするだけじゃん。
それとも、VSTのプラグインの話?
0249デフォルトの名無しさんNGNG
サウンド操るならマック用だけどフリーのソース付ライブラリあるよ
ttp://ndevelop.zone.ne.jp
0250デフォルトの名無しさんNGNG
>>244
プリンタドライバについては、グラフィックとプリンタを同等に扱うために
MSがややこしくしたという経緯があるのでは。
そのおかげで、ほぼ全てのwinアプリはコード上何の変更も無しに
プリンタ対応になっているのでは。
(いわゆるunixではそうは行かないでしょ)

スレ違いなのでsage
0251デフォルトの名無しさんNGNG
>>246 4msでもだめというの?
ライブ会場での音の時間差を考えると根本的に目的を見失っているように見えるけれど
スピーカーから距離はどれだけとってる?
生演奏なら距離で調整できるし
リアルタイム演奏だって電子楽器だったら遅延調整できるって話なんだけど
理解すらできない?
あと独自仕様がなんでだめ?MIDI機器と通信するのは単にRS232Cポートとか
ジョイスティックポートたたけばできるし、ドライバーは一切無関係

結果が目的じゃないの?
何がしたい?自分ができないクンだって自慢?DirectAudioしってる?
アプリケーションレベルでなんでドライバ云々をぐずぐすいうのか理解に悩む
0252デフォルトの名無しさんNGNG
>>248
プラグインの作り方です。
フリーのソースを探しても、あまりなかったんで聞いてみました。
実物の原理を説明してるところでも良いので参考になるところは
ありませんか?
0253デフォルトの名無しさんNGNG
>>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にも同様の処理が必要です。
0254デフォルトの名無しさんNGNG
>>253
ありがとうございます。
試してみます。
0255デフォルトの名無しさんNGNG
>>253
試してみたら、リバーブのような感じになって歪みませんでした。
もうすこし、がんばってみます
0256デフォルトの名無しさんNGNG
なんとかできました。
ナチュラルな歪みを目指してがんばってみます
0257デフォルトの名無しさんNGNG
>>251
MIDI=RS232Cって思い込んでるヤツ発見!
きっとオンボードのMIDI I/Fしか使ったことないんだな(藁
0258デフォルトの名無しさんNGNG
>>257
同意。
間違ってる知識を堂々とひけらかさないで欲しいもんだな。
0259256NGNG
自然な歪みがなかなか出来ません。
エフェクターを作るときはやはり元々ある回路を参考に作ってるんでしょうか?
あるエフェクターの内部の回路をシミュレート出来たら、同じような音が作れるのでしょうか?
0260トの名無しさNGNG
>>259
もともとはアンプにでかい音つっこんで歪ませてたんだよね。
エフェクターも、それのシミュレートだよ。
あと、デジタルエフェクターは内部の回路をシミュレートしてたりするよね。
アンプシミュとか流行ってる。
ということで、回路シミュレートできたら同じ音になるよ。

で、単純にクリッピングすると波形に角がついて高周波がでるから自然な
音にならないんじゃないかな。
波形の角をまるくする処理が必要と思われ。
0261デフォルトの名無しさんNGNG
>>260
オーバードライブみたいな感じだね。
0262260NGNG
>>261
まさに。
0263デフォルトの名無しさんNGNG
>>257 >>258 ジサクジエン?
DirectMusicとかソフトシンセの話し出しているのにどうしてデバドラの話になるのかねえ。
アプリレベルでそんなの意識するほうがおかしい。
大体最近のMIDIはソフトかUSBなんだから規格のドライバーに従ってるからおかしい
という論理自体サウンドプログラムからは外れていると思う。

ところで
最近の新しいMIDIアプリはDirectX8ベースになっているみたいで
DirectAudioだと複雑なプログラム無しでディストーションやフェーズかけられるので
サウンドプログラマーはやはり導入必須じゃないかなあ。
昔はハードでのイフェクトメインだったけれど光出力のあるMIDI音源ならば
デジタルで取り込んでオーディオデータとして処理したほうがよさそうだ
0264デフォルトの名無しさんNGNG
win2kとかwin98(se?me?)からはカーネルにサウンドミキサー関連が入ったねえ。
これでソフトシンセの遅延が少しは減るのかな?
0265デフォルトの名無しさんNGNG
>>263
>大体最近のMIDIはソフトかUSBなんだから
ちっとは勉強すれ。
普通MIDIつったら、MIDI規格のことだ。
ttp://www.pluto.dti.ne.jp/~daiki/Midi/AboutMidi_First.html
0266256NGNG
>>260-262
そうですか。参考にしてみます。

ところで、良い歪みの条件ってどういうものでしょうね。
そんなのがあるかどうかもわかりませんが、
もしあるんだったら、それに沿って作ればいいだけなのに。
既存の回路の音に近づけるのも良い事だと思いますけど、
どうせなら、デジタルでしか出来ない処理をやってみたいですしね。
0267デフォルトの名無しさんNGNG
>DirectAudioだと複雑なプログラム無しでディストーションやフェーズかけられるので
>サウンドプログラマーはやはり導入必須じゃないかなあ。

すると、どのソフトもみんなMSが用意した同じような音がするようになるんでしょうか?(わら

(そういうことにならないためにも、)どれくらいのところまで、自分が書いたエフェクトルーチンを
入れこむ(callbackだと思うけど)ことができるんでしょうか?>DirectAudio
0268デフォルトの名無しさんNGNG
>>251
>ライブ会場での音の時間差を考えると根本的に目的を見失っているように見えるけれど

するとそのシステムは逆にヘッドホンでは聞くに耐えない代物であるわけだ(わら
わざわざ悪いほうを基準にしてどうするんだ?

>リアルタイム演奏だって電子楽器だったら遅延調整できるって話

そのシステムの限度を越えて、遅延ゼロに近づける(調整する)ことは、不可能でしょ。
4msなら4msより少なくは出来ない。

で、演奏者の立場だが、我慢すればできないでもないが、
常時4ms(だけならまだしもそれ以上)の遅れがあったら、程なくムカついてくるぜ?

#ところでWindows3.1がなんなんだろう?あの時代からmidiやaudioのAPIは有ったぞ。

>あと独自仕様がなんでだめ?MIDI機器と通信するのは単にRS232Cポートとか
>ジョイスティックポートたたけばできるし、ドライバーは一切無関係

そんなに他の世間一般のアプリと対話したくないわけ?
したくないなら勝手にやればいいが、それをmidiと呼ぶことの意味が喪失していくだけ。

まあ、osメーカーに依存しない形で、 yet another な「midi」API setを作るっていうなら
それはそれで感心するが、普及しないかぎりそれは「存在しない」のと同じなので、
こっちとしては評価のしようが無い。
0269デフォルトの名無しさんNGNG
>>250
>グラフィックとプリンタを同等に扱うために MSがややこしくしたという経緯

そのためだけなら、あんなことはしなくていい。
単に画面とプリンタの両方が、テキストベースからグラフィカルベースに移行しただけ。
その程度のAPI setを作るのは、別にややこしくする必要もない。

問題はMSが、そういうAPIとハードとのあいだに、「正体不明の」ドライバが
介在する余地を、作ってしまったことだ。
だから、プリンタもグラフィックカードも、謎のドライバによって動くという世界が
できあがってしまった。

そうしたほうが、ハードメーカーも、それとつきあうMS自体も、金を儲けやすいからね。
各ハードメーカーが「独占」状態になるほうが、お得というわけだ。

unixは、たまたまXがそっち(印刷)方面に熱心じゃなかっただけ。
一方で(unixで)DisplayPostScriptというのを使ってプリンタと統合しよう
という動きもあったんだが、ポシャったね(わら
DPSがメジャーになっていたら、どのディスプレイカードもプリンタも
PostScript一発でオッケーという話になっていたはずだったのだが。
(PSでは重すぎるので、他のものでないとマズいとは思われるが、共通規格という意味では同じこと)
0270デフォルトの名無しさんNGNG
269はフリーメーソン陰謀説とかが好きそうだね。
具体的な中身はまったく知らないと見た。
0271デフォルトの名無しさんNGNG
>>269
APIとハードの違いを吸収するのがドライバだろ?
アプリ屋に全てのハードを完全に理解してサポートしろとか言うつもりかな?
0272デフォルトの名無しさんNGNG
>>269
Cとかアセンブラで書けばポート出力ぐらいできるから勝手にやれば。
繋いだ機器がどうなっても知らないけど。
0273デフォルトの名無しさんNGNG
ADPCMのファイル形式 って何を調べればのっているもんなの?
自力デコードやりたいんで情報ください
0274デフォルトの名無しさんNGNG
ほれ
ttp://www.seanet.com/users/matts/mattspro.htm
ttp://www-mobile.ecs.soton.ac.uk/speech_codecs/standards/adpcm.html
ttp://ku-www.ss.titech.ac.jp/~yatsushi/xaadpcm.html
でも自力でgoogle引くぐらいしてから質問しろな
0275デフォルトの名無しさんNGNG
>273 標準規格になってるものは規格書を入手する
  規格書は規格団体の収入源なので買ってあげてね
0276時代遅れの七資産NGNG
>>242
VirtualAudioCableみたいなやつ、Win3.1/95/98なら結構簡単に作れる。
16bitのDLL生成できるコンパイラがあれば、
それを.drvにリネームすれば、ドライバの出来上がり!!
DllMainのかわりにDrvMain置いたりとか、
DrvProcってなコールバックを作らなきゃならんとかめんどいけど
WDMよりは楽なような気がする。
亀レススマソ。
0277デフォルトの名無しさんNGNG
>>267
コールバックじゃなくてDirectXプラグイン(DirectShowフィルタ)を使用する(DMO形式)
なのでこの形式で作ればDirectAudioで大抵使用できる。
0278デフォルトの名無しさんNGNG
>>271
>APIとハードの違いを吸収するのがドライバだろ?
>アプリ屋に全てのハードを完全に理解してサポートしろとか言うつもりかな?

そんな処理は、もっと下の層に持っていけば済むことだ。

プリンタについて具体例を言えば、PostScriptみたいなフォーマットが有れば済む、ということだ。
そうすりゃアプリ屋はPostScriptだけ知っていればよい。
プリンタ屋はPSインタプリタをプリンタ内部に持たせればよい。

インテリジェントなハードという概念を知らぬのか?
USBだってそうだ。あれのおかげで、周辺機器の機種1つごとに別々のドライバ
などという下らないものを、だいぶ減らせるようになった。
0279デフォルトの名無しさんNGNG
>>270
>269はフリーメーソン陰謀説とかが好きそうだね。

おう。三度の飯より好きだ。

>具体的な中身はまったく知らないと見た。

でもよ、じゃあ、Linuxの連中があんだけプリンタで苦労したり、
逆に一部の会社がちょっとだけLinux用ドライバ(ただしOpenSourceではない)を出しただけで「ニュースになったり」
するのは、何故よ?
プリンタのアクセスのしかたなんか、すぱっと公開しちまえばよかろうに、
そうしてないのは何故よ?

「しないほうが利益があるから」だろ?
企業なんだから。
0280デフォルトの名無しさんNGNG
>>275
規格書の名前はなんというのでしょうか?
本屋に行ったのですが、それらしきものは見あたりませんでした。
0281デフォルトの名無しさんNGNG
>>278
結局、PSインタプリタを内蔵したプリンタを作るよりWin側で
ドライバを実装したほうが楽って事だよ。
間接的には「しないほうが利益があるから」とも言えるが。
0282デフォルトの名無しさんNGNG
これってサウンドプログラミングのスレだろ
なんで話がプリンタドライバになるのかなぁ。

サウンドプログラミングがわからないからって自分の
知識の範囲で話をしないでほしい。

こっちはオーディオやMIDIベースでのアプリケーションプログラムの話を
しているんで見当違いな言いがかりはやめてほしい。

>>279 単に憶測で物言っているだけだろ。
そもそもMIDIってのは公開された通信規格なんだから
独自ハードに依存するプリンタの仕様を公開するしない
しないから気に入らないというだけで見当違いだし
アプリケーションレベルでハードレベルまで考えないのがOSだろ。
要するに発想がDOSなんだよ。

サウンドのことわかんないならいた違いだよ
0283 ◆woDeLPHI NGNG
>280

http://www.ttc.or.jp/j/publish/list/130.html

他にIMA(Interactive Multimedia Association)のもの=DVI-ADPCM
は IMA Digital Audio Doc-Pac にあります
0284デフォルトの名無しさんNGNG
>>278
USB に誤解があるようです。
>>279
スレちがいだけど、
いまでもカナメなところは公開されてません。
このあたりはノウハウの塊らしく、そのバイナリにアクセスする方法が
示されているだけです。
かつ、それはプリンタのアクセスのしかたでもありません。
0285デフォルトの名無しさんNGNG
>>規格書
どういうふうに圧縮されているか というのはわかりそうですけど

比率テーブル(2000年三月号のC MAGAZINEより) というものが
wavファイルの先頭から何バイト目に格納
されているかとかいう情報はわかりそうにないのですけど・・・・

そういうものも載っているのでしょうか?
0286 ◆woDeLPHI NGNG
>285  非常に判り難く書かれていますが載っています
G726ではlog2(|差分|)-スケールファクタ という形で載っています
0287デフォルトの名無しさんNGNG
>そもそもMIDIってのは公開された通信規格なんだから

その話、もともとpc内部でのアプリ間のmidi/audio信号(に相当するもの)の
通信の話題だったんじゃなかったのか? MacでいうApple MidiManagerみたいな。

とすれば、MIDIそのものが公開されているかどうかは、関係ない話だ。
逆にMIDI規格はPCの中のことは構ってくれない。
それこそOS(API)メーカーの自由裁量の範囲だ。
0288デフォルトの名無しさんNGNG
あげ
0289デフォルトの名無しさんNGNG
>266
ここ参考にしてみてはいかが?
ttp://www.smartelectronix.com/musicdsp/main.php
0290デフォルトの名無しさんNGNG
Windowsでmp3をつっこんで波形を得るもっとも簡単な方法は
何でしょうか? DirectSoundはそのあたり対応しているのでしょうか?
0291デフォルトの名無しさんNGNG
>290
acmでデコードすれ。
0292290NGNG
これは*.acmファイルが必要なんですね・・・。適当に書いて知人に試してもらった
ところ、半数ほどが再生できなかったので、自前でデコードエンジン書くことに
します。ありがとうございました。
0293デフォルトの名無しさんNGNG
DirectShowという手もあるな。
0294291NGNG
DirectShowもacmも同じコーデック使うのかな?ならacmでだめならDirectShowもダメか。
DirectShowでフィルタだけ使う方法がわからんのです。
pinオブジェクトを接続してサウンド出力やファイルに出力は出来たのですが、メモリにデータを出力、またはメモリのアドレスを取得ってできるのかな。
あるいはそういう*.axを作らなきゃならんとか?
0295デフォルトの名無しさんNGNG
MP3再生用のACMはWindowsMediaPlayerインストールさせれば勝手に入るけどなあ
それではダメ?

0296290NGNG
waveOut* APIで再生させてみましたが、やはり半数ほどしか
再生できませんでした。これもacmと関係あるんでしょうか。
0297デフォルトの名無しさんNGNG
再生できなかったファイルアップしろ>296
0298デフォルトの名無しさんNGNG
>DirectShowもacmも同じコーデック使うのかな
NTなら、winnt\sytstem32で、*.axがDirectShow、*.acmがACMのコーデック。
それとたしか、DirectShowは、ACMのコーデックを扱ってくれたはず
0299291NGNG
本当にファイル依存ならエンコーダーによって違うとかのはず。
同一フォーマットでもファイルによって差が出る?
メディアプレイヤーで再生できるならやり方の問題では?
acmならやったことありますが
wavヘッダーがあるmp3ファイルなら取り除いて、フレーム単位で送る。
あるいはビットレート等の取得が間違ってるとか。
0300デフォルトの名無しさんNGNG
>>294
流れてくるデータ拾いたいだけならSampleGrabber つかえば?
0301デフォルトの名無しさんNGNG
そういえば、我輩の環境でにも、MediaPlayerで再生できない
mp3ファイルがあるな。winampは普通に再生されるんだが。
そういう話か?
0302デフォルトの名無しさんNGNG
max/mspがWinででないかなー。

0303デフォルトの名無しさんNGNG
>>302
開発中のはず(ずっと開発中、、、鬱)
でもPDならあるさ!
0304デフォルトの名無しさんNGNG
このすれと関係あるかわからんが、メディアプレーヤーで
可変ビットのmp3の再生をしようとしたら、右上の、トータル
時間の表示がおかしくねえか?
0305デフォルトの名無しさんNGNG
失礼します。
waveOut系でPCMをリアルタイム合成しながら演奏しているのですが、
バッファを大きめに持った場合の発音までのタイムラグが気になります。

waveOutWriteした後そのデータが実際に発音されるタイミングと
同期を取りたいのですが、何か方法は無いでしょうか?
0306デフォルトの名無しさんNGNG
>>305
バッファを小さめに取るしかない。
処理が重めなら転送レート(つまり再生周波数)下げるとか。
0307デフォルトの名無しさんNGNG
>305
waveOutGetPositionで取得した値と追加したバッファのデータサイズ合計の差分で
ある程度はわかるけど・・精度はイマイチ。あるいは再生終了フラグのたったとき、
その次に追加してあったバッファが再生開始されたということでどうでしょう。
0308305NGNG
>>306
特にユーザ入力がトリガになって発音される場合は
バッファをできる限り小さくとるしか方法は無いでしょうね。
ただ、今回は発音をトリガに同期を取りたいと考えているので
バッファを小さく取る以外の方法を模索したいと考えました。


>>307
>あるいは再生終了フラグのたったとき、その次に追加してあった
>バッファが再生開始されたということでどうでしょう。
なるほど。waveOutWriteしたデータが発音されたか判定できるなら、
再生開始までポーリングするのもアリかなと考えていました。
こちらの方法で試して見ます。
0309デフォルトの名無しさんNGNG
超優良スレage

次号のCマガはこれ系の特集みたいですね
1から勉強させて貰います
0310デフォルトの名無しさんNGNG
>>309
先月のCマガ(プログラマーのための数学)を読んで
今のうちに理解を深めておくのも吉。
0311名無しさんNGNG
スレの話題とは外れるけど面白いよ。DTM板で見つけた。
音声合成で、入力したテキストを wav にしてくれる。
http://www.bell-labs.com/project/tts/voices.html
0312名無しさんNGNG
スレの話題とは外れるけど面白いよ。DTM板で見つけた。
音声合成で、入力したテキストを wav にしてくれる。
http://www.bell-labs.com/project/tts/voices.html
0313DirectXAudioのアルゴリズムについて NGNG
DirectXAudioの内部的な計算方法はどのようにされているのでしょうか?
DirectXAudioの3Dサウンドやドップラー効果の計算方法が知りたいのですが。
ご存知の方がいらっしゃいましたら是非教えてください。


0314デフォルトの名無しさんNGNG
まぁとりあえず
http://www.bio100.co.jp/cgi-bin2/directx/flashlst.cgi
の
http://www.bio100.co.jp/cgi-bin2/directx/flashviw.cgi?no=2316&reno=no
と相互リンク決定だな。
0315デフォルトの名無しさんNGNG
つーかBioの掲示板ってIPアドレスばれちゃうの?
0316デフォルトの名無しさんNGNG
>>314
オレも気になる、DAudioのソースってでてるの?
0317デフォルトの名無しさんNGNG
どなたかお勧めのMODフォーマットを教えてくだされ。
今はどれが主流になってるですか?
0318デフォルトの名無しさんNGNG
DAudio以外でも良いので3Dサウンドのアルゴリズムについて書かれた記事ってないでしょうか?
0319デフォルトの名無しさんNGNG
マルチポストは嫌われるよ。
0320デフォルトの名無しさんNGNG
>>313
Direct3DSoundはドルビー社のCODEC使ってるし、社外秘なんでは?
左右の遅延とフィルタリングが基本なんだろうなぁ

ドップラー効果程度ならば、物理学(波動)の本を読めば書いてある
要は、相対速度がどのくらいならば、周波数がどのくらい上がる(下がる)のか
それだけのこと。
0321 NGNG
http://emobu.tfm.co.jp/article.php?id=032
0322デフォルトの名無しさんNGNG
Waveの波形データから音量をデシベル単位で求めるにはどのようにすればよいですか?
0323デフォルトの名無しさんNGNG
.wavの詳しいフォーマットが書かれているサイトってありませんか?
0324デフォルトの名無しさんNGNG
>322
log10(level)*20
levelは適当な時間の中のMAXレベル。

>323
バイナリエディタで調べれ。簡単に分かる。
あとMSDNに情報ある。調べれ。
0325デフォルトの名無しさんNGNG
>>324
maxレベルとは、44.1/16bit波形データ中の-32768〜32767の絶対値のことですか?
0326デフォルトの名無しさんNGNG
>325
dB表記は減推量だから正確には、
( log10( fabs( level ) ) - log10( fabs( MAX ) ) ) * 20
かな。
MAXは16bitなら32768。
0327デフォルトの名無しさんNGNG
×減推量
○減衰量
ウツダ…ネヨウ
0328デフォルトの名無しさんNGNG
>>325 音量は理論的にはlog10(ΣX[i]^2)*10 -定数
0329デフォルトの名無しさんNGNG
WAVEファイルのヘッダーのフォーマットチャンクをと読み込もうとするのですが、
メモリをアロケートするとこで実行エラーが出てしまいます(;´д`)

どなたかヘルプをお願いします。
0330デフォルトの名無しさんNGNG
アロケートってなに?
0331デフォルトの名無しさんNGNG
>>329

サウンドプログラミング以前の問題だろ。
自分の使ってる言語の初心者向けスレ逝って来い。
0332デフォルトの名無しさんNGNG
>>331
ハハハ
まあまあ
でもワラエタ
0333デフォルトの名無しさんNGNG
>>329
メモリをアロケートするとこってわかってるんならなおさらwavとは無関係じゃないか?
たしか21バイト目から16バイト読むだけですが。

下がってきてるな
0334デフォルトの名無しさんNGNG
このスレに書き込んでる結構詳しい人は、
学術系の人?それともヤマハとかローランドの
エンジニアの人?
それとも趣味かな?

なんにしても尊敬します。
0335デフォルトの名無しさんNGNG
>>334

漏れはしがないフリーソフト作者です。
カキコもするけど、正直ついてけない話題も多い。
ま、>>334 は今月号のCマガの特集でも読んでなさいってことだ。
0336デフォルトの名無しさんNGNG
http://cheese.2ch.net/test/read.cgi/sci/1002984386/l50
↑このスレッドちょっと面白いかも
0337デフォルトの名無しさんNGNG
お尋ねします。
ボイスチェンジャーソフトで、物まね機能というか、自然音声Aに
自然音声Bの声色をベーストするような機能を持つものはあるでしょ
うか。あるいは、作れるから見積もってあげるよ、という人、います
でしょうか。

(1)できればWin98かXP動作で
(2)声色のみのエミュレートで、口跡などは問わない
(3)ある程度は音声Aの声色が残ってもやむをえない
(4)リアルタイムである必要はない。再生時間の数十倍
変換にかかってもやむをえない。
と、まあこんな感じです。セガのカラオケにそうした機能が
導入されたとも聞いたのですが。
0338337NGNG
いちおうアドレスもいれておきます。
0339デフォルトの名無しさんNGNG
>>337
 数年前にイギリスかどっかの大学で 成功したとニュースにはなってましたね

 その手の仕事をやって胃に穴を開けた事ならあります
 現実には色んな意味で難しいですね。
 具体的にはピッチの検出に失敗した時のペナルティが非常に大きいのです。
0340デフォルトの名無しさんNGNG
>>337
かなり以前に高校サークルのプログラムコンテスト入選作品で
それに類したものがあったはず。
0341デフォルトの名無しさんNGNG
>>337
 理論的にはボコードにピッチフォルマント情報を入れて加工すれば出来ますが、
 実験的には可能ですが実用的には難しい面があります

 何を言ってるかやっと判別出来る程度の音質なら可能ですが、それでは納得出来ないでしょう
 音質をあげれば、失敗した時の違和感が酷くなり、やはり納得出来ないでしょう

人間の音声は母音と子音の組み合わせです。 どうしてもそれを連続的に処理する事が出来ません
たとえば2つの音源を分離することは今の技術では無理です(音源を事前に測定出来ればというレベルです)
携帯電話の電話口で2人が同時に喋れば何を言ってるか判らなくなるのと同じ問題があるのです

カラオケなどでいうボイスチェンジはキーコンの応用技術である事が殆どです
 ピッチを買えずに再生速度を変化させたり、ビッチを完全にx2 ÷2したり、その周期の別の波形と
掛算したりというような連続的な処理をさせる方式だと失敗した時の違和感が少ないからです
0342341NGNG
×ボコード
○ボコーダ
0343デフォルトの名無しさんNGNG
>>341
ですね。
変えればいい、というのと任意のものに変えたい、とでは雲泥の差がありますね。
あとカラオケであれば音程データがありますから、これは応用がききます。

ピッチを抜きで考えるとすれば
完全に思いつきですが長いサンプル数で元データをFFTして平均的な周波数特性を出力に反映させる、とか。
ちょっとは似るかも。
0344341NGNG
>>343
残念ながら短時間FFTを使う方法は 固定周期で分析した場合 接続点がスムーズになりません
接続点をスムーズにしたとすればその固定周期の音が出てしまいます。

ピッチの整数倍毎に分析するという事になりますが、すると子音部には音色がついてしまいます
思ったより巧くゆかないですよ
0345デフォルトの名無しさんNGNG
>>344
なぜ短時間?
おおよその声の周波数特性の差分をEQでうめる、という感じではどうでしょう?
完全にオフライン処理でいいのですから。
0346デフォルトの名無しさんNGNG
>>345 短時間フーリエ変換というのは
 全サンプリングのデータを読んで一挙に変換する方法との区別の為の呼称では?
 分割すれば、長いサンプル数で分割しても短時間フーリエ変換ですよ。

EQで調整出来る程度の差=線形な加工では声質が変わったにようには殆ど聞こえ
ないです。

たぶん希望を満たすには、極論ですが音声認識して音声合成しなければならないと
考えた方が安全でしょう。
0347デフォルトの名無しさんNGNG
ちょっと話題がそれてすいませんが

質問です

音をスロー再生したいのですが
普通にスロー再生するとピッチが下がってしまいます

ピッチは通常速度の再生時と同じに
したままでスロー再生する方法…

わかります?既出だったらすまそ
0348デフォルトの名無しさんNGNG
>>347

 自分で作りたいの? それとも既製のを手軽に使いたいの?

原理は
 ピッチを変えたくないなら、同じ速度で再生するしかないでしょ?
 だから同じ速度で再生する。 
 ただし、同じ信号を繰返させる
 例えば
AAAABBBBCC__DDDD というふうな音声信号を
AAAAAABBBBBCCC___DDDDDD となるようにする

 具体的には2系統の再生機を用意して 再生機の出力が相関の高い所で
 切り替える
0349デフォルトの名無しさんNGNG
>>347
今売ってるC MAGAZINE(3月号)に載ってたよ。
0350デフォルトの名無しさんNGNG
こういったデジタルオーディオデータの取り扱いに
ついて詳しく書いてあるような本ってないですかね?
0351347NGNG
>>349
ありがとうございます、早速入手します。
0352-NGNG
>>350
理論系なら結構ある。工業数学?系。大学教科書になるからね。
フィルタ製作などでは参考にできます。
私が買った中で一番ソフト開発よりなのは
コロナ社刊C言語によるディジタル信号処理入門(CD-ROM付)
もっと具体的なオーディオアプリ開発のになると?です。あったら俺もホスィ
何部売れるんだ、というカンジでしょうけど。
0353参考になるかもNGNG
http://pc.2ch.net/test/read.cgi/os/985615544/54-110
0354デフォルトの名無しさんNGNG
delphi でVSTi を作ろうとしています。
やはり、最適化等の問題(よくわからない)で、VC++等で組んだ
ものより遅くなってしまうのでしょうか?

http://www.axiworld.be/documents/40.html
0355デフォルトの名無しさんNGNG
3Dヘッドフォンにそのまま使用できるHRTFってありますか?
SRSとかって効果薄いしソニーや松下のもイマイチっす。
タップ数は1024までだったら何とかなるかも・・・
0356デフォルトの名無しさんNGNG
3D空間うんぬんでない、単純な左右のパンは、
左と右の合わせた音量が常に一定になっていればいいのでしょうか。

ものすごい初心者な質問で申し訳ないです。
0357デフォルトの名無しさんNGNG
「音量のバランスが」ですかね。
0358デフォルトの名無しさんNGNG
単純に振幅の合計を一定にするだけだと
定位が真ん中に来ると、100パーセントパンが振られた音に較べて
弱く、遠く感じられてしまう・・・ンじゃ無かったっけ。
直線的に聞かせるには
センターを0度、定位する音の位置をΘとすると
Lamp = √2/2 * (sinΘ+cosΘ)、  Ramp = √2/2 * (sinΘ-cosΘ) 

最近本を読んだだけなので、俺も理解が足りないかもしれない。
多分上の式は左右45度に置かれたスピーカーの話で、ヘッドフォンだとまた違うのかも。
0359デフォルトの名無しさんNGNG
MIDIのリアルタイムレコーディングができるフリーソフトが作りたいと思います。

1から教えてください。
ってのもあれなので、
外部から入ってくるMIDIデータを読む方法と、
SMFファイルフォーマットがわかる
参考になるようなものは無いでしょうか?
0360デフォルトの名無しさんNGNG
>359
>外部から入ってくるMIDIデータを読む方法と、
MCI辺り調べて見れ。
>SMFファイルフォーマットがわかる
本買え。
0361デフォルトの名無しさんNGNG
>>358
参考になりました。多謝!
0362デフォルトの名無しさんNGNG
詳しい人がいるみたいなので質問。

録音した音声を検索する事が出来る製品ってありますか?
技術的には可能だと思うのですが。

音声を一旦テキストに変換して、検索して、ヒットしたところの音声を再生する
感じです。

私はプログラミング経験ゼロです。
0363仕様書無しさんNGNG
>>362
デジタル録画したものの音声からナマズのように全文検索しておける代物が
3万円からあるよ!

0364デフォルトの名無しさんNGNG
高速フーリエ変換の解説
見たいな事やってるホムペ知ってる人居ますか?
ソースは在るが、何やってるんだかサパーリ!
0365デフォルトの名無しさんNGNG
>>364
そんなの検索すればいくらでも見つかると思うが・・・
あと、どの辺が分らないのかによるよ。
フーリエ変換が分らないのか、高速化のアルゴリズムが分らないのか。
0366362NGNG
>>363
ありがとうございます。
思ったより安いですね。福祉関係では重宝しそう。
0367デフォルトの名無しさんNGNG
>>362
エシュロンでその技術がつかわれているらしい。
0368デフォルトの名無しさんNGNG
>>359
そういうソフトたくさんあるから、MIDIから直接wavにコンバートする
プログラム作ってー。
家の1GHZパソコンではMIDIを最高音質で録音しようとすると途中でと
ぎれてしまうのです。
0369デフォルトの名無しさんNGNG
このスレで議論する内容ではないけど、
「MIDI → WAV」したい人って何が目的なんだかね。
MIDIデータなんて、ある音源のコピーがほとんどでしょ。
最高音質であろうが、データとしては薄っぺらいと思うんだけどね。
MIDIをWAVにしたあと、オーディオCDにするのかなぁ。
PCでMIDI再生する以外のことがしたいとなると。
0370デフォルトの名無しさんNGNG
>369
マジレスすると、どの環境でも同じMIDI音源ならそうなるが、実際は音源毎に音が違う。
>データとしては薄っぺらいと思うんだけどね
ま、この辺読む限り、音源に関する知識に乏しそうだがね。
0371デフォルトの名無しさんNGNG
つーか楽譜を録音するってのが謎
0372デフォルトの名無しさんNGNG
音源に関する知識があったら、なおさらそんなソフトいらんぞ
0373デフォルトの名無しさんNGNG
昔はPC88とかから直接収録したゲームミュージックのCDとかありましたが
何か?
0374デフォルトの名無しさんNGNG
おそらくGM/GS/XGなどのMIDIファイルなんだろうからDTM板の話題だろ
0375デフォルトの名無しさんNGNG
wave録再コンソールアプリ作ってるんだけど、
コールバック、うまい方法無いですかねぇ・
CALLBACK_WINDOWは使えないし。
0376デフォルトの名無しさんNGNG
>>368
そのMIDIがどうゆうMIDIかは知らないけど、
macならQuickTime Playerでmidファイルを開いて、
AIFFに書き出しできるけど。
0377369NGNG
いや、外部のモジュールやらシンセやらの音源で鳴らした音が録音したいなら、
音源からの音をLINEでPCにつないで、
シーケンサー動かしながらWAVE録音ソフトで録ればいいわけでしょ。
そういう作業を自動で行う意味もないだろうから、
内部のソフト音源で鳴らせた音をWAVEにしたいわけでしょ、この場合。
(違うのかなぁ)
で、そんなもんなら、わざわざ録音して残すほどの内容でもないだろうと。
そういう主張でした。
0378デフォルトの名無しさんNGNG
>>375
スレッド使う
0379デフォルトの名無しさんNGNG
>377
言われてみれば、確かに。
0380デフォルトの名無しさんNGNG
MID→WAVって今需要あるのかなあ?
0381デフォルトの名無しさんNGNG
>378
できたよ、Thanks!
0382デフォルトの名無しさんNGNG
とりあえず、外部MIDI機器からのリアルタイムレコーディングができるソフトをつくる
ノウハウを教えてくれ。
はなしはそれからだ。
レコポって、SMPU使ってないとレコーディングできない見たいだし。
サウンドブラスターからレコーディングしたい。
0383-NGNG
midiInOpenとかのAPIでできやんのか?やたことないが。
0384デフォルトの名無しさんNGNG
スレの流れと関係ない話題で申し訳なんだが、

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とかの各キャリアの重みっていうのを、実装する際に
どういう範囲で与えればいいのかな?
0385デフォルトの名無しさんNGNG
>>384

Aが振幅で指数でかかってるんだから 最大1 負側は実装出来る範囲で程度でいいんじゃないの?
0386デフォルトの名無しさんNGNG
もう少し簡単な話してくださいよぉ〜
MCI 低レベルAPIでイコライザする方法とか、ダメ?
0387デフォルトの名無しさんNGNG
>>386
Aが振幅で指数でかかってるんでちゅ。

MCI 低レベルAPIでイコライザする方法があるの?
ありますか?ということ?
少なくともMCIではできぬのでは。
出来るとしたらDMOかな
0388デフォルトの名無しさんNGNG
MCI はそもそも 高レベルAPIでしょうに
0389デフォルトの名無しさんNGNG
>>387
振幅云々の人とは別人ですが。。
DirectXですか? 全然わからんです

>>388
どでもいいけど
高) mciSendCommand、mciSendString
低) waveOut〜、midiOut〜、、、

やっぱイコライザするのは大変そっすねー
ソフトに付けてみたいんだけど
0390デフォルトの名無しさんNGNG
>>waveOut系でやれば可能だよ

midiOut系にイコライザ付けるのは・・・
0391デフォルトの名無しさんNGNG
自前で実装するんならそりゃできます。
Cならサンプルありますね。
ww.tcct.zaq.ne.jp/kaname/equalizer/
ワタクシはVBに翻訳して使ったけど十分速い。
0392391NGNG
あ、もちろんwaveOutのハナシね。midiOutは基本的には無理でしょう。
0393デフォルトの名無しさんNGNG
>>390-391
有益な情報どうも

mixer〜なAPIの方の話で、イコライザってMixerControlがあるみたいなんですが
あれは使えないですか?
0394デフォルトの名無しさんNGNG
ありゃサウンドボードにEQ機能があれば使えるということでは?
お目にかかったことはないですが。
TREBLE、BASSがついてるのは多いですね。
そもそもミキサーは共有のものなのでアプリ側に実装するのはちょと。
0395デフォルトの名無しさんNGNG
>>394
なるほど
mixer〜 APIもWeb上に資料少なくて(書籍当たらないとダメか。。)
でも、それだけ環境に左右されるなら無理ですね

waveOut〜とかDirectX方面を勉強してみます
0396デフォルトの名無しさんNGNG
やっぱりWindowsは色々とそろっていていいねぇ。
Linuxで少しやり始めたけど、基本的なライブラリから
手を付けないといけなくて少しゲンナリしてきたよ。

ただオープンソースだからOSのスケジューリングの改造まで
「やろうと思えば」出来るメリットは大きい。いつかはね(w
0397デフォルトの名無しさんNGNG
話の腰を折るようでわるいんだけど、
Win32 環境で、音ってどう出すの?
Wav じゃなく、MML? みたいなので。
昔の BASIC の play 文みたいなの。
play("abc#ed")とかやると、♪ドミソ〜ラ♪、とかなるやつね。
0398デフォルトの名無しさんNGNG
>>397
midiでshort message送るのが楽かと思われ。
0399デフォルトの名無しさんNGNG
ええっとさ、それ考えたんですけど、俺の中でMIDIっつーと
(この場合、MIDI機器を持ってるわけではないので、
使うのは正確にはMIDIをエミュレートする
ソフトシンセモジュールになるとおもうけど)、
・変なドライバが必須(すくなくとも昔のWindowsでは)
・立ち上がりがクソ遅くて、
・しかもすぐ落ちる
というイメージしかないんですが、
実はWin95以上ならドライバ抜きで普通に使えるとか?
(じゃあいままでのあの変なドライバはなんだったんだ?)

0400デフォルトの名無しさんNGNG
ドライバっていっても、必要なのはI/Fのドライバでしょ
0401デフォルトの名無しさんNGNG
>399
じゃあsin波形ジェネレートするか、BEEPの周波数でもいじってろ。
0402デフォルトの名無しさんNGNG
Win95 からこっちなら、
midi マッパーになんか送れば、
ドライバも、MIDI機材もなんもなくても、
音は出るよ。ショボいけど。
0403デフォルトの名無しさんNGNG
そんなにドライバがイヤか?
0404デフォルトの名無しさんNGNG
http://www.zdnet.co.jp/news/0204/02/taito.html
これってどんな技術?
0405デフォルトの名無しさんNGNG
http://www.google.co.jp/search?hl=ja&q=Csound&lr=lang_ja
0406デフォルトの名無しさんNGNG
http://www.amazon.com/exec/obidos/ASIN/0262522616/
これ読みなさい。分かったらおれに教えなさい。
0407デフォルトの名無しさんNGNG
1曲あたり3Mバイトといったら圧縮音声と同じくらいか。
0408デフォルトの名無しさんNGNG
でもそれでキーコンや速度変更が可能なのがいいね
0409デフォルトの名無しさんNGNG
mod?
0410デフォルトの名無しさんNGNG
音源をただ並べるのではなく演算で音源自体作れるということかな?
これの利点を生かせるほど作りこむのは大変そう。
MIDIだって十分実力差がでるものな。
0411デフォルトの名無しさんNGNG
Waveファイルから csound にするような技術が作れたら面白そうだけど 無理かな?
0412デフォルトの名無しさんNGNG
>411
結局周波数ごとに分解してサイン波におきかえる音声圧縮に近くなる。
MIDIなら音源自体は有限だから
waveの自然音声がどのノートの合成で最も近くなるか、
なんて方法が使えるようになる可能性はあるけど。
まあまともな楽譜にはならんわな。
0413ageiNGNG
http://home.interlink.or.jp/~ipfr_cat/
君らの知りたいことはほとんど網羅しているのでは?
0414St64xNGNG
突然失礼いたします。

とあるメーカーのMIDIインターフェイスを持ってるのですが、
ドライバ開発がWin95で止まっています。
近々Win2000マシンを自作予定(現在Mac使い)なので何とかして
2000用ドライバを作りたいのですが難しいでしょうか。

NT用のβ版は入手したのですが、海外のユーザーBBSのトピでは
Meで動作するものの2000では動作しないようです。

ちなみにプログラミングは初心者です。
0415St64xNGNG
教えて頂くだけではなんですので自分の知る情報を少しだけ。
>>252
実際のディストーション回路では頭がきれいにクリッピングしません。
一定の閾値以上でサンプルレベルを圧縮する方法はどうでしょう。
その閾値を複数設定して、サンプルレベルと圧縮比を比例させると
特性上音楽的な歪みになると言われているようです。
逆にその圧縮比の関係をわざと乱すとキャラクターが変わってくるそうです。
>>144
カップリングコンデンサはインピーダンスを決定する抵抗と常にペアで働くので
必ずHPFを構成してしまいます。
コンデンサの容量はインピーダンスによって決定しますが、
音声回路では大体カットオフ周波数20Hzを基準に考えています。
接地側のコンデンサは反対にLPFを構成します。
どちらもコンデンサ1個につき1次のフィルターとなります。
0416デフォルトの名無しさんNGNG
一般論ですが、プログラミング初心者でMac使いの方が、Windows2000用のドライバを
作るのはかなり難しいのではないかと思います。
0417St64xNGNG
>>416
返答ありがとうございます。
残念ですが、他の方法を当たろうと思います。
0418デフォルトの名無しさんNGNG
ちょこっと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のループしたような図は
どうやってつなげばいいんですか?
0419デフォルトの名無しさんNGNG
age
0420デフォルトの名無しさんNGNG
>>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 )
0421デフォルトの名無しさんNGNG
>>420
なるほど、これがフィードバックってやつですか。
とりあえず、シンプルに作り上げる分には今は必要なさそうです。
ありがとうございました
0422418=421NGNG
とりあえず、おかげさまで1chだけのシミュレータが
何とか動く(音が鳴る)ところまでこぎ着けることが出来ました。
が、所々に出てくる定数(フィードバックのβとか)の決定方法が
よくわからないんですが、
http://www.dendai.ac.jp/press/book_da/ISBN4-501-53210-6.html
こういう本を読んだりした方がいいんでしょうかね?
これに限らず、数式の解説って当然のように定数αとか出てくるけど、
その定数がわからないと実装のしようがないと思うのですが。
0423デフォルトの名無しさんNGNG
>>422 フードバック量については チップのマニュアルに 1がπ/16とか書いてあるでしょ?
0424418=421NGNG
>>423
いや、そういうことではなく。
MA-1シミュレータを書いてるのではないもので・・・
0425デフォルトの名無しさんNGNG
>>424
 意味判らんけど、
 やってみればいいんじゃない?
 動的に音作ってみて波形を見る聞くすりゃいいじゃない
0426デフォルトの名無しさんNGNG
>>422
そこは音源の仕様だから、”これだ”っていう値はないと思う。
オリジナルだったら適当に自分が良しと思う値にすればよく、
なにか実機のエミュレーションだったら、425が言うように実機と
音が同じだと思う値を探し出さなければならないんじゃないかな
0427デフォルトの名無しさんNGNG
そういうのは 俺、WindowsでDelphiでやってるよ。
TrackBar付けて動かしてみて、これだと思う係数探せばいいだけだから
0428デフォルトの名無しさんNGNG
mmioWriteを使ってファイルに書き込もうとしていますが、
バイナリでファイルの中身を見ると、書き込むバイト数の後ろ約半分超が00で埋められてしまいます。
前側は正常に書き込まれているようです。16bitモノラルです。
原因がさっぱりわからないので解決法を教えてください。
0429デフォルトの名無しさんNGNG
>428
普通にwaveIn使う事をオススメします・・・
0430デフォルトの名無しさんNGNG
>>428
単純なミスじゃないの? というかコード出さないと何もアドバイス出来ないよ
0431デフォルトの名無しさんNGNG
>>404-413 タイトーのCsound カラオケ・ボードの記事、初めて今日知りました。
 TDMとかVSTiとかCREAMWAREとか出ている中で、
 Csound丸ごとハードウェア化して商品化ってのは、なかなかインパクトありますねー。

 DTMマガジン の記事によれば、Web上にあるCsoundリソースを活用できるから、
 可能性無限大みたいな感じでしたけど、Analog DeviceのDSP SHARK用のコンパイルとか、
 どうやっているんでしょうね?
 個人的に入手して遊び倒したいもんです。
0432デフォルトの名無しさんNGNG
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()の引数がワカラナイだけかも?)
0433デフォルトの名無しさんNGNG
それってmodのプログラミングって言うご大層な物じゃなくて
dllの使い方が分からないだけじゃん
0434デフォルトの名無しさんNGNG
ホシュage
0435デフォルトの名無しさんNGNG
ホシュage
0436デフォルトの名無しさんNGNG
AIFF-CのADPCM、MACE-3やMACE-6についての
アルゴリズムやテーブル資料ってどこかにないでしょうか?
探してみてもIMAについての資料ばかりで、こっちについては見つからなくって…
0437デフォルトの名無しさんNGNG
>>436
漏れもむか〜し、MACEのデコーダ作ろうと思って資料探したけど、
全く見つからず断念した…。
0438436NGNG
>>437
見つかりませんでしたか…
MACEが再生できるのはQuickTimeだけで
WinAmpやKbMediaでも扱えないですし、解析されてないんですかね。
0439437NGNG
>>438
漏れが資料探したのは8年前の事だから、
今だったらどこかで見つかるかもね。
0440デフォルトの名無しさんNGNG
IIRフィルタ: y(t) = a0*x(t) + a1*x(t-1) + a2(t-2) - b1*y(t-1) - b2*y(t-2)
これの周波数応答をグラフ表示したいんですが、
具体的にどうやったら良いのかがイマイチわかりません。
上の式から伝達関数を求めること、求めたい周波数の純音を代入すること、
fftが利用できることなどまでは薄ボンヤリとわかったのですが。。。
如何せん低学歴なもんで、出来たらコーディングに即した形でご教授願えませんでしょうか。
0441デフォルトの名無しさんNGNG
>>440
 単純にZ変換形式にしてe(2*π*周波数*i)と複素数を代入して 
 絶対値求めるのではあかんの?
0442440NGNG
>>441

いや、それがやりたいんですが、あの・・・
Z変換した時のZって何ですか?何かの物理量?ガンダム?
見たいなところがわからないです。。。
0443デフォルトの名無しさんNGNG
いま >>440をZ変換してあげてもいいんだけど、それじゃ勉強にならないだろうから
ttp://web.kyoto-inet.or.jp/org/create21/dsp06-2.htm

の13式から15式を作り
それを複素数の扱えるプログラム言語で書けばそのまま周波数特性が出ます
0444440NGNG
>>443
早速やってみます。ありがとう。
0445440NGNG
やっと出来ますた。
伝達関数の変形がえらく大変でした。
こんな計算するの初めてなもんで・・・
0446デフォルトの名無しさんNGNG
単に周波数表示するだけなら Z変換した結果を変形する必要はないだろ?
複素数のまま計算すればいいと思うが・・・
0447440NGNG
いや、その場で自前で実装したんで。>複素数
使ったこと無いから敬遠したっつうのもあるんですが。
0448デフォルトの名無しさんNGNG
保守挙げ
04491NGNG
もはや全然話についていけない
>>422
>http://www.dendai.ac.jp/press/book_da/ISBN4-501-53210-6.html
良さそうな本の紹介ありがとうございました
0450スペクトラムのソースが欲しいですNGNG
ぼくはWAVEのエディターを制作中です。
つけたい機能でどうしてもスペクトラムの考え方が必要なんです。
「短時間フーリエ変換」の方式を希望します。
ある程度はお金がかかってもいいのでどなたかご存じないでしょうか?
(言語:C++,C/データフォーマット:wav対応)
0451デフォルトの名無しさんNGNG
意味が…
0452デフォルトの名無しさんNGNG
>>450
今度はこっちで質問してるのか。
まずはお前が立てた糞スレの削除依頼をしてこい。話はそれからだ。
0453デフォルトの名無しさんNGNG
ピッチシフトやタイムストレッチ作ってるんですが、
昔のピッチシフターみたいにどうしてもプツプツとなってしまします。
プツプツ部の段差を直線的に結んで補正してもボーカルとか正弦に近いのはボロがでるわけで。
どうしましょうか?
0454デフォルトの名無しさんNGNG
>>453
1、 A-B 切替を使ってn周期前の音と切り替える
  ただ、周期性が高いならkA+kB=1
  完全なノイズなら kA^2+kB^2=1
  だから、ノイズ度合いによって重み式を調整するとか
  音質に拘ると色々とノウハウがあるけどね、 教えるのはここまで

2、フーリエ変換使って周波数上でシフトする(メンドクサイ上重く、音質も悪いが)
0455デフォルトの名無しさんNGNG
>>454
どうもです。
言われてみればなるほどですね。差を埋めることばっかかんがえてました。

フーリエ変換して操作して戻す、というのは
以前やってみてピョロピョロの音になったかな。
フーリエ詳しくないんでやりかたがいたらなかったのかも。
0456デフォルトの名無しさんNGNG
>>455
 フーリエ変換を使う場合は
 フーリエ変換は比例軸なのに周波数は
 対数的に移動しなければいけない。
 その場合の位相を合せて(時間毎に)という事になるのだけど

その位相をあわせるのが、
やっぱり周期性と非周期性成分とでゴチャゴチャ・・まあやってみたら? 
ひょっとして解決策をキミなら思いつくかもしれないしさ
0457デフォルトの名無しさんNGNG
>>450
残念だなあ Delphiなら教えてあげたのに
0458450NGNG
>>453
シュア・ウェアの技術なんですが
エフェクトをかける周囲のデータに同じエフェクトを少し加えるという方式があります。
エフェクト制御値
加えていく(短時間)>>本来のエフェクト(通常の制御値)>>少なくしていく(短時間)

あと位相あわせが必要なようなんですが…
ちょっと、僕にはそこまではよくわからないんです。
(単純に位相差分を検出してそれを時間で分割して
 加減していくとかでしょうか?)

>>457
ありがとうございます
気持ちだけ頂いておきます。
>>452
1:サウンドプログラミングのスレッドがあると
  知らなかったのでご容赦下さい。
2:スレッドの依頼削除をすると
  ホストが公開されるようなのでそれも勘弁してください。
3:ぼくは教えを乞う側の人間ですが"お前"は非道いと思います。

確立された技術を一からプログラミングするのは
避けたかったんですが、…
…フリーエ変換のプログラム、がんばって作ってみます。
0459デフォルトの名無しさんNGNG
フリーエ変換のプログラム探せば落ちてるだろ。
俺VBだけどVB版ですら見つかったんだから。
0460デフォルトの名無しさんNGNG
>>459
わかりました、探してみます。
0461デフォルトの名無しさんNGNG
Windowsで低レベルWAV入出力を使って
入力にエフェクトかけて出力してるんだけど
 どうもサンプリング速度が微妙に違うみたい。
 遅延時間が少しずつ違ってきてしまいにバッファオーバしてポツって音が出る

で、出力を入力にケーブルでエコーバック(アナログ)して相互相関取ると
少しずつズレてくる。

サウンドカード2枚中2枚ともがその症状なんで自分のソフトのバグかと
思ったけど、知り合いのノート(DynaBook)だと問題無い

これってズレてるのが普通?
0462デフォルトの名無しさんNGNG
板違い
0463デフォルトの名無しさんNGNG
>>462 いやだって普通にサウンドカード使ってるだけの人じゃ判らないでしょ?
プログラムを作ってる人じゃないと
0464デフォルトの名無しさんNGNG
>>463
そうかも知れないが、ソフト板なんかでプログラマが見るまで我慢しろ
この板でその話題は板違いなんだよ。
0465デフォルトの名無しさんNGNG
>>464 なんだかなあ・・・ハード板でもたぶん相手されないだろうと思ってコッチに書いたのに・・・

まあでも、俺、このスレじゃレスしてる方だから、その意見無視させてもらうよ。悪いけどさ
0466デフォルトの名無しさんNGNG
無視するのは勝手だけど・・。
バグじゃないの?
転送レート時間以内に処理しきれてないとか。
0467デフォルトの名無しさんNGNG
サンプリング周波数を√(Σ2)*³-√(log2 8)KHzにしたいのですが・・・
0468デフォルトの名無しさんNGNG
つまりここのソフトヲタにはハードウェア
は理解できないと言うことだ。
あとドライバーなんかもここではNG。
0469デフォルトの名無しさんNGNG
>>466
ありがと
 バグの可能性・・・・はあるなあ、実サイズが違うのかな・・
   ただ、いつも dwBytesRecorded = dwBufferLength になってるのは確認してるし
   HDRバッファは常に等長にして3つくらい渡してるんだけどなあ・・・

転送レート内・・・それは無い筈 同時にMP3プレイヤーを動かしても異音は出ないし
0470デフォルトの名無しさんNGNG
>>467 √(Σ2)*3-√(log2 8)KHzにしたいのですが・・・

Σ2=3 log2 8 = 3 ですか?
√3*3-√3=2*√3 という事?

11.025でサンプリングして 3.5Kの急峻なLPF作ってリサンプリングしたらソフト的には
実現可能と思うけど

それとも無理数だから絶対精度は決して得られないという有り難い教えですか?
0471デフォルトの名無しさんNGNG
全然関係ないような気もするけど、デバイスでできる以外の
ことをやろうとしているとか。waveOutGetDevCapsで調べられるやつね。
0472デフォルトの名無しさんNGNG
バグではありません。
俺も録音同時再生のソフト作るけどハードウェアによって入出力のサンプリングが
ずれるのとずれないのがあります。CPU負荷が高いとずれが大きくなったりします。
ボード上にクロックジェネレーターを持ってるやつは全くずれません。
あるいはASIO環境ならOKか?
0473デフォルトの名無しさんNGNG
>>472 ありがとう。 安心したと同時に、エフェクトかける時はサンプリング速度の差を
調べて調整しなければならないという事が確定して鬱だなあ
0474472NGNG
>>473
俺の場合waveInGetPositionとwaveOutGetPositionで比較して差分をスっとばす。
当然再生がブツっていうけど、なんとかならんもんかのう。
0475デフォルトの名無しさんNGNG
>>474 そうだね 微妙なサンプリングレートの調整は面倒だね
 簡単な3点補間くらいじゃ高音の特性が酷く劣化するし
 といってn倍サンプリングしてn/2のLPFでカットしてから補間する
 まともな方法だと重いし、ただでさえ大きい遅延がより大きくなるし
0476 NGNG
コーラスエフェクトをつくってます。ノイズがのります。助けてください。
ディレイラインと、LFO(サイン波形)を使って、ディレイタイムを増減する方式です。
ディレイタイムの増減は細かく(1サンプル)で処理をしてるのにノイズがのります。
特に原音が高域ほどノイズがのります。fs=44.1Kです。
タイム変動時には、1次補完してみましたが、変わらず。
どうか、キーワードだけでもご教示ください。
よろしくおながいすます。
0477デフォルトの名無しさんNGNG
>>476 書き込んだ真上で書かれてるじゃないか
0478476NGNG
解決しますた。
1サンプル単位のディレイタイム指定ってのが悪かったみたいです。
こんなページ見つけました。
http://www.harmony-central.com/Effects/Articles/Chorus/
Implementation-Digitalの項に書いてることを実践したらうまくいきました。
ちなみに、ほかのエフェクトtipsも結構あるようです。
>>477
どれのこと?
すんまそん、DSP素人なんでまじでわからんのです。
0479デフォルトの名無しさんNGNG
このスレでいいのかわからないのですが、エコーキャンセラーってどうやるんですか?
0480デフォルトの名無しさんNGNG
>>479
だいたい こういう戦略です
1、 エコーを見つけたら消音する
2、適応フィルタで出力(スピーカ)が入力(マイク)にかえって来るのをカットする
0481デフォルトの名無しさんNGNG
今雑音の低減について勉強しています。
雑音には呈上雑音と非定常雑音があることがわかりました。
定常雑音としては、白色雑音とかがあることがわかりました。。
一方、非定常雑音の具体的な例?というのがわからず困っています。
統計的に観て、時間幅を変えると性質が変わる信号という事はわかります。
これは自分の中では「突発的の雑音」(たとえばドアの開く音とか)と
解釈しているのですが間違ってますでしょうか?
0482デフォルトの名無しさんNGNG
>>481
 目的以外の音が雑音。 別けるとしたら処理しやすさから

1、周期性雑音 ハムとかエンジン音とかレコーダのモータ音とか
2、定常雑音 サーとかザーとか
3、突発性雑音 バリバリ ガリ ドカン

 とした方がいいんじゃないの?
0483482NGNG
>>481
なるほど.そのような分け方もありますか.

私の考えでいくと,1.2は定常雑音,3が非定常雑音に
あたるものとして考えていいのでしょうか?
0484481NGNG
すいません.

>>483
の名前は481で
>>481は>>482の間違えでした.
0485デフォルトの名無しさんNGNG
age
0486デフォルトの名無しさんNGNG
8出力のサウンドカードの場合どういうプログラムになるんです?
どうしても1,2しか使えないです。
ちなみにVC++でDirectSound使ってやってみました。
0487名無しサンプリング@48kHzNGNG
「優先するデバイス」しか使えんのではないかと
0488名無し@沢村NGNG
皆様方、私はいまmidiシーケンサーに取り組んでいるところですが、
初歩的なところでつまずいているのでぜひ教えてください♪
それはmidiファイルに保存するとき、音色指定で、
32 の Guitar harmonics まではプレイヤーで聞いてみると音が出るのですが、
33 の Acoustic Bass 以降の音は出ないのですよ。
バイナリエディタで開いてみると、33 の Acoustic Bass 以降の音を指定した場合、
どうもファイルがこわれているようなのですよ…?
皆様方、これは一体どういうことなのでしょうか?
32 の Guitar harmonics までと33 の Acoustic Bass 以降とでは音色の指定の仕方が違うのでしょうか?
ちなみにMidiOutShortMessageでは同じように指定して同じように音が出るのですが…?
ぜひ教えてください!!
0489デフォルトの名無しさんNGNG
>>488
Win32APIスレの458以降に同じ質問があるので、その回答を参考にしてください。
http://pc3.2ch.net/test/read.cgi/tech/1032548635/458-
0490デフォルトの名無しさんNGNG
>>488はコピペか。
0491デフォルトの名無しさんNGNG
そもそもSMFなんかどうなんかもわからんが、
ファイルが壊れてるってのが本当なら誰も教えられないよ。
自分で作ったPGなら、自分で1ステップずつ追えば幸せになれるでしょう。
変なバンクセレクトで、PGチェンジを受け付けてないなんて事はない?。。。だろね
0492デフォルトの名無しさんNGNG
http://pc3.2ch.net/test/read.cgi/dtm/988757769/
このスレ(・θ・)イイ!!
0493デフォルトの名無しさんNGNG

  ∧,,∧   ツマナサスギテ
 ミ;゚Д゚ミつ 背筋寒くなりました
0494デフォルトの名無しさんNGNG
sinc関数(sin(x)/x)の補間についえ教えてください。
sinc関数でどうやったら補間ができるんですか?
線形補間や、スプライン、多項式ならイメージあるんですけど、
sinc関数をどう適用すれば補間になるのか、さっぱりわかりません。
WEBで結構調べたんだけど、どうも理解できません。
よろしくおねがいします。
0495デフォルトの名無しさんNGNG
複数のリニアPCMを合成するのって、
それぞれの重なるフレームを単純に加算して、リミッタかければいいの?
a,b,cが16bitPCMの1フレームだとしたら

x=a+b+c
if(x>32767) x=32767
if(x<-32767) x=-32767

みたいな処理でいいのかなあ。
0496名無しサンプリング@48kHzNGNG
>>495
OKです。
ツッコミいれとくと
-32768 〜 32767でないかな?
フレームって何じゃ?サンプルとかワードとかっていわないか?
0497名無し@沢村NGNG
皆々様方〜、自分は先日ここで
「33 の Acoustic Bass 以降の音を指定すると、プログラムチェンジがピッチベンドに変わって、それ以降のノートオンオフがメチャクチになるかわからんのよ」
という質問を発しましたが、無事解決をばいたしましたので、ご報告をば申し上げます。
というもの皆々様方、自分はファイルに書き込むとき、プログラムチェンジのCnに楽器ナンバーを足した2バイト分をいっぺんに書き込んでいたのであります。
この足しかたがどうもうまくなかったみたいで、楽器ナンバーが16ふえるごとにプログラムチェンジがチャンネルプレッシャーにかわり、
チャンネルプレッシャーがピッチベンドにかわりとなっていたのであります。
そこで自分は2バイトいっぺんに書き込むのをやめ、1バイトづつわけて書き込んだとたん、
ちゃんと音がでたというわけであります♪
0498486NGNG
>>487
優先するデバイスはMultichannelってやつですけど、これでもだめなんですかね?
0499名無しサンプリング@48kHzNGNG
俺が前作ったのはDX3+VBだったのでなんか知らんができなかったけど
DX8調べるとやっぱできるかも・・。
DirectSoundCreateのguidにGUID文字列のアドレスかな?
デバイスを列挙する方法がありそうに書いてある・・。
VBだとDirectSoundEnum8.GetGuid(Index)だって。
0500デフォルトの名無しさんNGNG
今、音声認識のプログラムを作っているのですが、
WAVEファイルからデータを取り出し、FFTをして
スペクトル表示してグラフをだし、第一ホルマントは出したのですが、
第2ホルマントをうまい具合に決めて出せません。
誰かアドバイスおねがいします。
0501デフォルトの名無しさんNGNG
>>500
FFTしたなら無理にフォルマントに別ける必要はないという発想で行ったら?
0502デフォルトの名無しさんNGNG
>>501
音声認識ならフォルマンとにわけたほうがいいでしょ
0503デフォルトの名無しさんNGNG
なぜ?前段で別けてしまうと子音と母音の認識が必要になる。
そういう方法もあるけど、 少なくとも>>500のような質問の仕方だとそのレベルにはないだろ。
その前に周波数情報のまま処理する方法で基礎や勘を養え
0504デフォルトの名無しさんNGNG
>>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関数に窓関数をかけて範囲限定するなり工夫して。
0505名無し@沢村NGNG
皆々様方〜、MIDIシーケンサーつくっててまたいきずまってることが出てきたので、ひとつ教えてくださらぬか〜、皆々様方〜♪
それはMIDIシーケンサーの編集画面の中で「拍子」をいろいろ設定できるようにしたいわけよ。
「拍子」というのは、3/4拍子とか4/4拍子とかいうあれな。
だが、この「拍子」という概念がMIDI以前の音楽的にピンとこなくてな…。
3/4拍子が一小節の中に4分音譜が3個分で、4/4拍子が4分音譜が4個分ということくらいはわかるのだが…。
だがこの「小節」という概念もよくわからんのよ…。
たとえば4/4拍子の音楽だって4分音譜が3個分のところで区切って考えて3/4拍子というふうにこじつけても曲の出来自体は変わらんだろ?
だからそう考えると「拍子」とか「小節」というものにどういう意味があるのかわからんのよ…。
皆々様方はわかりますか?
またSMFのメッセージの中に「拍子」を表現するパラメータがあるかどうかさがしたんだけど、どうも見つからんのよ。
そもそもSMFには「拍子」や「小節」を表現するものが存在するのかどうか?
皆々様方〜MIDIシーケンサーで「拍子」を設定するようにするにはどうしたらいい?
編集画面の「小節」の区切りの長さを帰るだけでいいの?そうすると作成する曲には何の影響も与えないことになると思うけど…。
皆々様方〜、そこんとこの疑問を教えてください〜お願いします♪
0506デフォルトの名無しさんNGNG
MIDIシーケンサー誰か作れる?
http://pc3.2ch.net/test/read.cgi/tech/1005053427/682
0507494NGNG
>>504
ベリーサンクス。
すごくよくわかりましたよ。
畳こみ演算みたいな事をするのか。
窓の大きさがキーですね。
0508デフォルトの名無しさんNGNG
>>101
ACIDはループのテンポ補正、ピッチ補正を自動でやってくれるループサンプルプレイバッカーって感じ。
やりたいのはこういう↓ソフト?
http://www.traktor-dj.jp/
0509デフォルトの名無しさんNGNG
>>505
>>編集画面の「小節」の区切りの長さを帰るだけでいいの?そうすると作成する曲には何の影響も与えないことになると思うけど…。
それでイインジャネーノ?たとえば3/4と6/8と9/12の違いとか人それぞれ主張があるだろうし、
直感的に解るには音楽沢山聴くしかないねぇ。
0510名無し@沢村NGNG
皆々様方〜また教えてくだされ〜♪
自分は現在リズム音に取り組んでいるのですよ。
ところがリズム音をmidiファイルに保存してそれを開いて聞いてみると、音が出ないんです。
自分はまたデータが変になってるんじゃないかと思ってバイナリエディタで開いて調べてみると、ちゃんとデータは間違いなく保存できてるんですよ。
それで何故音が出ないのでしょうか?
ちなみにこのファイルに普通の楽器音を追加してやると、前に保存したリズム音もちゃんと鳴り出すんですよ。
皆々様方〜、これは一体どういうことでしょうか?
何故、リズム音だけでは音が出ずに楽器音を追加してやると音が出るんでしょうか?
普通に考えるとリズム音だけでも音が出るはずで、自分はどこかにミスがあると思うのですが…?
皆々様方〜、自分はどこが間違っているのか教えてください〜!!お願いします!!
0511デフォルトの名無しさんNGNG
DTM板に逝け馬鹿
0512デフォルトの名無しさんNGNG
DTM板に来られても困るYO!
0513デフォルトの名無しさんNGNG
行き場を失い泣きたい気分の名無し@沢村なのであった
0514デフォルトの名無しさんNGNG
>>511
ほらぁ、本当に向こうでスレ立てちまったじゃねえか。
こういうヤツは天然なんだから迷惑な誘導しないでくれ。
0515名無しサンプリング@48kHzNGNG
この流れ秀逸ですな。
知的な良スレだったのに・・。
0516ドシロウトNGNG
最近ちまたで「速聴」とかいうものをよく見かけるのですが、アナログテープを高速で
ぶん回すのならともかくCDなどのある決まった周波数でサンプリングされたものを
4倍速で再生するという処理はどうやって実現されているのでしょうか。
サンプリングしたデータを間引いたりしたら原音の高速再生だと認識すること自体が困難に
なりそうな気もしますし…
それとも単位時間あたりに4倍のデータを流し込める専用のハードウェアなのでしょうか。
0517デフォルトの名無しさんNGNG
CDが 44.1*4KHz (176.4KHz) でサンプリングされてる
とみて再生すれば高速再生になる。データを間引くのは
その高速再生されている音声をもとのピッチで再生
しようとしたときだけ。むしろ、4倍速なんてぜんぜん
聞き取れない予感。WinAmpのプラグインであるから
いちどきいてみるといい。
0518デフォルトの名無しさんNGNG
>>516
4倍速CD-ROMドライブを使え。
0519デフォルトの名無しさんNGNG
>>516
11kHzサンプリングで録音した物を4倍速してんじゃねーか?
3.4kHz以上を再生できるから、聞き取れない事もないと思う。
…まぁ、やってみないと分からんけど。
0520デフォルトの名無しさんNGNG
速聴って何かと思ったけど、あのいかがわしい奴でしょ?
雑誌の裏表紙に載っているような。
適当にサイト見つけて聞いてみたけど、普通のタイムストレッチだよ。
ピッチは変わってない。
0521名無しサンプリング@48kHzNGNG
その機械をバカ高く売ってるみたいね。
そういうソフトを安く作ったりしたら怒られるかな。
0522デフォルトの名無しさんNGNG
俺が見たサイトでは、トップページに

 「 類 似 品 に ご 注 意 く だ さ い 」

との警告をgifアニメで点滅させてたから、多分怒られると思うYO!
ていうか、安くも何も、騙しのテクニックが無いと売れないと思われ。
0523名無しサンプリング@48kHzNGNG
いやだから騙すのは本家に任せてさ。
実際高くて買えないから作れんかという話をされたことがある。

機械でやるんならCDプレイヤーにDSP積んでとか大変だけどソフトならリッピングしてストレッチしてバッファに送ればいいんだもんね。


0524名無しさん@お腹いっぱい。NGNG
ナポレオンヒルのお言葉じゃないと速聴しても意味ないんじゃない?
http://www.ssi-co.co.jp/napoleonhill/top.html
というかシェアウェアで出せば売れると見た(w
おれ、これ聞いたことあるけどただ単に自己啓発プログラムの朗読を
4倍速で聞くだけだからね。

ちなみに英語の早口ニュースなんかをヒアリングするのとは
なにか違うのかな?おれにはこっちの方がよっぽど能力活性化して
英語力もアップしていいと思うのだが。。。

シェア作るひとは気をつけてネ。かなりあやしく、
そしてしつこい営業やってるところだから。
スレ汚しスマソ。
0525ドシロウトNGNG
えと、まずは沢山のレスポンスありがとうございます。
当方この分野には明るくないので基本から勉強したいと思うのですが、サウンドプログラミングの
バイブル的な存在のものはあるのでしょうか。
タイムストレッチという処理が具体的にどんなものなのかとか興味があるので。

できれば特定のプラットフォームに依存しない書籍だと嬉しいです。
0526デフォルトの名無しさんNGNG

http://www.amazon.co.jp/exec/obidos/ASIN/4501532106/
http://www.amazon.co.jp/exec/obidos/ASIN/4320029429/


プラットフォームに依存する本
http://www.amazon.co.jp/exec/obidos/ASIN/4798100188/

0527ドシロウトNGNG
早速の情報提供ありがとうございます。
結構お値段がはるようですが自分への投資と思って購入してみようと思います。
0528デフォルトの名無しさんNGNG
フィルターの周波数特性を出すにはどのようにすればよいのですか?
H(z)からH(w)にするあたりでつまずいてます。
プラグイン等でグラフィック表示されてますが、上記の方法でよいのですかね?
それとももっと簡単に特性図をだせたりするのですか?
0529デフォルトの名無しさんNGNG
>>528 とりあえず 同じ質問が >>440-446 あるからそれで判らない部分を聞いて
0530デフォルトの名無しさんNGNG
Z=e(jwt)
で置いた時に
Z(-1) -> e(-jwt) = cos(jwt) - jSin(jwt)
Z(-2) -> e(-2jwt) = ?
Z(-3) -> e(-3wt) = ?
って感じです。
0531デフォルトの名無しさんNGNG
>>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)
0532デフォルトの名無しさんNGNG
ああ、もしかして、jwtのj を虚数記号に使ってるなら
>Z(-1) -> e(-jwt) = cos(jwt) - jSin(jwt)
これからして間違いだ。

Z(-1) -> e(-jwt) = cos(wt) - jSin(wt)

で、wt が一つの変数じゃなくて w*t で tが時間を意味してるなら、それも間違い。
0533デフォルトの名無しさんNGNG
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
になりますよね
ここからなんで上記まできれいにきえてしますのですか?
0534デフォルトの名無しさんNGNG
>>533
だから、先に数学勉強しろって言われただろ?
最初の式はゲインを求めたもの 後の式は、位相+ゲインの式

周波数軸上の複素数だから、l絶対値がゲインで、位相が位相
0535デフォルトの名無しさんNGNG
サンプリング定理にはずれないようにね。
0536デフォルトの名無しさんNGNG
んな簡単に死んだからといって切り捨てるの?
0537デフォルトの名無しさんNGNG
でもそれでキーコンや速度変更が可能なのがいいね
0538デフォルトの名無しさんNGNG
↑mailto:tnn
0539デフォルトの名無しさんNGNG
ASIOSDKの解説書のような物はないですか?
0540デフォルトの名無しさんNGNG
0541デフォルトの名無しさんNGNG
0542デフォルトの名無しさんNGNG
0543デフォルトの名無しさんNGNG
 
0544デフォルトの名無しさんNGNG
良スレだな
0545デフォルトの名無しさんNGNG
各種音楽ファイルのフォーマットに関してお聞きします。

waveファイルの中身をバイナリエディター等でみると
必ず"RIFF"から始まると思います。

oggファイルやmp3ファイルもこのような何か特定の文字列
で始まるのでしょうか?

なんでこんな事を聞くかといいますと一つのファイルに固めてある(主にゲーム)
から音楽ファイルだけを抽出するときに特定の文字列で始まっているならばそれを
目印に音楽ファイルだけを抽出出来るからです。

ちなみに終わりは特定の文字列とか決まっているのでしょうか?
0546デフォルトの名無しさんNGNG
抽出したいならファイルのフォーマット調べるのは当たり前でしょ
検索しる
0547名無し@沢村NGNG
皆々様方〜、とくMIDIシーケンサーでポートの設定で「Rolland」とか「yamaha」に設定する機能がついているよな?
この機能がついていないMIDIシーケンサーは皆無に等しかったりする…。
で、まずこの「Rolland」とか「yamaha」に設定していないと「再生」ボタンを押しても音が出ないようになっている。
だが、俺のMIDIシーケンサーではこの設定機能はついていないが、音が出るよ。
皆々様方〜、これは一体どういうことかな?
自分のマシンではよく使っていから音が出るが、俺のMIDIシーケンサーを他のマシンにインストールして鳴らしたら音が出ないのかな?
そもそもこの「設定」は必要なのですか?
皆々様方〜、教えてくだされ〜♪
0548デフォルトの名無しさんNGNG
またコピペか
0549545NGNG
>>546
バイナリエディタでoggファイルみてみました。
みんな”ogg”で始まっていました。(←あっけない…)
そんなもんものなのでしょうか?
0550デフォルトの名無しさんNGNG
>>549
そこでなんでWeb上に公開されているであろうOggのファイルフォーマット仕様を調べる、
という方向にいかないのか疑問なんだが。

ちなみにmp3に関してはファイルフォーマット自体存在しない。
0551545NGNG
う〜ん、"OggS"から次の"OggS"が始まるまでをバイナリエディターで切り出して
oggファイルとして保存してみたけどうまく再生されない…
waveファイルの時はうまくいったのに…
0552デフォルトの名無しさんNGNG
ネタだ
0553デフォルトの名無しさんNGNG
ああ、ネタだな。
0554545NGNG
ネタでわざわざこんなスレまで来ないって!
う〜ん、もしかしたらこのゲームでは特殊なフォーマット
(oggと見せかけて一部をちょこっと変更した特殊な形式)が使われている
可能性もあるのかなぁ…

でもゲームのディレクトリに
ogg.dll
vorbis.dll
があるからogg汎用フォーマットのような気もするし…なぞだ。
0555661NGNG
ちょっとスレ違いかもしれませんが・・・

MMC-3を使って音楽CDの情報を得たいとおもっています。
そこで1トラック分の曲の長さを知りたいのですが
どのようにすればよいのでしょうか?

READ TOC/PMA/ATIPコマンドで曲のスタート時間は
得ることが出来ています。
0556デフォルトの名無しさんNGNG
質問です

wavとかaiffとかmp3のプロパティを参照したい場合はどうするのが簡単?
たとえば再生周波数、チャンネル、bit情報などなど。

GUIではなく、コマンド実行でプロンプトに情報表示されるようなやつつくりたいんだけどなぁ。
0557デフォルトの名無しさんNGNG
unix方面にコンバーターがあったと思った
0558デフォルトの名無しさんNGNG
>>556
mp3はフレームヘッダ見ればその手の情報が書いてある。
後は知らんが、ファイルフォーマット調べれば出てくるだろ。
0559デフォルトの名無しさんNGNG
wav は先頭の何バイトか見るだけ mp3は先頭から特定のパターンが出るまで調べてゆく
ttp://www.kk.iij4u.or.jp/~kondo/wave/
ttp://nagasm.suac.net/ASL/sound05/
0560デフォルトの名無しさんNGNG
>>557-559

ありがとうございます。
0561IP記録実験NGNG
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を提出することがある。
0562デフォルトの名無しさんNGNG
>>571
j-comいつやめる?
どうしようか考えてるんだけど
0563デフォルトの名無しさんNGNG
>>326
お前の成長記録
0564デフォルトの名無しさんNGNG
コピペ荒らしは自分の巣に戻れ↓
http://qb.2ch.net/test/read.cgi/accuse/1041218318/

つうか、早速正体暴かれかけとるけどw
0565デフォルトの名無しさんNGNG
>>335
+でもそれ言ってただろ?
0566デフォルトの名無しさんNGNG
>単純に鯖の負担は2倍

閉鎖
0567デフォルトの名無しさんNGNG
======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
────────────────────────────
0568デフォルトの名無しさんNGNG
>>725
で、板潰しの粘着荒らしさんを
規制して貰えると助かるっす。
0569デフォルトの名無しさんNGNG
ウルトラマンコスモス
0570デフォルトの名無しさんNGNG
けんすうさん。

痛々しい事はいいです(ていうか見てるこっちが辛い)

 今用件を伝えますから電話しましょう。
 ずばっと出て下さい

 度量の小さい人は無理だろ、か。
0571デフォルトの名無しさんNGNG
>>148
へぇー、結構多いね
0572デフォルトの名無しさんNGNG
>>499
400万ぽっきりで済むなら話は早い。しかし、訴訟はこれ一つではない。
0573デフォルトの名無しさんNGNG
> えっと、何度同じ事を言わせればいいのか知りませんが。。。

>削除○さんが判断した時点ではコピペは確か2つ。
>単文ですし、他の方も確実にスルーでしょう。削除対象≠削除です。
>私が判断した時点で4つに増えたので、私が削除しました。
>ひょっとしたらそれでも人によっては削除されないかもです。

>また、消さない事による判断ミスということは相当なことがない限りありません。
>その辺は2ちゃんねるの削除の仕組みについて運営板をお調べになれば宜しいかと。

削除対象≠削除 だそうです2chは 裁判検討してる方は良くメモっときましょう
0574デフォルトの名無しさんNGNG
過去スレ読んでないけどヤフーでさえ毎日圧縮して50Gなんだよね。
2ちゃんはどうかんりするのやら
http://internet.watch.impress.co.jp/www/article/2002/1224/yahoo.htm
0575デフォルトの名無しさんNGNG
糞スレ立てたやつもIP抜かれてアク禁
串使っても意味なし
0576デフォルトの名無しさんNGNG
>復帰人さんでしたらICQぐらい持っていると思いますが
えー?当たり前なのー?
水面下でやる必然性が全く理解不能なんですけど。
0577デフォルトの名無しさんNGNG

神社・仏閣
0578デフォルトの名無しさんNGNG
>>359
犯罪系かキタ━━━(゚∀゚)━━━!!かな?
0579デフォルトの名無しさんNGNG
管理人も不本意ではあるだろうが今回はやむを得ないですね
『閉鎖』よりは全然マシです。
別にそんなに困らないし…OKよ�
0580デフォルトの名無しさんNGNG
(^^)
0581デフォルトの名無しさんNGNG
例えば企業が出してる商品の噂話とかも名誉毀損とかなるんでしょうか
むなしいですね
0582デフォルトの名無しさんNGNG
 名誉毀損罪って、例えば、政治家Aは、隠しているけど実は大学の
成績がビリだった(そして事実)、とかいうことでしょうか。
0583デフォルトの名無しさんNGNG
======2==C==H======================================================

         2ちゃんねるのお勧めな話題と
     ネットでの面白い出来事を配送したいと思ってます。。。

===============================読者数: 139038人 発行日:2003/1/10

なにやら、連日メルマガだしてるひろゆきです。

そんなわけで、ログ記録実験ですが、いちいちサーバ指定するのが面倒なので、
全部のサーバに入れてみました。

重くなって落ちたりしてもご愛嬌ってことで。。。

んじゃ!

────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50
────────────────────────────
0584デフォルトの名無しさんNGNG

      言いたいことも言えないこんな世の中じゃ
0585デフォルトの名無しさんNGNG
(^^)
0586デフォルトの名無しさんNGNG
さろゆきが自作自演してるな、、
自作ラジコン
0587デフォルトの名無しさんNGNG
動機は、酔狂とモノグサと惰性。
0588デフォルトの名無しさんNGNG
残念ながら、2chは匿名性以外にも存在価値ができてしまったインターネットです。
0589デフォルトの名無しさんNGNG
IP記録実験
http://qb.2ch.net/test/read.cgi/accuse/1042013605/

1 名前:ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日:03/01/08 17:13 ID:???
そんなわけで、qbサーバでIPの記録実験をはじめましたー。
0590デフォルトの名無しさんNGNG
記念牡蠣粉
0591デフォルトの名無しさんNGNG
質の低い=情報価値のない書き込みはいらん
というのがこの掲示板の管理者の方針
そういう書き込みが出来ない奴は来なければいい
ということなのではないか
0592デフォルトの名無しさんNGNG
おれも
0593デフォルトの名無しさんNGNG
 
 つまらんよ、そこ。
0594デフォルトの名無しさんNGNG
すごい釣り師だよな
0595デフォルトの名無しさんNGNG
渋谷の若者200人に「2ちゃんねるを知ってますか?」「モナーを知ってますか?」

と質問したところ、
知っていると答えた人
0人。
この結果をどう考える?運営の人。。
0596デフォルトの名無しさんNGNG
(・∀・)?
0597デフォルトの名無しさんNGNG
(620)
なぜ 2ch 利用者でもない者が 2ch の削除ルールを守らなくてはならないの?

>ちゃんと削除依頼のルールを守って待てばいいだけの事じゃん
キミの脳内では
(現行法での)合法的な抗議方法としての内容証明つき郵便よりも
ローカルルールに過ぎない 2ch 削除ルールが優先されているようだな。
頭、悪いよ。
0598山崎渉NGNG
(^^)
0599デフォルトの名無しさんNGNG
4nd…… ラウンジの「ラウンジ恋愛部」かとおもた
0600山崎渉NGNG
(^^)
0601デフォルトの名無しさんNGNG
Waveの波形データから音量をデシベル単位で求めるにはどのようにすればよいですか?
0602デフォルトの名無しさんNGNG
どっかで答えた質問だと思ったら >>322 のコピペだったか
0603デフォルトの名無しさんNGNG
ソフトウェアでイコライザとかコンプとかやりたいのでいい資料URLとか教えて下さい
0604デフォルトの名無しさんNGNG
>>603

VST プラグインのソースを書いたり読んだりするのがいいんでないか
0605デフォルトの名無しさんNGNG
とあるサイトにあった簡単なコンプレッサーのコードを試して試してみたら
うまく行きません。
どこが、おかしいでしょうか?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)
}
0606605NGNG
あらら。すいません。
× コンプレッサー
○ Compression
× 試して試して
0607デフォルトの名無しさんNGNG
> うまく行きません。

どううまくいかなかったのか書けないようなバカは来るな
0608デフォルトの名無しさんNGNG
俺が思うにコンパイルエラーだなw
サウンドプログラミングはまだ君にははやそうだ。
0609605NGNG
>>607
おお!
現象としては全く音がしないのです。

>>608
公式自体は合っているってことですか?それなら安心しました。
書き直してみます。 
0610デフォルトの名無しさんNGNG
セミコロンないよと釣られてみる
0611デフォルトの名無しさんNGNG
パソコンのマイク端子を使って録音するプログラムが書ければいいのになぁと
思っているのですが、とっかかり程度で良いので教えていただけないでしょうか?
0612デフォルトの名無しさんNGNG
つーか、言語機能にpowerが組み込まれてる
言語が存在するわけもなく。
matlabとかは大丈夫なのか・・・
0613デフォルトの名無しさんNGNG
>>611
windowsAPIを調べましょう
0614デフォルトの名無しさんNGNG
>>612
** で power な言語はあるよ。
0615デフォルトの名無しさんNGNG
>>611
録音は簡単ですね。WaveInとかMCIとかDirectSoundCaptureとかで。

ミキサーで録音ソースを指定するのが俺できんのだが。
サウンドカードによってラインの順が違ったりするんよ。
あと録音ソースを複数同時選択できるタイプのミキサーもできん。
誰かわかる?
0616デフォルトの名無しさんNGNG
>>615
ミキサーのコントロールは諦めて Mixerを表示させてるよ。
ただ、現在の設定保存だけでも出来ればと思ってるんだが

mixerGetControlDetailsしてmixerSetControlDetails
すりゃいいんだろうけど、

出来れば
Enabele = True
Volume = 95.5
Balance =0
みたいな文字列でそのコントロールの全部の設定が読めて
一部が書き出しが出来ればいいのに

0617デフォルトの名無しさんNGNG
FFTを利用したスペアナを解説している
良いホームページがあれば、教えてください。
0618デフォルトの名無しさんNGNG
>>617
そおいったソフトでソース付のがあったから見つけれ。
0619デフォルトの名無しさんNGNG
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になんだろ。音でねぇよな、そりゃ。
0620デフォルトの名無しさんNGNG
型の問題もあるが(万全を期するなら整数を全部キャストしたほうがいいと思われ)

 ^ ←が本当にべき乗の演算子なのかが一番不安なのだが。
C/C++だとコンパイルエラー吐いてくれないので(XORになって)、
俺もデバッグに苦労したことがあるyo。
0621デフォルトの名無しさんNGNG
>>620
そうだね、pow使わないとね。
0622デフォルトの名無しさんNGNG
ハットで羃乗になる言語って何?
0623デフォルトの名無しさんNGNG
>>622
BASICがそうじゃなかったっけ?
0624605NGNG
やべぇ ^ は XORかと思って(コンパイラーにも怒られて) int にキャストしてた・・(汗
powに置き換えたら解決しました。 みなさんサンクス!
0625デフォルトの名無しさんNGNG
どんな分野のプログラミングでも、
コンパイルエラーの回避にキャストをする香具師は逝ってよし。
0626デフォルトの名無しさんNGNG
>>625
javaで
float f = (float)10.245;
はOK?
0627デフォルトの名無しさんNGNG
>>626
Javaって、floatリテラル表記ないのかと思ったじゃん。
10.245F

「読まれるかもしれん」という立場で書くのなら、
数値計算でcast使うのは、なんか特殊なことをしてるのか?と
思われるので、cast使わずに表記できるのなら、そちらを使う方がベター
0628デフォルトの名無しさんNGNG
AppleがiTunesの拡張プラグインに公開停止要請
http://slashdot.jp/mac/03/01/20/0610228.shtml?topic=11
--
公開APIの使用目的をAppleが規定するといわんばかりだ。
あちこちでオープンソースを強調しているAppleだがやはり
それはイメージ作りの為のポーズだけの模様である。
0629デフォルトの名無しさんNGNG
質問です。
「ピンクノイズ」の生成ルーチンを作りたいのですけど
指針を教えてくれませんか?

検索したのですけど生成方法についてはさっぱりでした。
0630TECHNGNG
真のピンクノイズは当然作れません。
ホワイトノイズを作って、
1、1次LPF を通し、ゲインをかける
2、2次HPFでDCカットして積分する

もちろん、どちらも、f0は非常に低くします。
0631デフォルトの名無しさんNGNG
>>630
すいません、
ホワイトノイズの作り方もわからないんです。
0632デフォルトの名無しさんNGNG
あ、ひょっとしたら

for(i = 0;i i < buf_size; ++i)buf[i] = rand() % DEPTH;

でホワイトノイズつくれちゃったりします?
0633デフォルトの名無しさんNGNG
>>628
マッカーだけど、あぽーはもういいよ
あんな横暴で自分本意な会社は迷惑です
0634TECHNGNG
>>632
基本はそれでもいいと思う、ただ、それだと直流が加算されるから、
0635デフォルトの名無しさんNGNG
>>627
じゃぁ、
byte b = (byte)128は?
0636デフォルトの名無しさんNGNG
Final Fantasy 7,8,9は何を使っているのですか?
0637デフォルトの名無しさんNGNG
PS内蔵音源とちゃうの。
0638デフォルトの名無しさんNGNG
Win版8はDirectMusic+DLSbyXG
ttp://www.yamaha.co.jp/news/1999/99122401.html
0639山崎渉NGNG
(^^)
0640デフォルトの名無しさんNGNG
MLDをWindowsで鳴らすにはどうするの?
参考になるサンプルとかどっかにない?
0641デフォルトの名無しさんNGNG
おまえら、馬鹿? 答えろよ。
0642デフォルトの名無しさんNGNG
サンプルはないです。
WindowsAPIを使うといいです。
0643デフォルトの名無しさんNGNG
そりゃそうだ。
0644デフォルトの名無しさんNGNG
>>640
ベクターで出来上がり品を拾って来い
0645デフォルトの名無しさんNGNG
低レベルオーディオのプログラミングしようかと資料探したんだけれどあんまり
ないね。
何処かに無い?
無かったら俺が書いて何処かにアップしとこうかなと思ったんだけど。
0646デフォルトの名無しさんNGNG
>>645
Do it.
0647デフォルトの名無しさんNGNG
>>646
英語だったら死ぬほどころがってるけど、、、
0648645NGNG
基本的な所の資料って無いね。俺はWindows上での低レベルオーディオのプログラミング
したくて調べたんだけど、MSDN Onlineだと関数のリファレンスだけしかない。
Win32APIの分厚い本とかも買おうかと思ったけど読んだらあまり詳しくは書いて無いので
やめた。
例えばwaveOutOpenとかどう使うかとか、デバイスの状態を知る為にウィンドウ
メッセージを受け取るとか、いやコールバック使う方法もあるとか、構造体にある
デバイスのメーカーID一覧表とか、そんなの書いてある所見た事ねぇよ。
0649デフォルトの名無しさんNGNG
>>7の本は読んでみましたか?
低レベルAPIのことしか書いてありませんよ〜。

そんなわけで、
MCIを使わずに低レベルAPIを使うメリットなどがわからないままです。
ここで質問しちゃいます。
どうしてでしょう?
0650645NGNG
バカかよ。MCI使ってて不満に思った事ねーのかよ。
あんな糞ウンコMCIなんか貧弱すぎだろ。
0651645NGNG
せめて、「DirectSound使ってるんだけど、低レベルAPIを使うメリット・・・」
位書けや。
0652デフォルトの名無しさんNGNG
>>645様
はいはい、旦那様が一番でございます。旦那様は天才でございます。
旦那様以外はカスでクズでございます。
0653デフォルトの名無しさんNGNG
>>645
探し方が悪いか、英語が読めないかどっちかだろ、おまえ(w
0654649NGNG
すげー怒られてる(笑

たしかに誤解されやすい文章でした。申し訳ない。
このあいだからプログラムの勉強をはじめて、>>7の本を買ったばかりなんですよ。

その本にはMCIについてまったく書かれていなく、
MCIの知識がない俺はちょっと不安になってしまったわけです。
それぞれの長所・短所などの情報も皆無でしたので、
どちらを勉強するべきなのか教えてください♪というレスでした。
0655654NGNG
怒られはしましたが、
「MCIは低レベルAPIに比べて貧弱」という、
気になっていた情報を知ることができました。
感謝です♪
それさえわかれば、あの本の勉強を頑張れそう。
0656デフォルトの名無しさんNGNG
わたし、まったく音の科学について知らないのですが、ひとつやりたい事があります。
それは単純に二つのOggファイルを一つのファイルに合成したいのです。 しかも
Ruby上から、かつリアルタイムで。

こういうのはなんと言うのでしょう? 論理合成?
キーワードだけでも教えていただけないでしょうか?
0657デフォルトの名無しさんNGNG
>>656
一番簡単なのはプレイヤーを2つ別のプロセスで走らせる事かな
同期させるのは難しいかな
0658デフォルトの名無しさんNGNG
>>657
同期は確かに課題ではあるのですが、悩んでいる問題は別の所にあります。

実は、データをネットワーク経由で転送したいのです。
ここで、2つのファイルを同時に転送した場合、帯域が約二倍必要になってしまいます。
そして、そこにデータの遅延による同期の問題もあります。

なので、送信元で合成できないかなと。
0659デフォルトの名無しさんNGNG
http://www.agemasukudasai.com/bloom/
0660デフォルトの名無しさんNGNG
MODてゲームから鳴らせるの?
公式にDLLがあるってどこかにかいてあったけど、どこが公式やら。
ゲームからMODを鳴らす方法、どこかに詳しく紹介した頁ないでしょうか。
0661デフォルトの名無しさんNGNG
>>660
やる気ないでしょ?
検索エンジンでキーワードを入れれば腐るほど出るものを探そうともしない
0662デフォルトの名無しさんNGNG
多分MODplugのSDKの事だと思うけど、
ライセンスが妙だしゲームには不向きだよ。
0663デフォルトの名無しさんNGNG
それより、わざわざMODを使う理由が聞きたいぞ。
データ作ってくれる作曲者もほとんどいないだろうに。
0664デフォルトの名無しさんNGNG
>662,663
ありがとう。参考になりました。

>661
CDをプロテクトするMOD何とかの方がたくさん出てしまうのです

たしかに、今の時代MP3の方がいいですね。回線が速くなったから3
メガ4メガのゲームをDLするのも苦にならないし。
だからMOD紹介のサイトもつぎつぎ廃れてきてるのかな。

わかりました。MODは触らないでおきます。
0665デフォルトの名無しさんNGNG
周波数変えて(データを間引いて)再生するとキーンてノイズが入るんだけど
これって灰パスとかやら無いとだめ?
読み飛ばしたデータの平均値でやってみたけど変わらず
0666デフォルトの名無しさんNGNG
>>665
LPF ですね。 リサンプリング/2を70dB以上カットするようなフィルタが望ましいです。
平均値では十分なカットは出来ません。
0667665NGNG
>>666
ネットで拾ったソース見ててどうしても分からない箇所があります
FFTで
a = (int)((log(ar[i]*ar[i]+ai[i]*ai[i])*5.0-30.0)*5.0);
バタフライ演算後に、ある周波数iからその周波数成分の強さaが求まるらしいのですが
このような計算の意図はなんでしょうか?
普通に実数と虚数の絶対値の和じゃダメなんですか?
0668デフォルトの名無しさんNGNG
フーリエ変換の意味を知らないのにFFTなんて触っちゃダメ
0669665NGNG
>>668どうしてそう思うの?
0670665NGNG
(意味を知らないの方ね)
0671デフォルトの名無しさんNGNG
うーん、あれが判らないってことはリア厨あるいは高校生かな?
0672666NGNG
>>667
正確には

 log10( hypot(ar[i],ai[i]))*20-定数

です。 hypot(a,b)=√(a*a+b*b) ですから

 log10( ar[i]^2+,ai[i]^2)*10-定数

となります。

 実数と虚数の絶対値の和でダメな理由は、回転に独立でなくなる為です
 
0673665NGNG
>>672
2時間程考えてましたが下のような方法でやってるソースもあり何がなんやら
「回転に独立でなくなる」事で実際のサウンドの周波数解析に
どのような問題が出るんでしょうか?処理速度が惜しい場合は
これらの計算をはしょる事もアリですか?

// パワースペクトルを計算して代入
data[dwDataPos1].r = data[i].r * data[i].r+ data[i].i * data[i].i;
0674デフォルトの名無しさんNGNG
>670
まあ意味くらいは分かるんだろ
0675デフォルトの名無しさんNGNG
デジタルミキサーのように複数の音声信号を合成するときって
単純に足し算になるのでしょうか?
0676デフォルトの名無しさん NGNG
既出やで。
オーバーフローせんようにね。
0677デフォルトの名無しさんNGNG
0678デフォルトの名無しさんNGNG
保守
0679デフォルトの名無しさんNGNG
m d x
0680デフォルトの名無しさんNGNG
私は、日曜プログラマなのですが、
現在javaでサウンドプログラミングを初めてみようと思ってます。

そこで、色々資料をあさったところ、
http://www6.software.ibm.com/devtools/jp/news200101/art22.htm
http://java.sun.com/j2se/1.4/ja/docs/ja/guide/sound/programmer_guide/contents.html
といったところを見つけました。
他にも資料があるのを知っていると言う方がいらっしゃいましたら、
ご教授頂けると幸いです。

ただ、私としては、
まず、wavファイルを切った貼ったする程度の編集ができるようなプログラムが目標です。

あと、実はwavファイルのフォーマットを調べてみたりもしたのですが、
googleなど使ってみても見つけられませんでした。
これに関して、知っていらっしゃる方がいらしたら、
お教え頂けると幸いです。

長々と駄文を綴ってしまい申し訳ありません。
0681デフォルトの名無しさんNGNG
http://www.google.com/search?hl=en&ie=UTF-8&oe=UTF-8&q=WAVECHUNK
0682デフォルトの名無しさんNGNG
>>680
wavの構造とか考え方ですごくわかり易く解説している本がありますよ
CQ出版社の
Visual Basicで物理がわかる
音波シミュレーション入門
定価2,625円(税込) ISBN4-7898-3699-1
です。
0683682NGNG
上の本の内容説明↓
ttp://www.cqpub.co.jp/hanbai/books/36991.htm
0684680NGNG
>>681さん。
>>682さん。
どうもありがとうございました。
これでwavファイルの勉強がはじめられます。
0685デフォルトの名無しさんNGNG
WindowsのDirectXでストリーミングサウンドを使ったプログラミングしてます、
Win98では大丈夫なんですが、
Win2000だと作成したアプリケーションのウィンドウのフォーカスが
なくなると音切れしまくってしまいます…
どなたか解決法ご存知ありませんか?おねがいします。

ストリームへの書き込みは
CreateThreadで作成したスレッドから書き込んでいてスレッド優先度はhighestにしてます。
0686デフォルトの名無しさんNGNG
>>685
しるかボケ
0687デフォルトの名無しさんNGNG
>>685
本当に再生ポジションが移動しているかどうかチェックしる
0688685NGNG
>>686
>>687
ごめんなさい、Win2000再起動したらなおりました。ごめいわくおかけしますた。
0689小雪NGNG
linuxでsoundcard.hの中身ありますでしょ?
サウンドフォーマットの
AFM_S8とAFM_U8ってどう考えても逆じゃございませんのオホホホホホホホホ
0690デフォルトの名無しさんNGNG
midiシーケンスソフトを作りたいんですが、何からはじめたら、いいかわかりま
せん。プログラム言語もまったくの初心者です。これは釣っているわけではあり
ません。本気で作りたいと思っています。アドバイスお願いします。
0691デフォルトの名無しさんNGNG
>>690
まず仕様を詰める。話はそれからだ。
0692デフォルトの名無しさんNGNG
>>690
ご自身でわかっているはずでしょう?
まずはプログラム言語を使えるようになって下さい。
0693デフォルトの名無しさんNGNG
まずはMIDIシーケンサをいくつか使ってみなさい。
0694デフォルトの名無しさんNGNG
>>690
無理。いきなり高望みするのはやめよう。

つーか、専用スレ見ても思うが
MIDIシーケンサという題材には初心者を惹きつける何かがあるのか?
0695デフォルトの名無しさんNGNG
音楽畑の人が興味を持つんじゃない?
0696690NGNG
>>692
どのプログラム言語でつくれるのかわからないです・・
>>694>>695
音楽をやっている人間としては初心者ではないと思います。
>>691->>695
アドバイス ありがとうございました。まずはシーケンサを使いこなせるように
なりたいと思います。ご迷惑をおかけしました。・・・。





0697デフォルトの名無しさんNGNG
>>696
CかC++勉強汁
0698デフォルトの名無しさんNGNG
>>696
まずはMIDIシーケンサをいくつか作ってみなさい。
0699デフォルトの名無しさんNGNG
>>690
あなた自身は何が必要だと思うよ?
ここで的を得たものがいくつか挙げられれば作れる可能性があるし、
協力なりアドバイスをしてくれる人間がいるさ。
0700デフォルトの名無しさんNGNG
>>694
いきなり、というのは無理だと思うが望みを持つのはいいんじゃない?
それが何年後になるかは判らないけどすぐには無理だ、という認識があれば。

5年ほど前、プログラムや波の事も満足にしらない大学生と話ししたりメール交換なり
した事があったんだが、今ではSoundEngineなるツールを公開するにまでいたってる。
既に漏れを越され(略
0701デフォルトの名無しさんNGNG
>>699
的は射るものです。弓道のイメージで。
0702デフォルトの名無しさんNGNG
>>701
先を越されたか

>>699
得るのは当。
「当を得る」という
0703デフォルトの名無しさんNGNG
もはや的を得るはそれなりに使われているからなぁ
0704デフォルトの名無しさんNGNG
>>703
フジのバカなアナウンサーも使っていたしな
0705デフォルトの名無しさんNGNG
フジには人殺しアナウンサーがいるらしい
0706696NGNG
>>697
今日  本を買ってきました  がんばって勉強します
シーケンサ・・ XGを買ってきました・・。
がんばろ・・。
0707デフォルトの名無しさんNGNG
>>706
XGはMIDI規格であってシーケンサ名では断じてないわけで。
0708デフォルトの名無しさんNGNG
>706 がんがれ。

「MIDIシーケンサー誰か作れる?」
http://pc2.2ch.net/test/read.cgi/tech/1005053427/l50

↑もよかったら使って。私は応援する!
0709デフォルトの名無しさんNGNG
あのう、漏れも激しくプログラミング初心者で、
ゆくゆくは音楽関係のプログラムを作ってみたいんですが、
やっぱりサウンドプログラミングつったらC,C++必須ですか?

他の言語で書かれたアプリの例があったら教えて君ですいません。

今はPythonで勉強中です。
0710デフォルトの名無しさんNGNG
>>709
別にどの言語かは関係ない。
ただ、手に入りやすい、参考になるソースなどが多いのがCやC++
というのはあるかもしれない。
0711709NGNG
>>710
あ、レス付いてる。ありがとうございます。
つうか、漠然とした質問ですいませんでした。

調べたら、Pythonにも音を扱うライブラリはあるんですね...。
がんばって勉強します。

0712名前は開発中のものです。NGNG
696さんは「セガサターンエミュ作るぞ」のスレで見たような文章。
0713ageNGNG
MIDI YOKE(内部仮想結線?)みたいなものを作るのですが、質問等はこのスレで行ってよろしいでしょうか?
「サウンドプログラミング」の名の通り、波形関係の話題がメインなので躊躇しています。

「MIDI YOKE使え。」とのレスは勘弁して下さい。
0714デフォルトの名無しさんNGNG
こっちの方がいいと思う
MIDIシーケンサー誰か作れる?
http://pc2.2ch.net/test/read.cgi/tech/1005053427/l50
0715デフォルトの名無しさんNGNG
シーケンサーは違うだろ
DDKスレも機能していないしなぁ
0716デフォルトの名無しさんNGNG
スレの流れからいって、「MIDIシーケンサー(ry」の方が
適切だと漏れも思うよ。

がんばってね > >>713
0717sageNGNG
>714-716
ありがとうございました。行ってきます。

>716
はい、がんばります。
0718デフォルトの名無しさんNGNG
現状、MIDI YOKEみたいなクリティカルな良いツールが少なすぎる。
これで「コンピュータミュージック」と名乗ってよいものか。
0719デフォルトの名無しさんNGNG
そうだね。こんなこともできないの?って事が多い。
メーカー物は閉じてるし。
0720デフォルトの名無しさんNGNG
ステレオのWAVファイルをモノラルのWAVファイルに変換するのに、
左チャンネルと右チャンネルを足すだけというのを聞いたことがあるのですが、それだけで
いいのでしょうか?

Webを検索してみたんですが、該当するものが見つかりませんでした。
0721720NGNG
この場合WAVファイルと言うのは関係ないですね
0722デフォルトの名無しさんNGNG
>>720
単純に加算したらオーバーフローしちゃいますよ。
要は平均をとるわけですから、足したチャンネルの数(この場合は2)で
割ってやらないと。

あとはwavファイルの仕様を調べれば、自ずと解決するはず。
0723720NGNG
>>722

おーなるほど。 ありがとうございます。
0724山崎渉NGNG
(^^)
0725デフォルトの名無しさんNGNG
それとも自動伴奏なのかな? >ACID
0726名無し~3.EXENGNG
>>720
モノラルに変換したあとに更に処理があるなら出力精度を上げておいた方がいいかも。
16bitの2chなら最低17bit(処理的には32bit化するのが無難でせう)の1ch、みたいに。
(5+6)/2 = 5.5 さあどっちに丸めよう、となるので。
0727デフォルトの名無しさんNGNG
いっそ浮動小数にしる。
グラフィック方面でも浮動小数のピクセルフォーマットが使われ始めてるし。
0728720NGNG
>>726
>>727
追加レスありがとうございます。うーん、サウンドプログラミングは奥が深いぞ・・・
0729山崎渉NGNG
   ∧_∧
  (  ^^ )< ぬるぽ(^^)
0730デフォルトの名無しさんNGNG
そんな・・・S/N 96dB から+6dBを聞き分けられる耳持ってる人は滅多にいないよ。
まあその方が楽だけどさ、
0731デフォルトの名無しさんNGNG
ホシュ飛馬
0732デフォルトの名無しさんNGNG
>>727 浮動小数にする
誤差でそうだけど、大丈夫なのか?
0733デフォルトの名無しさんNGNG
音や画像では誤差なんて気にしない
0734デフォルトの名無しさんNGNG
>>730
再量子化誤差の問題。ディザなしで切り詰めると再量子化誤差が信号と相関性
を持ってしまい耳障りなぐらにゅらーディストーションとして聴こえてしまう
ので、ディザを使う必要がある。ステレオ足してモノにする場合も、センター
ならまだいいが特定の音源が左右どっちかに片寄ってる場合は非常に信号レベル
の低いところで耳に付く恐れがないではない。
0735デフォルトの名無しさんNGNG
まあグラニュラーディストーションもエフェクトのうちと割り切ればいーんで
ないの? ダンス系とかでローファイの雰囲気出すのに、切り詰めて盛大にグラ
ニュラーディストーションださせてなんてわざとやってると思われるCDとかあるし。
16bit+16bit->16bitじゃその手の音にはあまり効果なくて、逆に非常にSNの良い
生音源なんかでは、ごく微少レベルがちょちざらっとした感触になってしまうというnegative
な効果しかないと思う。
0736動画直リンNGNG
http://homepage.mac.com/hitomi18/
0737デフォルトの名無しさんNGNG
厨ですが、
ここではC,C++でやってる人が多いようですがJAVAの人はいますか?
最近JavaSoundの存在を知ったのですが、どうなんでしょう?
0738デフォルトの名無しさんNGNG
OGGの使い方がよく分からん
検索しても使い方書いてるサイトまだ見つかんないし
どっかにOGGを鳴らすC, C++のサンプルコードないかなぁ
0739デフォルトの名無しさんNGNG
>>738
http://www.xiph.org/ogg/vorbis/

0740デフォルトの名無しさんNGNG
>>734
ほんとに、(16bit+16bit)/2 でそこまで聞こえる耳持ってるの? すごいなあ
0741デフォルトの名無しさんNGNG
1サンプルだけ聴いて違いが解るやつなんてそうはいないとおもうけど、
誤差が積み重なって全体的に歪みが出てきたらそりゃ判るだろ。
0742デフォルトの名無しさんNGNG
とか言いつつ、ブラインドテストさせてみたら全然わからなくて恥かくヤツとか
たくさんいるけどな。
0743デフォルトの名無しさんNGNG
なぜ必死なんだろか
0744デフォルトの名無しさんNGNG
いや、そういう耳を持ってる人がいるだろう事は否定はしないけど、

まあ、ノッチフィルタで音消してノイズだけ増幅すれば別だろうけど、
素で判る人は1万人に1人じゃないのかなあ
0745デフォルトの名無しさんNGNG
データによっては問題が目立つ場合があるという話では?
0746デフォルトの名無しさんNGNG
たとえばどんなデータ?
0747デフォルトの名無しさんNGNG
低い周波数で-60dB程度のサイン波が記録されてるとか
0748デフォルトの名無しさんNGNG
聴いて自信が無かったら目でみるんだ。
そのための波形表示と周波数表示。
0749山崎渉NGNG
     ∧_∧
ピュ.ー (  ^^ ) <これからも僕を応援して下さいね(^^)。
  =〔~∪ ̄ ̄〕
  = ◎――◎                      山崎渉
0750デフォルトの名無しさんNGNG
(^^)
0751デフォルトの名無しさんNGNG
あげ
0752山崎 渉NGNG

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄
0753デフォルトの名無しさんNGNG
保守あげ
0754_NGNG
http://homepage.mac.com/hiroyuki44/
0755デフォルトの名無しさんNGNG
携帯電話の信号圧縮の仕組みを教えてください
0756デフォルトの名無しさんNGNG
G.723 G.729 G.728
PHS-G.721

http://www.ttc.or.jp/
0757デフォルトの名無しさんNGNG
(RSSのように)前方2チャンネルで3Dサウンドを鳴らしたいのですが,
どこの分野を勉強すればいいのでしょうか.
0758山崎 渉NGNG
(^^)
0759山崎 渉NGNG
    (⌒V⌒)
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。
  ⊂|    |つ
   (_)(_)                      山崎パン
0760デフォルトの名無しさんNGNG
2ちゃんねる分野
0761デフォルトの名無しさんNGNG
Emergency Blow!!
0762デフォルトの名無しさんNGNG
sageでやってどうする>> 自分
0763デフォルトの名無しさんNGNG
DirectSoundでOGGをBGMとして扱いたいです
日本語の詳しいコメント入ったソース公開してるサイト教えて下さい
一応検索していくつか見つけたけどこれはいい!というようなサイトないんですよねぇ


0764デフォルトの名無しさんNGNG
DirectX SDKのストリーミングのサンプルの、
waveのデータをバッファにコピーしている部分を、
OggVorbisのデコード処理に置き換えるだけですよよん
0765デフォルトの名無しさんNGNG
mid→waveコンバータつくってます。
でもwaveのヘッダに書き込むlengthってwaveデータ生成が終るまでわからんのですけど、これって

まずデーター部だけを一時ファイルに書き出し→そのヘッダをつけて一時ファイルを読み込んでもういちファイルをつくる

しか方法ないんですかね、なんか遅そうで。
0766デフォルトの名無しさんNGNG
そんなあなたにはfseek関数をオススメ
0767デフォルトの名無しさんNGNG
>>766
ガビソ、完全にその関数の存在忘れたよ、、、こんな初歩的なことを…
どうもサンクスです。
0768デフォルトの名無しさんNGNG
>>765
がんばれ〜、それが出来れば(ゲームの)サウンドドライバなんてへっちゃらだー
0769765NGNG
そういやサウンドドライバって具体的にどんなものことなの?
いまいちよーわからん…、今作ってるものがあれば楽につくれるのかな
0770デフォルトの名無しさんNGNG
msdrvとか?
ttp://member.nifty.ne.jp/KENJI/freedos/index.htm
0771765NGNG
やっぱDOS向けのそういうのか〜、
そういうのってハードとかわからんと絶対ムリなきが…
ていうかWindowsじゃ意味無くない?全部DirectXAPIで、、

だから768のレスがいまいちよくわからんかったり
0772デフォルトの名無しさんNGNG
ASIOっていったいどういう原理でレイテンシおさえてるんでしょ?
Windowsのタスクシステムの切り替えの周期25ms(?)は絶対に超えられないのかとおもてたら
最大0.75msまでいけるそうで…
0773デフォルトの名無しさんNGNG
フーリエ変換をちょいと勉強してみてるが


自分の頭の悪さに泣きたくなったw
0774デフォルトの名無しさんNGNG
>>773
笑ってるじゃん。
0775デフォルトの名無しさんNGNG
MIDIHDRのdwFlags、1, 2, 4, 8って感じで倍数倍数で存在するはずなのに
漏れがプログラム組むと3で返ってくる…。死にたい。
0776デフォルトの名無しさんNGNG
>>775
おいおい・・・もう少し仕様を読もう・・・
0777デフォルトの名無しさんNGNG
保守
0778デフォルトの名無しさんNGNG
アゲ代わりに

サイン波を発生する演算として良く使う演算
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)
0779デフォルトの名無しさんNGNG
サインテーブルとこの演算どっちがいいのだろう、迷う…
0780デフォルトの名無しさんNGNG
>>779
そりゃ、掛算命令の速さ次第でしょう。

もっとも、
半端な周波数を出したいとか、周波数をスムーズに変更したい場合は掛け算遅くても>>778
0781デフォルトの名無しさんNGNG
パソコンなら
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 のようにね。

で、オーバフローを監視しておけば安定に発振を続けてくれる。


0782デフォルトの名無しさんNGNG
簡単、高速動作するLPFを教えてください。データは16bit 44.1kHzです。
0783デフォルトの名無しさんNGNG
1、2次ですか?
2、f0はいくら?
3、f0は動作中に可変?
4、浮動小数点?固定小数点?

0784782NGNG
1、2次関数を使うかと言うことですか?音質にはこだわらないので、軽いのが欲しいのです。
2、f0ってカットオフ周波数ですか?16kHzあたりです。実際に聞いて後で調整します。
3,可変しません。
4,どっちでも可です。

一応、原理はこれを見て分かりました。
ttp://www.heg.co.jp/know/dsp/dsp1-3.htm
0785デフォルトの名無しさんNGNG
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
0786782NGNG
>>785
単に高音を消したいだけです。
>こんな感じでどうですか?
数字の意味が分かりません。
0787デフォルトの名無しさんNGNG
数字の意味は

配列 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フィルタが少し軽いですね
これも例が必要ですか?
0788782NGNG
>>787
ありがとうございました。しかしFIRフィルタについてすこし勉強したところ、フィルタ定数みたいなのって簡単にいじれないのですね。
FIRフィルターは断念します。
0789デフォルトの名無しさんNGNG
FIRフィルタの方が高域に限れば、同じコードで係数だけ弄れば色んな調整が出来るので
面白いのですけどね。 
といってもパソコンレベルじゃないと動的に係数調整は難しいけど
あと、FIRフィルタは位相がフラットなんで、2つのフィルタの合成が容易というのもメリットだし
自分の所では周波数特性をグラフ上でマウスでグリグリと調整出来るようにしたりしていますよ。


IIRフィルタの例が必要なら言って下さい。
軽いけど、動的(実行中に)変更が難しいタイプと、
重いけど、w,Qが独立で変更が容易なタイプ(ハシゴ型構成)があります。




0790782NGNG
結局IIRも定数みたいなのがあるんですよね。多分。
だとしたらこれも断念します。
で、>>150のHPFの周波数をもっと高くして、源信号から引けばいいかなと思ってやったら、
それらしい音になったんですがダメですか?
下の式でも全く同じ結果になってると思いますがいかかでしょう。

out += (in - out) / 1.25;
0791デフォルトの名無しさんNGNG
それは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落ちます


ところで、この周波数で差が聞けるというのは凄いですね。
0792デフォルトの名無しさんNGNG
ついでに、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より下で減衰が減り 高い所でよく減衰してくれます。
0793782NGNG
正直ゆうと音源エミュなんですが、一部の音の波形の立ち上がりが良すぎて耳につくので和らげようと言うもくろみだったんです。
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?
0794デフォルトの名無しさんNGNG
矩形波を合成するのはサイン波より何倍も難しいのですが
ガンバってるのですね。



後半の話、
ごめんなさい。
(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フィルタとなります。

0795デフォルトの名無しさんNGNG
ついでに
b と カットオフ周波数f0との関係は

w=2*PI*f0/サンプル周波数
r=tan(w/2)
b=(1-r)/(1+r)

です。 この式は 双1次変換 でアナログ1次フィルタとマッピングしたもので
高域では少しアナログと比べて性能がキツメですね。

0796782NGNG
>>794
>(1 - (-0.37))/2
分かりました。

矩形波は単純に一定間隔で、例えば音量100なら、
0→100→0→100
の様に書き込むだけです。

>>795のような式になると私には理解できましぇん。

最後に、out+=k*(in+old -2*out)は
kを調整してもっと低い周波数で使ってもいいんでしょうか?
0797デフォルトの名無しさんNGNG
>>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)が必要です 浮動小数点ならあまり注意しなくて大丈夫ですが
固定小数点だとちょっとした工夫が必要。
0798デフォルトの名無しさんNGNG
矩形波の話
 デジタル信号上では fs(サンプリング周波数)
fs/4〜fs/2 の 周波数のどんな繰り返し波もサイン波と同じものが出なければいけません

元が矩形波でも、その矩形波そのままをサンプリングしてくると折り返し雑音が発生します。
ただ、元が完全な同周期の矩形波であれば、折り返してもそれはその周期の倍音なので
雑音的に聞こえない事になりますが、
実際には、その周期の矩形波をfs/2以上をちゃんとカットしてサンプリングした音とはずいぶん
違った信号になります。

だから >>793のように
>1部の音の波形の立ち上がりが良すぎて耳につく
という事になります。

そういう意味で、矩形波を合成するのは、サイン波より数倍難しいのです。

0799デフォルトの名無しさんNGNG
Win32 APIのwaveInGetPosition()関数で、TIME_SAMPLESを指定できない
サウンドカードってあるのでしょうか?
0800782NGNG
>>797
矩形波の濁る問題は既に処理済みです。実際は波形の立ち上がり、下がりの時ひと工夫しています。

out+=k*(in+old -2*out)の式の説明、ありがとうございました。
その後調べたんですが5khz前後で使用する予定。

このたびは、色々勉強になりました、ありがとうございました。
0801デフォルトの名無しさんNGNG
質問です。
ミキサーのPanはどのように実装すべきでしょうか?

右に振ったときは、左の音量を引くだけですか?
そうするとLRをあわせたときの音量が、
Panがセンターにあるときより減ってしまう気がします。
かといって左の音量を引いた分を、右に足すと、
右に振り切った場合は、右が2倍の音量になってしまいクリップしまくります。

そもそも音量の考え方がわかってない気がしますが、
どうやって実現するものなのでしょうか?
0802デフォルトの名無しさんNGNG
>>801
用途によって色々あるとは思いますが、
オーディオ機器のバランスは主にMN型と言うボリュームが使われていて、中央で左右共に100%,
左に回すと左はそのままで右だけが減少し、右に回した時はその逆です。
左: ̄\
右:/ ̄
0803801NGNG
>>802
ありがとうございます。
実験してみたところ、その方法で違和感なさそうです。
0804デフォルトの名無しさんNGNG
>>802
そのままだと聴感上よくないので左右に振るとやや小さくなる
ようになってるDAWってなかったっけ? CUBASEかな。
0805デフォルトの名無しさんNGNG
OS X用のAU作りたいとか夢見てます。
Objective-C+Cocoaでちょっとゲームっぽいの作った事がある
程度のスキルじゃサンプルコードすら把握できない。。
Apple、もっと日本語ドキュメント整備して欲しいなぁ……。
0806デフォルトの名無しさんNGNG
AUって何?
0807デフォルトの名無しさんNGNG
KDD(ry

0808デフォルトの名無しさんNGNG
AudioUnit:
 Apple版VST/VSTi
 傘下EmagicのLogicが採用
 OSサービスなので対応がラク。
 AU対応ソフトはフリー・シェア界隈でも意外と多い
 OS X/Xcodeで開発可能
 プラグイン開発側にしてみれば日本語ドキュメントが致命的に少ない
0809デフォルトの名無しさんNGNG
インプレッサVST/VSTi
0810デフォルトの名無しさんNGNG
>>809
手を出してる香具師が少ないみたいだな。
AUプログラミング入門なんて本でも書いたら売れそうだ。
0811デフォルトの名無しさんNGNG
AUに限らずサウンドプログラミングの本は少ないからなぁ。
出版不況ですか・・・
0812デフォルトの名無しさんNGNG
プラグイン物は単価高く取れるかもしれないけど、
DTMユーザの絶対数が少ないからな。
ただでさえ少ないからwin市場=vst/vstiを狙っちまう。

ドキュメントの整備や定番本の出版なんかされて、
AUのシンプルなソフトシンセのサンプルソースとか出してくれる
先駆者がいれば乗り出す人も増えるだろうけど、フリーも増えて
にわかが金取るのは難しくなるだろうねぇ。

Xcode付属のサンプルとか説明翻訳するのも偉い手間。
少なくともDSP初心者には手が出せない臭い
0813デフォルトの名無しさんNGNG
ディレイ(20〜30ms)をサイン波のLFOで変調して
フランジャーを作ってるんですが、周期的にノイズが乗ってしまいます。
バッファー周りをどういう仕様にしたらいいのか教えてくださいm(__)m
0814デフォルトの名無しさんNGNG
バッファというよりディレイの作り方が悪いんじゃないの?
0815デフォルトの名無しさんNGNG
配列の添え字がズレてるとか?
0816デフォルトの名無しさんNGNG
8倍程度のオーバサンプリングしないと高域がノイズになるって話じゃないの?
0817デフォルトの名無しさんNGNG
>>814
いや、ディレイ自体は問題なく動作してます。
上に書いた20〜30msは10〜30msの間違いですた。コーラスにも使えるようにと。
LFOもトレモロやフィルターで動作確認済みで、その要領でディレイタイムに作用させてます。
それでそのLFOの周期に合わせてノイズが乗ってしまっているようで…。

>>816
まだオーバーサンプリングの仕方がわかってません。勉強してきます…

自分なりに調べていて「interpolation」というものが出てきたんですが、これは関係ありますか?
0818デフォルトの名無しさんNGNG
>>819
ディレイの補間のアルゴリズムが悪いんじゃないの?
どうやってるの?
0819デフォルトの名無しさんNGNG
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;

いま手元にソースが無いんですが、こんな具合です。
実はまだディレイ覚えたてで、作りが簡素杉ですか?
0820デフォルトの名無しさんNGNG
オーバーフロー/アンダーフローしてるだけとかじゃないの?
0821デフォルトの名無しさんNGNG
1からコード全部書き直したら難なく動作しました!ギュインギュイン言ってます!
まだどこが悪かったか見直ししてないんですけど
おそらくスケーリングか何かのイージーミスかと…_| ̄|○
お騒がせしてスミマセンでした!
0822デフォルトの名無しさんNGNG
>>819

たぶん サンプルレート/8〜サンプルレート/2の高い周波数成分が入っていると、
それじゃノイズが出ると思うよ。
0823デフォルトの名無しさんNGNG
たしかに音源ソースを変えると前回とはまた別のノイズが乗ってます。
これはLPFで対処するのでしょうか?
0824デフォルトの名無しさんNGNG
高い周波数が入っていると、どうしてノイズが出るか判る?

それがわかれば高い周波数でもノイズを出さない方法も判ると思うよ。

それが判らないなら ディレイの入力にLPFを入れるしかないね。
0825デフォルトの名無しさんNGNG
増幅されてエイリアシングノイズになるからオーバーサンプリングしる!ということではないんですか?
とりあえず自分で書いてたinterpolationを見様見真似で載せてみたところ
幾分モジュレーションが滑らかになったような気がするけど、コーラスはまだノイズが気になります
0826デフォルトの名無しさんNGNG
補間のやりかたは?

簡単な補間だと、中間位置は (D[i] + D[i+1] )/2 で ピッタシの位置では D[i] になってしまう。

これでは、 中間位置は (1+Z)/2 そうでない時には Z となって高域はハイカットされたりされなかったりで
グチャグチャになる。

中間位置でも ピッタシの位置でも出来るだけ同じ特性でなければいけない。
0827デフォルトの名無しさんNGNG
はじめまして
無音の検知をしたいのですが
良い方法ないでしょうか?
周波数求めて人間の声を判断するのが最適でしょうか?
0828デフォルトの名無しさんNGNG
wave音声の複数のチャンネルを合成して
(つまり1チャンネルにして)出力したいんですが、
アルゴリズムとか紹介されてるサイトはないでしょうか?

当方では、多チャンネルを想定していますが、
たぶんステレオをモノラルに変換するのと同じ
方法だと思うけど。。。よう分からん。。。
0829828NGNG
今上のほうを見てみたら >>720 から
ステレオ→モノラル変換の話がありましたね。

ということは、16ビットオーディオで4chを合成
出力する場合、各サンプリングをワード単位で
加算して4で割って平均を取ればいいってこと?
0830デフォルトの名無しさんNGNG
いや、割らない、もしくは割るのは2ぐらいまででいいとおもわれ
0831デフォルトの名無しさんNGNG
ただしサーチュエイションは忘れぬように…
0832デフォルトの名無しさんNGNG
ありがとうございます。

上限下限の限界を超えないように
必要であれば適当に割ればいいのですね。
0833デフォルトの名無しさんNGNG
サーチュエイションってなんですか?
検索しても0件です。
0834デフォルトの名無しさんNGNG
読み方間違えたぽい(TT)
saturation

足し合わせたとき上限を超えたら上限の値でクリッピングすること、
いや、合ってるのかな…
0835デフォルトの名無しさんNGNG
>>834
それのことですか。ヨンクス。

サチるってクリップすることだったのか。
0836デフォルトの名無しさんNGNG
クリップしてくれたら、それは安全側。 ラップしてしまうともっと状況は悪くなる
0837デフォルトの名無しさんNGNG
>>826
musicdspの"Class for waveguide/delay effects"のコードを少し書き換えて使ってみました。
まだ十分なチェックはしてないけど、高域のノイズは消えたようです。
あとはオーバーサンプリングを勉強して実装してみます。他に「コレやっとけ」ってのがあったら教えてください。
帰りに買ってきた本にコムフィルターも載っていたので、これもそのうちに。
0838デフォルトの名無しさんNGNG
VSTプラグインのことならこのスレで聞いてみるのも良いかと
http://pc3.2ch.net/test/read.cgi/dtm/1030621741/
0839デフォルトの名無しさんNGNG
>>827
無音検出は、簡単には音量がシキイ値以下かどうかでやるけど
自動なんて事を考えると、やればやるほど難しいね。
0840デフォルトの名無しさんNGNG
>>827
ある一定時間以上、レベルが閾値以下みたいな感じでやらないと
0クロスするたびに無音検出してしまうよ。
ピークホールドとリリースを組み合わせて音量に見立てるとかもイイと思う。
0841デフォルトの名無しさんNGNG
.midファイルのデータ構造について説明しているサイトがあるなら
教えてください。やりたい事はバイナリで直に書いてピアノでドの音を
5秒鳴らすとかです。
0842デフォルトの名無しさんNGNG
>>841
http://www.google.co.jp/search?q=標準MIDIファイル

http://www.google.co.jp/search?q=SMF(Standard%20MIDI%20File)
0843デフォルトの名無しさんNGNG
>>842
お答えありがとうございました。
0844デフォルトの名無しさんNGNG
俺が昔お世話になった奴を。
http://www.omnibase.net/smf/
http://www.pluto.dti.ne.jp/~daiki/Midi/Midi.html
結果報告してね
0845デフォルトの名無しさんNGNG
MIDIを勉強したいのですが
http://www.amazon.co.jp/exec/obidos/ASIN/4845603489/
と
http://www.amazon.co.jp/exec/obidos/ASIN/4845602679/

どっちがお勧めですか?
0846デフォルトの名無しさんNGNG
上の方ってプロトコルももちろんかいてるが、ハードウェア側にだいぶページ使われてた記憶あるが、どうだったかな。
0847デフォルトの名無しさんNGNG
素人で申し訳ないのですが、
>>813からの話題がよくわかりません。
求める値がサンプルとサンプルの間にある場合に、
二つの点を直線で結んで考えると誤った値が出てしまう
ということだと思うのですが、
>>822のサンプリングレート/8という周波数は何から考えると出てくるのでしょうか?

それと、これは、オーバーサンプリングかローパスフィルタを通さないと
解決できないものですか?
他に有効な回避方法があれば、どなたか提示していただけないでしょうか。
0848デフォルトの名無しさんNGNG
サウンドブログラマの方々、興味があったら覗いてください。

【電気・電子】 - 【信号処理】音楽コピー防止技術Darknoise議論スレ
http://science2.2ch.net/test/read.cgi/denki/1076001429/

-----
「スピーカーから録音」も取り締まる音楽コピー防止技術Darknoise

Darknoiseの技術は、スピーカーの前でテープレコーダーを抱えるような
古典的な手法であっても、CDコピーを防止することができるという。

既存のコピー防止技術は、CDに含まれる音楽ファイルをコンピュータなどで
見えなくしたり読み込み不能にするが、Darknoiseの技術は楽曲の音に
修正を加える。楽曲がコピーされたものである場合、Darknoiseによって
追加された不可聴音が可聴音となり、音楽として聴くことができなくなる。

Darknoiseの技術は、CDからMP3へのリッピング、ラジオからの音楽録音
など、音楽ファイルのコピー方法に関係なく機能する。Darknoise音楽技術が
採用されていれば、これらはすべて使えないコピーになるという。

ソース
ttp://www.itmedia.co.jp/lifestyle/articles/0402/05/news021.html
技術解説
ttp://www.darknoisetechnologies.com/technology.htm
0849デフォルトの名無しさんNGNG
>>848
コピー防止技術は最早、気違いの域に達してますな。
0850デフォルトの名無しさんNGNG
TTS(Text to Speech)みたいに音声を綺麗に、プログラムで作るっていうのは個人レベルではやっぱり難しいんでしょうか。
今のTTSだと声に表情がつけられないし。
0851デフォルトの名無しさんNGNG
言語学板へGO!>>850
0852デフォルトの名無しさんNGNG
wavファイルを
サンプルサイズを16bit<->8bit
サンプルレートを22kHz<->44kHz
というように相互に変換できるプログラムを自作しています。
webでいろいろ調べているのですが、変換の仕方(理論)が見つからず
四苦八苦しています。
何かよさげなサンプル・情報ないですか。
0853デフォルトの名無しさんNGNG
16bit<->8bitは係数を掛けて足し算引き算で調整するだけ
22kHz<->44kHzは単純に2倍、1/2倍して補間するだけ
0854852NGNG
>>853
> 16bit<->8bitは係数を掛けて足し算引き算で調整するだけ
う〜ん、これじゃちょっと分からないです。
具体的にはどんな感じになるのでしょうか。
0855デフォルトの名無しさんNGNG
16bit<->8bit
超単純に 256を掛ける<->256で割る じゃだめなの?
0856デフォルトの名無しさんNGNG
>>853
16bit<->8bitは
下位bit切り捨てになるんじゃないかな?
音質にこだわるならディザとか掛けてみるのもいいかと。
0857デフォルトの名無しさんNGNG
16bitは0-65535
8bitは-128-127
じゃなかったっけ?
0858デフォルトの名無しさんNGNG
>847 逆だろ
16bit -32768〜0〜32767
8bit 0〜128〜255
0859858NGNG
レス番間違えた>857
0860852NGNG
22kHz<->44kHzの変換処理の実装はできましたが、
16bit<->8bitの変換処理がやっぱりうまくできません。
基本的にデータをshort型で扱っているのですがそれがまずいのでしょうか?
0861852NGNG
なんとか完成できました。
レスしてくれた方、サンクスです。
0862デフォルトの名無しさんNGNG
>>847
1、(1+Z)/2 と Z の周波数特性差がどこらへんまで気になるかで 1/8まで気になるという事じゃないかな

2、オーバーサンプリングもローパスフィルタを通す事も、表現が違うだけで処理は同じ

他の方法は
 1、良い補間関数を作る事
 2、気にしない・気にならないようにする事



0863デフォルトの名無しさんNGNG
>>862

レスありがとうございます。
いろいろ実際にやってみないとわからなそうですね。
0864デフォルトの名無しさんNGNG
8bitのwavデータで、Fade in Fade outさせるときは普通どのようにしますか?
一旦、16bitに変換してから掛け算、割り算をするのは大げさな感じですが、単にビットシフトさせるのでしょうか?
0865デフォルトの名無しさんNGNG
普通がどーかは知らんが、8bit程度ならテーブルで十分じゃねーの?
0866デフォルトの名無しさんNGNG
>>864
普通に掛け算、割り算すればいいんでない?
0867デフォルトの名無しさんNGNG
>>864
16bitに変換してからというか、普通はパソコンなら32bit整数で計算するでしょう。
フェードインなら
out= 128+(((in-128)*gain +128)>>16);
gain=min( gain +32 , 0x10000) ;
0868デフォルトの名無しさんNGNG
いろいろ、教えていただき有難うございます。
実は、マイコンで音をだそうと思っているので、8bitのままで処理できれば良いのです。
0869デフォルトの名無しさんNGNG
8bitマイコンってPICのような? 掛け算無いと厳しいね。
どうせノイズ多いんだから、クリッピングしていったらどう?
0870デフォルトの名無しさんNGNG
Java Sound API について詳しく解説してある本って何?
0871デフォルトの名無しさんNGNG
age
0872デフォルトの名無しさんNGNG
>>870
漏れが書くから十年待て。
0873デフォルトの名無しさんNGNG
>>870
ttp://java.sun.com/j2se/1.4/ja/docs/ja/guide/sound/programmer_guide/contents.html
これを読むのがいいような気がしてみる。
0874デフォルトの名無しさんNGNG
ヤマハが出してた、smaf仕様書のpdf版ってどこにいったの?
http://smaf.yamaha.co.jpもなくなってるし
0875デフォルトの名無しさんNGNG
>>874
ここかい?
http://smaf-yamaha.com/jp/
0876デフォルトの名無しさんNGNG
>>875
うん。そこに移行したのは
わかったんだけど、smaf仕様書の
詳細が見れなくなっているみたいなんだ。
もしくは探しきれてないだけなのかな?
0877デフォルトの名無しさんNGNG
>>876
pdfないねぃ。
問い合わせすれば公開してくれるかな・・・
0878デフォルトの名無しさんNGNG
>>877
さっき、お願いメール?をサポート窓口?にだしました。
さて、どうなることやら?
曰く「個別回答はしない。頂いた内容はFAQを充実させる参考にする。」(意訳)

YAMAHAさんお願い!
公開して!!

0879デフォルトの名無しさんNGNG
久しぶりにサウンド関係の本が出るみたいだが、
http://www.cbook24.com/bm_detail.asp?sku=4798007609

ページ数の割に項目が多いし、秀和なのが気になるな。
0880デフォルトの名無しさんNGNG
ttp://www.shuwasystem.co.jp/cgi-bin/detail.cgi?isbn=4-7980-0760-9
>対象読者: 初級者
だそうだ。
0881デフォルトの名無しさんNGNG
タイトルではプロフェッショナルを唱っておいて、対象読者は初級者だと。
目次を見る限り概論書っぽいね。
0882デフォルトの名無しさんNGNG
触りを詰められるだけ詰め込んでみましたって感じだな。
0883デフォルトの名無しさんNGNG
将来ゲーム音楽の職に就きたいなとか思ってる小中学生には良いんじゃない
0884デフォルトの名無しさんNGNG
('A`)だって秀和だし
0885878NGNG
ヤマハに無視されたようだ。
悔しいので、そこらに置いてある
ファイルを元に解析して公開してくれるわ。>誰かが
0886デフォルトの名無しさんNGNG
MA-2までの仕様なら個人で公開してる香具師がいたような・・・
0887デフォルトの名無しさんNGNG
>>886
是非、思い出して欲しい。
ここ数週間探し続けているが
見当たらないのです。
0888デフォルトの名無しさんNGNG
>>887
ここはどうなんだ?
ttp://tech.millto.net/~pngnews/kndh/Page/jmmf.htm
0889デフォルトの名無しさんNGNG
OggのプログラムをWindowsのC++で組もうと考えてるんだけど、
ソースコードはどこに行けば手に入るでしょう。
以前はオフィシャルサイトにダウンロードできるところあったと
おもうのですが、言ってみたらサイトが無くなってた?っぽいのです。
ご存知の方いたら教えてください。
0890デフォルトの名無しさんNGNG
http://www.vorbis.com/
あるけど???
0891889NGNG
あれ、ホントだ。
助かりました。ありがとうございます。
0892デフォルトの名無しさんNGNG
そういえば、前にプログラム板にOggのスレなかったけ?
結構参考にしていたんだけど、もうない?
0893デフォルトの名無しさんNGNG
ホイ
http://pc5.2ch.net/test/read.cgi/tech/1032623615/l50
0894デフォルトの名無しさんNGNG
ちょっとお尋ねします。

waveファイルの中で、たとえば音声だけを重点的に
拾い出したい場合など、どのようにするんでしょうか?
たぶんイコライザの応用みたいな感じで、特定の
周波数範囲だけを抜き出すみたいな。。。

結構、難し気ですか?
0895デフォルトの名無しさんNGNG
難しくは無い
0896デフォルトの名無しさんNGNG
素晴らしい即答、ありがとう。
0897デフォルトの名無しさんNGNG
オレンジからオレンジジュースを作るのは簡単でも
オレンジジュースからオレンジを取り出すのは不可能
0898デフォルトの名無しさんNGNG
つぶ入りオレンジジュースからつぶを取り出すのは可能
0899858NGNG
>897
それを言うならミックスジュースだろ。
0900デフォルトの名無しさんNGNG
クラスプラットフォームで(・∀・)イイ!!ライブラリないですか?
0901899NGNG
あれ? 昔のが残ってたのか。
0902デフォルトの名無しさんNGNG
>>894
ソースがステレオなら、LchとRchを足したり引いたりである程度は可能だけど。
0903デフォルトの名無しさんNGNG
そういや、ボーカルだけ消す装置があったな
0904904NGNG
wavの波形を表示するプログラムを作成中なんですが、リニアPCMの波形表示は
出来たのですがMS ADPCMでつまずいてます。
MS ADPCMのデータ構造やデコード(データ部を元に戻したいんです)についての
資料ってないものでしょうか?
 開発環境は Win2K/C++(MFC) です。
0905デフォルトの名無しさんNGNG
>>904
MSDNのacmあたりを調べろ
0906904NGNG
>>905
MSDNだけではよく分からなかったんですが、acm使ったサンプルを
見つけられたのでなんとかなりそうです。
ありがとうございました。
0907デフォルトの名無しさんNGNG
>>888
わかる範囲での解析するソフト作って見た。
UNKNOWNと沢山出るのが悩ましい。
http://fukuoka.cool.ne.jp/dream_theater/ciao/smafanarize.html
0908デフォルトの名無しさんNGNG
>>907
読めんよー。EUC-JPで合ってる?
0909デフォルトの名無しさんNGNG
>>908
WebページはUTF-8で書いて見た。

あ!HTMLタグのEUC-JP削除するの忘れてた。
0910デフォルトの名無しさんNGNG
音楽CDからWAVファイルを生成する方法に関する質問ですが
DeviceIoControl関数を用いる方法以外に考えられますでしょうか。

考えられる場合、具体的な方法を教えていただきたいと思います。
よろしくお願いいたします。
0911デフォルトの名無しさんNGNG
line等から録音、ASPI32
あたりが定番
0912910NGNG
>911
ありがとうございます
調べてみます
0913デフォルトの名無しさんNGNG
みんなクセナキスは聴くの?
シナファイage
0914デフォルトの名無しさんNGNG
積極的にはあまり聴かない
0915デフォルトの名無しさんNGNG
wavマンセー
mp3は糞
midは最悪
0916デフォルトの名無しさんNGNG
同士ハケーン
0917デフォルトの名無しさんNGNG
midは最悪といってる時点で何かわかってないきがする
0918デフォルトの名無しさんNGNG
>>915 は素人
0919デフォルトの名無しさんNGNG
midは最悪だな、SC-8850でも32kHzだし。
0920デフォルトの名無しさんNGNG
さらに勘違いしてるぽいな
0921デフォルトの名無しさんNGNG
本当にしらないっぽいな
09221000NGNG
midはやめて、centerにしようぜ
0923デフォルトの名無しさんNGNG
DTM板住人どのくらいいる?

ノシ
0924デフォルトの名無しさんNGNG
DTMもみとるよ!

おめーら、もうすぐBSでブーレーズ見れるぞ(バルトーク)
レポン大好きだろ?おめーら
0925デフォルトの名無しさんNGNG
midi嫌いな人居ますか?

(^^)ノシ
0926デフォルトの名無しさんNGNG
MIDI楽器は普通に使うが、配布smfをショボい音源で素で鳴らす奴多すぎなのは嫌い。
0927デフォルトの名無しさんNGNG
位相保証されたiirの技術資料ってないですかね・・(ソースだと尚嬉しい)
pass付きの論文ならワラワラ引っかかるんですが・・
0928デフォルトの名無しさんNGNG
ASIO SDKをDLして、音を出すアプリケーションを書いてみたんだけど
音が出なくて困ってる。
bufferSwitchTimeInfo コールバック関数の中でbufferInfos[出力ちゃんねる].buffers[index]に
何か書けばノイズくらいは出るだろうと思ってたら、何も出ない。
ためしに入力をファイルに書き出してみたらこっちは問題なし。
他はおおむねhostsample.cppと同じなんだけど、何が問題なのかサパーリわからん。
0929デフォルトの名無しさんNGNG
switch (asioDriverInfo.channelInfos[i].type)
{
case ASIOSTInt??LSB を処理した?
0930デフォルトの名無しさんNGNG
>>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
0931デフォルトの名無しさんNGNG
callbackにきてるんなら問題ないハズだらか他が原因かね・・
オレも翻訳ソフト駆使して全コメントを意味不明な日本語にしてガンガッたよ(w
動作は完全にhostsample。mainの入り弧
 if (ASIOStart() == ASE_OK) {
 ・・・
 }
に入ったら現状維持で抜けて(!)、再生終了したら用意した終了関数でその後処理の続きをしてる(汗

ch設定とかその辺カニ・・?
0932デフォルトの名無しさんNGNG
今試したら 再生時に long asioMessages(〜 は来るなぁ
 kAsioEngineVersion
 kAsioSupportsTimeInfo
と来た。
0933デフォルトの名無しさんNGNG
段々思い出してきた(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;
}
そのままコピペ。理由は忘れた。多分関係無いな・・
0934928NGNG
winampのASIOプラグインだと音が出てるから、やっぱりコードの問題なんだろな。
あれってソース公開してたから見てみるよ…
0935デフォルトの名無しさんNGNG
FFTについてのプログラムなんですけど、ソースコードを
解読してもらいませんか?
さっぱり、何が書いてあるのかわからなくて、困っています。
ソース↓
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1060403548&res=101

どなたか、お願いします。
0936デフォルトの名無しさんNGNG
MIDIクソ
0937デフォルトの名無しさんNGNG
>935
http://klablog.okiraku-pc.net/logs/current-bbs/161/xqqrlz.html
これ読んで出直して来い。
0938デフォルトの名無しさんNGNG
ヘッドフォンで「後ろから音が聞こえる」という状況って
どうやれば作れるんでしょうか?
0939デフォルトの名無しさんNGNG
バイノーラル録音でググれ!
計算で求めるのはそれなりにホネが折れる
0940デフォルトの名無しさんNGNG
これを使うのは簡単ですか?
ttp://www.vector.co.jp/soft/win95/prog/se334955.html
0941デフォルトの名無しさんNGNG
MIDIクソって言ってる人いるけど、鳴らす音源によって全然音変わってくるじゃん。
0942デフォルトの名無しさんNGNG
それで?
0943899NGNG
>941
だから(再現性がないから)クソって言ってるんじゃないの?
0944デフォルトの名無しさんNGNG
MIDIはインターフェースなんだが
0945デフォルトの名無しさんNGNG
そういや昔MIDIってレーベルがあったなぁ(遠い目
0946デフォルトの名無しさんNGNG
MIDI規格の策定には楽器メーカーとPC関連企業が参加したが、
楽器メーカーは楽器ごとの個性を生かせる規格を主張し、
PCメーカーは同じコマンドを送ればどの楽器でも同じ音が出るべきだと主張した。

音源をPCの周辺機器と見るか、PCを楽器のコントロール装置と見るかの
立場の違いだ。
0947デフォルトの名無しさんNGNG
>944 に同意。
よって、通信速度が遅いからクソって言ってるんじゃないの?
0948デフォルトの名無しさんNGNG
大昔の規格だからしょうがないよ。
0949デフォルトの名無しさんNGNG
まぁmidiを音楽ファイルのひとつとしか捕らえてないようなのはさすがに痛い
0950デフォルトの名無しさんNGNG
通信速度さえ速くなれば問題ないってことか?
0951デフォルトの名無しさんNGNG
mlanとかいうのをYAMAHAが提唱してなかったっけ
0952デフォルトの名無しさんNGNG
いいかげんUSB使った新しい規格出さないと、業界全体が萎んじゃうよ。
0953デフォルトの名無しさんNGNG
>950
通信速度が上がるなら、多少データを冗長なものにして編集しやすくして欲しいな。
1命令4バイトの倍数単位とかで。
レコポかなんかの形式がそうじゃなかったかっけか。

そして次スレは>970くらいでいいのかな?
0954デフォルトの名無しさんNGNG
>>953
>>949で言っているのは恐らく君のことだ。
MIDIのプロトコルとSMFフォーマットをごっちゃにしてる匂いがするぞ。

シーケンス的には、発音:消音とコマンドを分けるのではなく
発音+ゲートタイムとした方が編集しやすいと常々思っているのだが
プログラムの問題だしどうでもいいな。
0955デフォルトの名無しさんNGNG
>>953
いや、950を越えてるから、もうそろそろ建てないと このまま落ちてしまうよ。
俺は建てられない。
0956デフォルトの名無しさんNGNG
tatemasuta

サウンドプログラミング2
http://pc5.2ch.net/test/read.cgi/tech/1091054082/
0957デフォルトの名無しさんNGNG
このスレの存在に始めて気づいた
(゚д゚)ウマー
もう、DSPっていったらFFTの今の時代
FIRに走ってる俺は・・・orz
0958デフォルトの名無しさんNGNG
>>954
もともとMIDIは電子楽器同士の制御用の規格だし。
(ちなみに初めてMIDI端子を搭載したシンセはあのYAMAHA DX7)

シンセで弾いた演奏を他のシンセの音で鳴らしたりとかするためのものだから、
ノートオン・ノートオフそれぞれ別に送らないと困る。
鍵盤を押し下げた時点では音長などわからん。
0959958NGNG
んで、SMFもMIDIの信号に時間軸の情報を与えただけのものだから、
まあそういうことだ。
0960デフォルトの名無しさんNGNG
人間の演奏速度を考えるとデータ転送速度は今のままでもあまり問題にならないのかな?
0961デフォルトの名無しさんNGNG
>>957
俺はいまだにIIRが主だよ
0962デフォルトの名無しさんNGNG
>>960
モマエはMIDIを常に一人分の演奏データしか転送しないものと思っているのか?
0963デフォルトの名無しさんNGNG
>>962
もともとは1人の演奏用に作られたんだと思うよ。その命令体系からしてさ
0964デフォルトの名無しさんNGNG
命令体系はどう見ても、多人数で複数の楽器を扱えるようにしか見えないが、
どこをどう見たらそう思えるのか理解できない。
0965デフォルトの名無しさんNGNG
モノフォニック・シンセサイザーの時代なら今の通信速度でも十分だったろうけど、
16chフルに使ってる楽曲とか、もたついてるのが聞いた耳で解るよ。
>960
ここはプログラム板だし、人間の演奏速度は議論対象外じゃね?
0966デフォルトの名無しさんNGNG
>>964
そうか? 誰が誰に送ろうとしてるかの情報が欠落してるように思ったのだが?
送信元が複数だと ランニングステータスで連続送信してる時に割り込めないしな
0967954NGNG
>>958
いや、それは分かってるんだが...
だから953がMIDIのプロトコルとSMFフォーマットをごっちゃにしてると書いたのであって。
俺が後段で言及してるのはデータフォーマットのことね。
「レコポかなんかの形式」ってのもデータフォーマットの話だべ。
0968953NGNG
>954
ノート、バンクチェンジ、コントロールチェンジなんかもMIDI規格内だべ。
デルタタイムの処理ももちろん面倒だが、
これらのメッセージも2バイトだったり省略したりで処理しにくい。
0969デフォルトの名無しさんNGNG
>>966
きちんとチャンネルを設定出来るようになっているだろう。
そもそも割り込めないも何も、時系列で必要なタイミングを処理するのに、
他のデータを送信中に突然割り込む必要性など無い。
0970デフォルトの名無しさんNGNG
>>965
> 16chフルに使ってる楽曲とか、もたついてるのが聞いた耳で解るよ。

単に音源の処理速度が遅いというケースも多々。
ローランドとかローランドとかローランドとか。
0971970NGNG
つーてもまあ、31250bpsはやっぱり不足なんだけどね。
0972デフォルトの名無しさんNGNG
>>969
いいか、>>962の論理を分析しよう
 ・「常に一人分の演奏データしか転送しないものと思っているのか?」 疑問形だが、これは
 ・「常に一人分の演奏データしか転送しないものではない。」 となる。さらに反転すれば
 ・「マレには2人以上の演奏データを転送する場合がある」 と同義になる

つまり、1人が他のデータを送信中に2人目が突然割り込める必要があるんだ!

まず、MIDIは1対1タレ流し通信なので 2人の演奏データを物理的にマージは出来ない。
もちろん、コントローラが、2つの信号をマージして出せばそれは可能だが、
どちらが演奏しようとした情報かはこの時点で失われる。

そして、ノートON/OFFの制御についてはこのコントローラが負わなければいけない。

結論として  「マレには2人分の演奏データを転送する場合がある」なら
それはMIDIの外側で実現せねばならず、容易な事ではないということだ。
0973デフォルトの名無しさんNGNG
>972
異議アリ!
そもそも2人分のデータを1台のMIDI機器で演奏する場合がある。。。
たとえば、MIDIキーボードで連弾する場合もあり得るだろう。

このばあい、"突然"割り込む必要はない!
0974デフォルトの名無しさんNGNG
974
0975デフォルトの名無しさんNGNG
ALUTの英語解説読むのが面倒age
0976デフォルトの名無しさんNGNG
age
0977デフォルトの名無しさんNGNG
ASIO 対応の再生ソフトを作りたいのですがSDKがダウソできません。
フォームに適当に入力して送られてきたメールのアドレスにアクセスしても
アクセス権がありませんと怒られます。
ダウソまでの手順がわかる方いませんか?
0978デフォルトの名無しさんNGNG
スレさようなら
0979デフォルトの名無しさんNGNG
979
0980初学者NGNG
JAVA SOUND API と C#+DIRECTX って
どちらがサウンドプログラミングしやすいでしょうか?
ドキュメントの面も含めて・・・
0981デフォルトの名無しさんNGNG
C#やるくらいならJAVA
0982デフォルトの名無しさんNGNG
>>981市ね
C++VSTSDKが正解
0983デフォルトの名無しさんNGNG
サウンドプログラミングって何をやりたいの?
FM音源とかのエミュレートなら、低レベルオーディオAPIで十分だよ。

楽なのはDelphiで¥・
0984初学者NGNG
>>981
JAVAを少し囓っていて
いまは必要に迫られてC#をはじめたところです。
C#ってBeep鳴らすのも面倒だと判ってこのような質問をしました。

>>983
FFT解析などをしたいと思っています。
DelphiってWin32APIを呼び出すのでしょうか?
それともDelphi独自のサウンドオブジェクトが用意されているのでしょうか?

¥・ ってなんでしょう?
0985デフォルトの名無しさんNGNG
>>984
確かに今のパソコンならJAVA/C#でもFFTかけるだけならリアルタイムに処理させるのは可能だけど
重いんじゃないかなあ

低レベルAPIってのはWin32APIの事だけど
自分はDelphiで低レベルAPIをラップして貼り付けてイベントに書くだけで
リアルタイム処理が出来るようにしてるよ。

たぶん探せばフリーのもあるんじゃないの?
0986初学者NGNG
>>985
ありがとうございました、調べてみます。(`・ω・´)
レス数が950を超えています。1000を超えると書き込みができなくなります。