2ちゃんねる ■掲示板に戻る■ 全部 1- 最新50    

■ このスレッドは過去ログ倉庫に格納されています

サウンドプログラミング5

1 :デフォルトの名無しさん:2009/01/11(日) 13:43:21 .net
音のプログラミング処理について語りましょう

各エフェクタの組み合わせとか、
プログラミング外の話題はDTM板の方がいいよ

サウンドプログラミング4
http://pc11.2ch.net/test/read.cgi/tech/1185340076/

サウンドプログラミング3
http://pc11.2ch.net/test/read.cgi/tech/1145573675/

サウンドプログラミング2
http://pc8.2ch.net/test/read.cgi/tech/1091054082/

サウンドプログラミング
http://pc5.2ch.net/tech/kako/996/996171508.html

2 :デフォルトの名無しさん:2009/01/11(日) 13:43:52 .net
用語を統一するために

リアルタイム
 バッチ処理の対語で、ゼロレイテンシの事ではない。 
 遅延はあっても途切れずに処理する事をいう

レイテンシ
 ADCからDACまでにかかる時間の事だったり
 DSPの掛け算なんかで命令から実際に答えが出るまでの命令サイクル数の事だったり

DSP
 デジタル・シグナル・プロセッサ の場合は信号処理用のMPUの事
 デジタル信号処理の事を言う場合もある

3 :デフォルトの名無しさん:2009/01/11(日) 19:27:14 .net
あげ

4 :デフォルトの名無しさん:2009/01/11(日) 20:14:47 .net
音でプログラミングなのかと思った

5 :デフォルトの名無しさん:2009/01/11(日) 21:47:35 .net
ディレイってどうやって作ればいいですか?

6 :デフォルトの名無しさん:2009/01/11(日) 22:57:57 .net
アフリカへ行き部族間対立を煽り負けた者たちを欧米へ拉致る

7 :デフォルトの名無しさん:2009/01/11(日) 23:20:40 .net
>>5
バッファ領域と、バッファの先頭をさすポインタを用意して、ポインタをぐるぐるまわして、読み出しと書き込みをする。

8 :デフォルトの名無しさん:2009/01/11(日) 23:24:34 .net
ディレイタイムとかミックス量とかそういうパラメタはどうするんですか

9 :デフォルトの名無しさん:2009/01/12(月) 05:24:40 .net
出力を一定時間遅延させて(ディレイタイム)一定量掛けて(ミックス量)加算すれば終わりなんじゃないの

10 :デフォルトの名無しさん:2009/01/12(月) 16:34:52 .net
ho

11 :デフォルトの名無しさん:2009/01/12(月) 17:04:58 .net
>>9
入力信号列をx[n]としたとき、y[n]をどう計算すればいいでしょうか?

512サンプル等ずつで計算するんでしょうか?

12 :デフォルトの名無しさん:2009/01/12(月) 18:10:15 .net
>>11
たとえば y[0...n] と、ポインタ p を用意するだろ?
バッファに詰めるのは、y[p] = x; p++; if(p>n)p=0; を動かし続けりゃいいだけ。
取り出すのは、pからディレイタイムに応じたぶんだけ前の部分。y[p-サンプル数]な。

13 :デフォルトの名無しさん:2009/01/12(月) 18:13:41 .net
インパルス応答との畳み込みとかいう事は考えなくていいということですか?
その演算が畳み込みになってるんですかね?

14 :デフォルトの名無しさん:2009/01/12(月) 23:15:32 .net
畳み込み演算を使ってディレイを実現するプログラムを書いてみなよ
そこから0との掛け算の部分を取りのぞいたら>9や>12と同じものが完成
ディレイは文字通りある時間後だけに応答するわけで、畳み込みする間でもない

15 :デフォルトの名無しさん:2009/01/13(火) 00:15:57 .net
>>8
おれはバッファをポインタでぐるぐる循環させて、
循環バッファか(考え方ではFIFOバッファ)
でバッファの長さがディレイタイム
バッファに残すレベルがディレイの音の大きさ
で、2週目以降バッファに書き込むとき前のも
一定割合でミックスしたらフィードバックディレイ
ってやってた

16 :デフォルトの名無しさん:2009/01/13(火) 00:39:48 .net
そういうDSPのソースコードあるとこないかな?

17 :デフォルトの名無しさん:2009/01/13(火) 01:08:16 .net
>>16
そういう?
ディレイだったら俺のだったらあげるけど。
理論書いてあるとこはあるけどね
ライブラリはどこでもありそうだけどね
おれは使わないからしらねけど

18 :デフォルトの名無しさん:2009/01/13(火) 01:23:13 .net
詳細にアルゴリズムを教わっても組めない人は、プログラミングに向かないと思う。

ま、組めない奴は
http://www.musicdsp.org/
でも行け。

19 :デフォルトの名無しさん:2009/01/13(火) 06:51:34 .net
今度はアセンブラのソースが無いとか言い出しそうな勢いだな。

20 :デフォルトの名無しさん:2009/01/13(火) 10:10:58 .net
>>17
amp = 0.5;
delaytimenum = snd.fsamp * 0.3;
rptime = 2;

for (int i = 0; i < snd.num; i++)
{
sndout.s[i] = snd.s[i];

for (int j = 1; j <= rptime; j++)
{
int n,m;
m = (int)((double)n - (double)j * delaytime);

if (m >= 0)
{
sndout.s[n] += pow(amp, (double)j) * snd.s[m];
}
}
}

こんな感じですかね?17さんのも参考にしたいので見せていただけるとありがたいです

>>18 参考にしてみます

21 :デフォルトの名無しさん:2009/01/13(火) 11:47:57 .net
       //
     /  /   パカッ
     //⌒)∩__∩
    /.| .| ノ     ヽ
    / | |  ●   ● |     
   /  | 彡  ( _●_) ミ  まピョーん☆
   /  | ヽ  |∪|  /_
  // │   ヽノ  \/
  " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ


22 :デフォルトの名無しさん:2009/01/13(火) 13:15:17 .net
ディレイって、単に音が遅れて聞こえるだけじゃなかったのか。

23 :デフォルトの名無しさん:2009/01/13(火) 15:32:41 .net
アナログディレイみたいにハイ落ちを再現したりするとめんどうだけどね

24 :デフォルトの名無しさん:2009/01/13(火) 20:31:30 .net
マイクインやステレオインからリアルタイムに波形を取得する関数ってあるんですか?

25 :デフォルトの名無しさん:2009/01/13(火) 20:53:58 .net
>>22
そうだけど、それを現在のに加算すると
効果が得られる。
時差あるから周波数特性がギザギザになる。
>>20
delayタイム以外は直に書き込んであるけど…
一個サンプルを入れると一個返ってくる見たいな
感じで作った。
//delaysample=delaytime(ms)*サンプリング周波数/1000
int delay1(int in,int delaysample){
static int delaybuf[20000];
static int delaycousor=0;

if(delaycousor>=delaysample)delaycousor=-1;

delaybuf[++delaycousor]=in;

return(delaybuf[delaycousor]*0.75+delaybuf[((delaycousor+1>delaysample)?0:delaycousor+1)]*0.25);
//return(delaybuf[delaycousor]*0.75+delaybuf[delaycousor+1]*0.25);


}//func end

26 :デフォルトの名無しさん:2009/01/15(木) 20:35:27 .net
うーむなんかこのスレ新しくなるたびに同じこと繰り返してるよな。
どっかに過去ログまとめたほうがいいかね。

27 :デフォルトの名無しさん:2009/01/15(木) 20:42:11 .net
>>26
うん

28 :デフォルトの名無しさん:2009/01/16(金) 06:15:59 .net
プログラムの勉強をするなら動画圧縮か音声圧縮がいいということでサウンドプログラミングを始めたんですが
全く音の知識は無いんですが、周波数を変更する場合の存在しない中間サンプリング点を打つ場合
直線上に打つのは酷いってのはわかるんですが、補間で曲線上に打っても同じぐらい酷いと思うんですが
これはどうやって打てばいいんですか?

29 :デフォルトの名無しさん:2009/01/16(金) 09:53:05 .net
>直線上に打つのは酷いってのはわかるんですが
ひどくない
たとえばフーリエ変換して周波数成分を欲しい領域に移動して
逆フーリエ変換すれば得られる等

30 :デフォルトの名無しさん:2009/01/16(金) 10:44:04 .net
過去スレでよくフーリエ変換って出てくるので知ってはいるんですが
あれって一定の範囲内ってのがいいかげんで、
しかも途切れが含まれなかったり単音じゃないと酷いと思うんですが
ほんとにこれが主流なんですか?数学と無理やり抱き合わせるんじゃなくて
音専用の予測アルゴリズムとかはないんでしょうか?

31 :デフォルトの名無しさん:2009/01/16(金) 12:20:24 .net
>>28
中間点をとるっていうのは

__ ̄ ̄__ ̄ ̄



___― ̄ ̄ ̄―___― ̄ ̄ ̄

みたいになるっていう意味でしょうか?

32 :デフォルトの名無しさん:2009/01/16(金) 13:02:04 .net
バイリニア補完とかバイキュービック補完とかガウス補完とかシンク補完とかの話?
リアルタイム性の必要な処理なら、足して2で割るのもよく使われるよ。

33 :デフォルトの名無しさん:2009/01/16(金) 14:50:50 .net
>>31
そうです。
>>32
いやニュートンとかスプラインのことをいったんですが、どのみち音に特化してなければ同じですが。
足して2で割るって酷くないですか?間が飛びぬけて山谷になってるかもしれないのに
それって意外な事実ですよね。実際変換ソフトなら全部似たり寄ったりだと思って使ってました


34 :デフォルトの名無しさん:2009/01/16(金) 15:04:53 .net
>>33
あなたがするべき事は実際に大量のデータで統計を取る事だな
音情報である以前にスピーカーを振動させるための電圧である事も考慮しつつ

35 :デフォルトの名無しさん:2009/01/16(金) 16:02:04 .net
>>34
なんか英文を直訳したような文章だな

36 :デフォルトの名無しさん:2009/01/16(金) 19:29:17 .net
>プログラムの勉強をするなら動画圧縮か音声圧縮がいいということで
これの根拠が分からない。ファイル圧縮ならまだ一般的な感じもするが。

37 :デフォルトの名無しさん:2009/01/16(金) 20:06:50 .net
シャノンからやり直せ。

38 :デフォルトの名無しさん:2009/01/16(金) 21:05:19 .net
>>33
サンプリング定理

39 :デフォルトの名無しさん:2009/01/16(金) 21:25:39 .net
>>33
速度を気にしないなら、周波数領域に変換してから間を埋めろ。

40 :デフォルトの名無しさん:2009/01/16(金) 21:38:10 .net
いっつも思うけど、周波数領域に
変換すると、時間分解能みたいのが
ゆるくなるから音質悪くなる希ガス

41 :デフォルトの名無しさん:2009/01/16(金) 21:57:16 .net
>>40
DCT自体は可逆だぜ。
速度やらサイズやらのために細かい部分を捨てることが多いだけで。

42 :デフォルトの名無しさん:2009/01/16(金) 22:05:29 .net
>>41
可逆なのは無限に加算したときだけじゃないの
普通は切り捨てるからそこで音質落ちるんだよ
程度問題だけど人間の耳で分からないレベルで
気にならなければOKでしょ

43 :デフォルトの名無しさん:2009/01/16(金) 22:10:14 .net
音にDCTしてもなぁ…

44 :デフォルトの名無しさん:2009/01/16(金) 23:33:43 .net
>>42
扱うのはデジタルデータなんだから無限に加算する必要なんざねーよ。

45 :デフォルトの名無しさん:2009/01/16(金) 23:39:15 .net
てことは、かなり細かく分割して周波数領域に
変換するってこと?

46 :デフォルトの名無しさん:2009/01/17(土) 00:00:59 .net
ウェーブレットでやれ。

47 :デフォルトの名無しさん:2009/01/17(土) 08:36:00 .net
WDM Kernel StreamingをASIOでラッパーするドライバを作ってみた

AsioKs
http://fanzo.real-sound.net/iCubicProject/

48 :デフォルトの名無しさん:2009/01/19(月) 18:19:02 .net


49 :デフォルトの名無しさん:2009/01/21(水) 10:51:49 .net
DNAはやくリリースされないかな

50 :デフォルトの名無しさん:2009/01/24(土) 11:24:36 .net
DirectNoteAccess?

51 :デフォルトの名無しさん:2009/01/24(土) 16:08:40 .net
ディレイとエコーの違いが分からない orz
ディレイは少し前の入力値を、現入力値に加算
エコーは少し前の出力値を、現入力値に加算
という理解で合ってるのかな・・・

52 :デフォルトの名無しさん:2009/01/25(日) 15:10:53 .net
エコー=リバーブ?

53 :デフォルトの名無しさん:2009/01/25(日) 16:15:46 .net
エコーはこだまだろ
やほーーー、yahoo...

54 :デフォルトの名無しさん:2009/01/25(日) 19:40:15 .net
ディレイもエコーも同じだよ

55 :デフォルトの名無しさん:2009/01/25(日) 23:34:17 .net
俺も>>54と同じ意見。 ディレイ=エコー=やまびこ、で、リバーブが風呂場で音が響く感じ。

56 :デフォルトの名無しさん:2009/01/26(月) 09:08:59 .net
俺の認識では、エコー=風呂場の響き だな。 

57 :55:2009/01/26(月) 11:14:09 .net
>>56
じゃあ、リバーブはどう認識してるの?w

58 :55:2009/01/26(月) 11:18:52 .net
エコー
* (ギリシア*kh*)ギリシア神話のニンフ。ヘラの怒りを買って他人のことばを繰り返すことしかできなくなる。ナルキッソスを恋したがその愛を告げられず、苦悩の果てに声だけ残り、こだまになったという。
* (英echo)
1 こだま。やまびこ。
2 残響。

国語大辞典では、↑だそうだよ。
>>56の風呂場でヤッホーと叫ぶと、2、3秒してからヤッホーが戻ってくるのか?w

59 :デフォルトの名無しさん:2009/01/26(月) 11:32:25 .net
リバーブと風呂場は残響というか壁の反響音だよな

60 :55:2009/01/26(月) 11:54:09 .net
だから、教会やコンクリートの部屋や洞窟の複雑な反射音を小さな機械で再現しようとしたのがリバーブなんだよ、ばか。

61 :デフォルトの名無しさん:2009/01/26(月) 12:08:53 .net
ディレイは純粋に遅らせるだけ ドライとの合成は別問題
リバーブは残響
リバーブの実装方法の中にはディレイを用いるものもある

62 :55:2009/01/26(月) 12:09:42 .net
だから、ディレイ=エコー=やまびこのプログラムは簡単だと思う。
パラメーターは、原音にたいし、何秒後に何回返すか、音質をどう変化させていくか、音量をどう変化させていくか、
ぐらいしかないと思う。
リバーブは、原音にたいし、0.01秒後ぐらいから反射が始まって、全体的にワオ〜ンという音を作らなければならないから難しいと思う。俺は全然わからないw

63 :55:2009/01/26(月) 12:24:27 .net
仮にリバーブが出来たとしても、リバーブをかけた時に、聞く人が心地よくなければダメだからむずかしい。
リバーブの製品でも「これ風呂場リバーブじゃん」ってバカにされるからね。

64 :デフォルトの名無しさん:2009/01/26(月) 13:17:53 .net
スプリングエコーって言うのあるじゃん。
あれは山びこじゃなくて、風呂系の響きだよな。

65 :デフォルトの名無しさん:2009/01/26(月) 18:57:13 .net
風呂場で聞けばいいじゃないのもう

66 :デフォルトの名無しさん:2009/01/27(火) 01:24:59 .net
おまいらちょっとはググったらいんでないか
エコーはフィードバックディレイだ
リバーブはディレイタイム(レベルも?)のばらばらな
無数のディレイを加算して再現したりしなかったり
いろんな方法があるみたい
>>64
スプリングリバーブは、昔アナログのころ
バネのある空間に音を飛ばして戻ってきた
音をリバーブとして(ry


67 :デフォルトの名無しさん:2009/01/27(火) 17:16:01 .net
バネのある空間って何だ

68 :デフォルトの名無しさん:2009/01/27(火) 23:30:42 .net
http://gomente.blog.so-net.ne.jp/2007-10-08

69 :デフォルトの名無しさん:2009/01/30(金) 11:49:27 .net
等ラウドネス曲線を扱ったプログラミングがしたいのですが、
調べた限りグラフばかりで、グラフから読み取るのは精度的にも問題ありそうなので、
周波数毎のゲインの数値データが欲しかったりします。

1) Web等で数値データとして配布されていますか?
2) もしなければ下記の仕様書の購入を検討するのですが、
そもそも仕様書自体には数値データは含まれているのでしょうか?
ISO226:2003 http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=34222

70 :デフォルトの名無しさん:2009/01/30(金) 23:58:53 .net
>>69
でかい本屋で立ち読みできるからいってみたら?


71 :デフォルトの名無しさん:2009/01/31(土) 21:20:01 .net
>>71
なるほど、その手が。
ありがとうございます。早速行ってみます。

72 :デフォルトの名無しさん:2009/02/06(金) 15:52:38 .net
あげ

73 :デフォルトの名無しさん:2009/02/06(金) 21:11:17 .net
>>72
そんなさがってた?

74 :デフォルトの名無しさん:2009/02/08(日) 22:06:58 .net
うん、もう海底まじかだったよ

75 :デフォルトの名無しさん:2009/02/08(日) 22:54:44 .net
>>6
それはドゥレイだろ!

76 :デフォルトの名無しさん:2009/02/09(月) 21:47:30 .net
>>75
超遅レス乙

77 :デフォルトの名無しさん:2009/02/13(金) 12:54:22 .net
再生速度の変更ってどうやればいいですか?



2 3 4 5ってデータがあったら
2 2 3 3 4 4 5 5にしたらいいんですか?これで再生速度50%?

78 :デフォルトの名無しさん:2009/02/13(金) 17:46:22 .net
>>77
やってみるといいよ

79 :デフォルトの名無しさん:2009/02/13(金) 21:19:47 .net
>>77
こんなん

23456789   ←6〜9をフェードアウト
   23456789←2〜5をフェードイン

80 :デフォルトの名無しさん:2009/02/14(土) 01:21:02 .net
波形はそのままでサンプリングレートを下げるだけ

81 :デフォルトの名無しさん:2009/02/14(土) 10:09:26 .net
それだと音程も下がるよね

82 :デフォルトの名無しさん:2009/02/14(土) 13:11:10 .net
補完すればいいんじゃね

83 :デフォルトの名無しさん:2009/02/17(火) 00:00:50 .net
>>77
ttp://toragi.cqpub.co.jp/Portals/0/backnumber/2009/01/p202.pdf

84 :デフォルトの名無しさん:2009/02/17(火) 03:00:39 .net
すみません質問ですが、Mpeg-4の規格のドキュメントってどこかにないでしょうか。
mp4の音と映像を分離したいと思っているのですが。

85 :デフォルトの名無しさん:2009/02/17(火) 07:44:34 .net
ttp://www.apple.com/jp/quicktime/technologies/mpeg4/

86 :デフォルトの名無しさん:2009/02/17(火) 10:55:52 .net
mp4のdemuxくらいなら俺だったらmp4boxのソースを参照しちゃうな
ライセンスはLGPLになるが

87 :デフォルトの名無しさん:2009/02/20(金) 23:08:07 .net
>>83
おー、それ買ってみた
今度よもと

88 :デフォルトの名無しさん:2009/03/08(日) 12:03:38 .net
ImageMagickの音版みたいなツール群ってありませんか?

89 :デフォルトの名無しさん:2009/03/08(日) 14:55:07 .net
具体的に、何ができることを期待している?

90 :デフォルトの名無しさん:2009/03/08(日) 15:16:16 .net
>>89
ノーマライズしたり無音部分を取り除いたり
簡単な帯域通過フィルタができたりするコマンドラインツールです

91 :デフォルトの名無しさん:2009/03/08(日) 16:45:41 .net
>>90
つ sox

92 :デフォルトの名無しさん:2009/03/08(日) 18:43:41 .net
>>91
まさにこんなやつです!
さんくす

93 :デフォルトの名無しさん:2009/03/08(日) 22:10:08 .net
winXP, VC++2005 でサウンド入出力プログラムを作っています.
SDK,低レベルAPIを使っています.
入力,出力共にマルチバッファリングを行っているのですが,
入力と再生の間に,バッファ数に従う遅延が生じてしまいます.
体感では,(1バッファに録音する秒数 * 用意したバッファ数)秒
の遅延が生じていると思われます.

リアルタイムに近い動作を実現したいため,
1バッファに録音する秒数(RecSEC)を短くしています.
現在の設定では RecSEC = 0.005 [sec/buffer] です.
バッファ数が少ないと音声がブツブツと途切れてしまいますが,
バッファ数を増やす事で解決しました.

これで遅延量が少ない動作が実現できたと思っていたのですが,
RecSEC = 0.1 として実行してみたところ,約0.1[sec]の遅延を期待していたのですが
約(0.1*バッファ数)[sec] という大きな遅延となってしまいました.

ソースコードをアップしましたので,解決方法をご教授願います.
waveInStart の実行位置を変えてみる等色々とやってみましたが
よくわかりませんでした.

pass: sagehoge
ttp://www2.uploda.org/uporg2074476.txt.html

アルゴリズムによる遅延を解消したいです.
よろしくお願いします.

94 :デフォルトの名無しさん:2009/03/08(日) 22:57:41 .net
>>93
遅延云々以前に入力と出力を同期させてないように見える

バッファ単位の入力完了イベントでたった今読み取ったバッファを
出力にまわす、という処理をしなくてはならないのに、
入力と出力を同時に走らせてタイミングは運にまかせてるから
録音よりも再生が先行してたまたまバッファまるまる1周分の遅れ
が生じているのでは

waveXXXは使ったことないので推測でしかないが

95 :デフォルトの名無しさん:2009/03/09(月) 10:37:27 .net
InバッファとOutバッファを共有したいのは分かるが
別々に用意してコピーする方がいいかもしらん

96 :デフォルトの名無しさん:2009/03/09(月) 15:32:05 .net
別に分けた所で割り込み間隔が短いと負荷時にあっさり逆転する。
まー、デバイスによるのかもしんないけど、
waveIn/waveOut系は互いに同期取ってるわけでも無いし保証も無かったと思うから
一番短い理論上可能な「1バッファ分のレイテンシ」すら難しいと思うよ。

97 : ◆0uxK91AxII :2009/03/09(月) 15:47:17 .net
>>93
頭が悪すぎてハナシにならない。

98 :デフォルトの名無しさん:2009/03/09(月) 15:56:28 .net
コテハンでいきなり罵倒か。NG対象にしてくれといわんばかりだな

99 :デフォルトの名無しさん:2009/03/09(月) 19:07:47 .net
基地外参上ってアピールしてるんだろ

100 :93:2009/03/09(月) 22:03:47 .net
>>94
私自信 wave*** を使い始めたばかりなので
(それが免罪符だとは考えていませんが)
よく分かりません.検討致します.

>>95
ありがとうございます.
それは何故でしょうか?

>>96
「1バッファ分」が理想的ですが,
用意したバッファ分のレイテンシとなる事が避けられたら満足です.

>>97
解決策が分かるのですね.
お暇な時にアドバイスをお願いします.



101 :デフォルトの名無しさん:2009/03/10(火) 09:12:54 .net
WinXPで音楽のテンポを変更する処理を実装したいです。
音楽が入ったWAVファイルの音程を変えずにテンポを変えたいです。
普通はどのように実装するものでしょうか?
WAVEFORMATEX のサンプリングレートを変更するとテンポは変わりますが音程も変わってしまいます。


102 :デフォルトの名無しさん:2009/03/10(火) 09:29:10 .net
タイムストレッチとかそのへんのキーワードでぐぐってみれば

103 :デフォルトの名無しさん:2009/03/10(火) 10:02:28 .net
音程を変えずにテンポ変えるのって難しいよね

104 :デフォルトの名無しさん:2009/03/10(火) 10:19:24 .net
単純に考えればテンポを下げるときは波形データを間引きし
テンポを上げるときは波形データを2倍した後間引きするとか
音質は保証の限りではないが

105 :デフォルトの名無しさん:2009/03/10(火) 10:19:28 .net
http://floor13.sakura.ne.jp/book03/book03.html
http://nis-ei.eng.hokudai.ac.jp/~aoki/laboratory04.html

106 :デフォルトの名無しさん:2009/03/10(火) 11:07:13 .net
スレ毎に同じ質問が繰り返されてる気がするw
テンプレ化か、FAQとサンプルソースのwikiとかあった方がいいのかねぇ

107 :デフォルトの名無しさん:2009/03/10(火) 13:11:15 .net
テンプレが増えてきたら、wikiあると便利だろうね

108 :デフォルトの名無しさん:2009/03/10(火) 13:30:21 .net
スレ毎どころかスレ内でも繰り返してるぞ
>>101>>77-83 と同じだろ

109 :デフォルトの名無しさん:2009/03/10(火) 13:36:56 .net
だな。ろくに知りもしないのに見当違いの回答しちゃう人が混ざってる点も同じ

110 :デフォルトの名無しさん:2009/03/10(火) 16:13:23 .net
じゃ正しいソースください

111 :デフォルトの名無しさん:2009/03/10(火) 21:11:14 .net
>>101
タイムストレッチはここの説明が分かりやすいかもな。
実装したことないけどw作ったらUPよろw

音声再生速度変換 : もっとゆっくりしゃべって!
http://blogs.msdn.com/windows_multimedia_jp/archive/2009/03/04/9458418.aspx

112 :デフォルトの名無しさん:2009/03/10(火) 21:21:39 .net
>>110
つ105

113 :デフォルトの名無しさん:2009/03/10(火) 23:43:39 .net
>>105って
200Hzの音を2倍速にするとき
10msに一度30万ステップの自己相関するん?

リアルタイムだと厳しそうね

114 :デフォルトの名無しさん:2009/03/11(水) 21:04:04 .net
???

115 :デフォルトの名無しさん:2009/03/11(水) 22:19:07 .net
>>113
そうしないと元の音との互換性が低くなるだろ

116 :デフォルトの名無しさん:2009/03/12(木) 02:24:19 .net
>>113
ディレイっぽく聞こえるのを低減させるために
オーバーラップさせる時間を周期性としてる

周期性を求めるのに自己相関使ってるのは
FFTに比べ低音を考慮したときの精度がいいからとか
実装が楽だからとかじゃね

117 :デフォルトの名無しさん:2009/03/16(月) 01:30:58 .net
>>101
それって結構難しいのよ
論文読むのがいいかなぁ…

118 :デフォルトの名無しさん:2009/03/16(月) 07:28:37 .net
ttp://nis-ei.eng.hokudai.ac.jp/~aoki/laboratory04.html
7.実験6:再生速度の制御
↑で十分じゃん

119 :デフォルトの名無しさん:2009/03/16(月) 18:55:07 .net
聴いた感じでは十分とは言いがたい

120 :デフォルトの名無しさん:2009/03/16(月) 19:06:41 .net
単音ならまだしも
音楽となるとMIDIのようなソースレベルでテンポを変えないと無理だろ

121 :デフォルトの名無しさん:2009/03/16(月) 19:11:06 .net
そこをなんとかするのがサウンドプログラミング

122 :デフォルトの名無しさん:2009/03/16(月) 19:19:35 .net
適当な区間ごとに離散フーリエ変換で周波数解析して
それを合成すればなんとかなるかもしらん

123 :デフォルトの名無しさん:2009/03/16(月) 22:40:16 .net
>>122
それはむずかしい

un4seenってとこのライブラリ
たしかオープンソースの再生速度変更が
けっこう優秀。
WMPより優秀と思う

124 :デフォルトの名無しさん:2009/03/20(金) 13:20:45 .net
サウンドプログラマーな先輩方にお聞きしたい。
WaveTone(ttp://www.vector.co.jp/soft/win95/art/se421780.html)
↑このソフトはどういった変換でスペクトル算出しているのか見当つきますでしょうか。

当方、FFTで似たようなプログラムを組んでみたのですが、低音域の周波数分解能があまりに悪く、
実用とはほど遠い結果になりましたので、先輩方のお知恵をお貸し頂きたいです。
何卒よろしくお願い申し上げます。

125 :デフォルトの名無しさん:2009/03/20(金) 14:42:06 .net
FFTのポイント数を増やすのはダメ?
ゼロ詰めしたりフレーム長を増やしたりしてね.

126 :デフォルトの名無しさん:2009/03/21(土) 12:18:51 .net
>>124
・FFT結果から山を見つけて頂点を補完
・各音階に属する周波数成分で平均化(画像縮小アルゴリズムの面積平均法みたいな感じ?)
サイトの画像見る限りでは低音の精度は粗いからFFT後になんか処理してると思われ

127 :デフォルトの名無しさん:2009/03/23(月) 00:42:11 .net
ローパスフィルタで分けてから低音域だけ取り出すとか

128 :デフォルトの名無しさん:2009/03/27(金) 00:26:38 .net
>>123
みつからないけどどこ?

129 :デフォルトの名無しさん:2009/03/27(金) 05:51:08 .net
すみませんタイム(ピッチ)シフトを実装したいのですが、
質問させてください。

速度とともにピッチが変更されてもかまわないのですが、
たとえば98%遅くするなど、単純な整数比ではない場合はどう実装すればよいのでしょうか。

アップサンプリング/ダウンサンプリングの手法ではこれは実現できないのでしょうか?
80%〜120%の間で、速度を変更したいです。
よろしくお願いします。


130 :デフォルトの名無しさん:2009/03/27(金) 07:37:39 .net
>>128
ttp://www.un4seen.com/
ttp://www12.plala.or.jp/mojo/Delphi/delphi6-Z.html

タイムストレッチはたしかbass_fx

>>129
>>118でも見れ
98%の速度にするには、100×nサンプル再生した後
2×nサンプル戻った位置から再生する

131 :デフォルトの名無しさん:2009/03/27(金) 12:56:11 .net
ピッチも変わっていいならTimidityのソースを見てみたら?

132 :デフォルトの名無しさん:2009/03/28(土) 21:46:56 .net
ほんとは間引く前にローパスフィルタだっけ?
あれかけないとノイズがでることがある

133 :デフォルトの名無しさん:2009/04/03(金) 23:28:05 .net
いらない

134 :デフォルトの名無しさん:2009/04/08(水) 02:00:47 .net
FIRフィルタをそのまま実装するのと、
同じ係数で短時間FFTしてオーバーラップするのとは
同じ事でしょうか? 異なる場合は、どのような点が異なるのでしょうか?

135 :デフォルトの名無しさん:2009/04/08(水) 18:02:31 .net
>>134
http://infoshako.sk.tsukuba.ac.jp/InfoRes/jdoc/MATLAB5/jhelp/toolbox/signal/fftfilt.html

136 :デフォルトの名無しさん:2009/04/09(木) 02:53:22 .net
>>135
ありがとうございますー

137 :デフォルトの名無しさん:2009/04/15(水) 00:57:20 .net
VSTでイコライザを作ってます。
RBJ Audio-EQ-Cookbook見ながらピーキングフィルタを使ってシングルバンドのEQらしきものは実装できました。
これをLOWとHIGHの2バンドにしようとしてるのですがうまくいきません。
この場合、どんなふうにコードを書けばいいのでしょうか?


138 :デフォルトの名無しさん:2009/04/15(水) 01:30:12 .net
ピーキング2つって意味ならIIRフィルタ2つ作ってに直列に通す

トンコロ的な、2~3バンドで全体を調整できるようなものにしたいなら
シェルビングタイプ2つにして直列に通す

139 :デフォルトの名無しさん:2009/04/15(水) 22:35:18 .net
>>138
ありがとうございます。
ピーキング2つを並べてLOW,HIGHの順でやってるんですが、
LOWの効きがシングルのときよりかなり弱く(効いてない?)なってしまうんです。
「直列」っていうのをちゃんとプログラミングできてないんですかね・・・

140 :デフォルトの名無しさん:2009/04/20(月) 13:53:01 .net
ASIO対応の録音再生ソフトって、素人では作れないですか?


141 :デフォルトの名無しさん:2009/04/20(月) 14:02:52 .net
そんなことないでしょ、どうしてそう思った?

142 :デフォルトの名無しさん:2009/04/20(月) 23:30:39 .net
商用ソフトしか存在しないから。

なんか、ASIOSDKがあるらしいので、入手できた。

143 :デフォルトの名無しさん:2009/04/20(月) 23:44:55 .net
どんだけ無知だよ。。。

144 :129:2009/04/25(土) 17:54:51 .net
>>130

亀ですみませんが、ありがとうございます。

100*nサンプルを再生バッファに入力した後、2*nサンプルもどってバッファを入力する処理を実装してみたのですが、
再生時にノイズが乗ってしまいました。

波形の接続部分がきれいに合わないためだと思うんですが、
これにローパスフィルタをかければノイズは消えるものなのでしょうか。
それとも僕の方法がまちがっていますか?

こわれたテーププレーヤーのような効果をデジタルで実装するのに他に何か有効な方法はないでしょうか。


よろしくお願いします。




145 :デフォルトの名無しさん:2009/04/25(土) 18:16:44 .net
>>144
いきなり切替えたらノイズが出るので、
フェードアウト・フェードインさせながら切替えないといけない

http://floor13.sakura.ne.jp/book03/book03.html
のchapter11.zip

146 :デフォルトの名無しさん:2009/04/25(土) 18:45:52 .net
クロスフェードってやつな

147 :129:2009/04/25(土) 19:04:13 .net
>>145

おおお、ありがとうございます。
なるほどお, この本買って読んでみます。

148 :デフォルトの名無しさん:2009/04/27(月) 00:48:41 .net
>>135
便乗ですまんけど、
FFTは暗黙に処理範囲の両端が繰り返すけど、FIRだと繰り返さないよね
ブロック処理ってそのあたり大丈夫なのかな?

149 :デフォルトの名無しさん:2009/04/27(月) 15:47:10 .net
質問が曖昧でなにが大丈夫なんだ?
FIRだと切れ目無くできるからいいけど
FFTはぶった切るから窓関数+最後
オーバーラップが必要ってことか

150 :デフォルトの名無しさん:2009/04/27(月) 22:15:45 .net
FIR相当の処理をFFTでやると、両端がループしてるから区間の最後の方の
計算値が区間の最初の方に影響するってことだろJK

151 :デフォルトの名無しさん:2009/04/28(火) 00:15:26 .net
周波数成分いじって逆FFTしてまた窓かけてオーバーラップするからいんじゃね?

152 :148:2009/04/28(火) 00:21:42 .net
分かりやすくするために極端な例だけど、例えば前半全てゼロ、
後半ピンクノイズみたいな波形があって、それをFFTして周波数成分を
操作して戻すと、ゼロだった前半部に微小な波形が出るよね。
要するにプリエコー、ポストエコーなんだけど、
これはオーバーラップだと解決できないと思うんだ。

153 :デフォルトの名無しさん:2009/04/28(火) 00:57:45 .net
>>152
FFTは時間成分ないんだから当たり前

154 :デフォルトの名無しさん:2009/04/28(火) 01:27:08 .net
>>153
んと、解決できない、でOK?
とすると、>>135は無効ってことになるけど・・・

155 :デフォルトの名無しさん:2009/04/28(火) 07:55:33 .net
感覚でものを言っちゃいかん 数式で検証してくれ

156 :デフォルトの名無しさん:2009/04/28(火) 21:36:30 .net
Androidでサウンド系アプリ作った人いる?

157 :デフォルトの名無しさん:2009/04/29(水) 04:49:22 .net
>>149
一回の計算についてはFIRもFFTと同じくブロック処理以外の
何ものでもないのだが? 
どちらも対象の有限長のブロック以外は全然計算対象に入っ
ていない。

FIRの代わりにFFTを使う時、FIRでの場合と同じように1サン
プルづつずらしてFFTを行い、その結果を正しく評価すれば
FIRでの場合と同じ結果が得られるんじゃない?
ただ、それだと普通にFIRやるよりも計算量が増えるので、
それをひっくり返す手法としてオーバーラップ法があるの
だと理解してるが?

158 :デフォルトの名無しさん:2009/04/29(水) 14:31:42 .net
>>157
てことは、オーバーラップは単に計算量対策で、
FIRとFFT+オーバーラップは本来は代替不可能ってことか。

159 :デフォルトの名無しさん:2009/04/29(水) 22:26:47 .net
>>157
一回の計算についてはプログラミング上
ブロック処理にしてもしなくても
出力はFIRならいっしょだからそれは考えないとして。
FIRとFFTの違いはサンプル数の違いがでかくないか?
FFTはサンプル数でかくしないと周波数領域で操作できる
周波数ステップ荒くなるし
FIRは少なくてもある程度できる。
サンプル数大きくするとそれだけFFTの計算に入れる時間が
大きくなるから時間分解能下がる
FIRはリアルタイム処理だから時間分解能最大。
それでサンプル数が一緒での議論だと、
FFTは実際(データが何かにもよるけど)窓関数とかかけなきゃ
だめだからそれだけデータ量そこでへっちゃうから、
最終処理後のデータの品質さがる
だから目的に合わせて選べばいんでは



160 :デフォルトの名無しさん:2009/04/29(水) 22:40:47 .net
>>159
いまいち良くわからんのだが、、

>FFTはサンプル数でかくしないと ... FIRは少なくてもある程度できる。

同じステップ数として、FFTの時間領域で、FIRフィルタの
設計上のカーブを各点で取ったフィルタ処理は違うもの?
違うとすればどの辺りが?

> サンプル数大きくすると ... 大きくなるから時間分解能下がる

時間分解能はサンプリング周波数で固定だと思うけど、、、
短時間FFTのオーバーラップ回数が少なくなるってこと?

> FFTは ... それだけデータ量そこでへっちゃうから、

データ量は減らないと思う。

161 :デフォルトの名無しさん:2009/04/29(水) 23:35:07 .net
>>160
FFT/FIRの基本的な仕組みすら理解出来てねーだろお前。
159の説明は波形処理の基礎だぞ。
まずは自分で調べて考えろ、なんでも聞いて済まそうとすんな。

162 :デフォルトの名無しさん:2009/04/30(木) 00:00:23 .net
>>161
ただ罵倒するだけのレスは無価値ですよ、いつもの方。

163 :デフォルトの名無しさん:2009/04/30(木) 01:51:36 .net
>>160
あの、
ここでの説明だとあれだから本買ってきた方がいいよ。
最初の方は強いて言えば違わないけど、
それぞれの癖とか特徴とかできることできないことあるから
目的に応じたいい方をえらべよ

二つ目は
>サンプル数大きくするとそれだけFFTの計算に入れる時間が
>大きくなるから時間分解能下がる
これはFFTの時間分解能だから。
160が言ってるのは多分サンプリング定理とかそこら辺の
波形のデジタル化の時の時間分解能の事をいってるんかな?
FFTの原理とか時間領域-周波数領域のサイトとか本とかみればわかると思うけど

みつめ
何バイトとかのデータ量はへらないけど、なんというか削ってるんだから論理的な
データ量は減るよね?
たとえばwav->mp3圧縮の時みたいな感じで
たとえばデータを波形ととらえて周波数領域に変換して周波数高い一部分を少なくして
時間領域に戻してもバイトは変わらない。でも何か(なんらかの情報)は減っている。

164 :デフォルトの名無しさん:2009/04/30(木) 02:02:29 .net
>>163
うーん……難しくていいので正確に書いてもらえると嬉しいです。
理解してるとかしていないのかという問題よりも、163の説明の中の
一つ一つの用語が式とか定理のうち具体的に何を指しているのかが曖昧すぎて分からない。

> FFTの時間分解能

>>160の時間分解能は指摘の通りデジタル化の際の時間分解能です。
で、説明だとFFTという変換自体にに時間分解能ってパラメータなり特性が存在するんですよね?

> データ量
窓かけの周波数特性でサイドローブが出る話ですよね。
歪みは出ると思いますが、それが情報が減っているということ?

165 :デフォルトの名無しさん:2009/04/30(木) 05:43:39 .net
>>159
>FFTはサンプル数でかくしないと周波数領域で操作できる
>周波数ステップ荒くなるし
>FIRは少なくてもある程度できる。

そんなことない。
「NタップのFIR」は「サイズNのFFT+周波数領域での積和演算」
と等価でしょ?

166 :デフォルトの名無しさん:2009/04/30(木) 21:11:03 .net
>>165
「ある程度」だから実用性を考えての
ことだよ
小さいタップ数で同じ事ができるんだったら
小さい方がいいだろ

167 :デフォルトの名無しさん:2009/04/30(木) 21:35:01 .net
>>164
一般的なFFTの話だが
FFTはサンプル数を大きくすれば周波数分解能はあがるが、
それだけ時間領域でも…
たとえば音楽だと22050hz、4096FFTだと一回のFFTで
4096サンプル=0.185秒分のデータが必要になる
音楽だと0.185秒だとテンポの速い音楽だと音符が2個分
含まれていることもあるかもしれない。(極端な話)
上のFFTだと5.38hzごとの周波数領域のデータだ。

このようにFFTではサンプル数を大きくすれば得られる周波数データの
hzの間隔は少なくなり詳しく得られるが、それだけたくさんの時間を
計算に組み入れなければならないので、いらないデータも含まれるかも
しれない。sin波だったらずっと同じだからいいけど、PCMなんかだと
刻一刻と周波数成分が変わっていってるので(音楽なので刻一刻と
かわらないとおかしいが)一回の計算にいれる時間は少ない方が
その時点の周波数は正確に表れる。

この文を読めばFFTの時間分解能、周波数分解能の意味は
なんとなくわかるだろ


168 :デフォルトの名無しさん:2009/04/30(木) 22:12:17 .net
>>167
いやそれはとっくに分かってるんだが・・・
ピッチ検出ならゼロクロスなりケプストラムなり使うし。

で、そもそもの疑問である
>>163
> 最初の方は強いて言えば違わないけど、
これをkwsk

169 :165:2009/05/02(土) 05:33:05 .net
>>166
>小さいタップ数で同じ事ができる

俺はそんなことは出来ないと理解してるのだが?

170 :デフォルトの名無しさん:2009/05/06(水) 22:11:32 .net
便乗レスだけど、

>>168
NタップのFIRをFFTで実装しようとすると時系列データもN用意して
Circular ConvをConvにするため最低Length=2N+1のDFTを行う必要がある。
(信号分析しないから窓掛けしないとする)
DFT自体は丸め誤差とかを除いたら単なる座標変換だから周波数領域での掛け算も
時間領域の畳み込みも等価なんだけど、フレーム単位で処理する必要があるから
出力時には最低Nサンプルの遅れがある。
反面、FIRだと過去Nサンプルのバッファを用意して置けば新しいサンプルが入ったときに
バッファからフィルタの出力をその時点で得られる。

同じ性能を発揮するのに必要なタップ数が変わることはありえないし、
時系列でFIRを処理するから周波数分解能が云々とか、それを座標変換した
領域で作業するから周波数分解能が云々ってないし、考慮する要件は数理的なものよりも
処理時間やFFT-IFFTするオーバーヘッドや誤差への許容に関すること。
更に言えば、Portaudioみたいに最初にデータをバッファにためてバッファがいっぱいになったら
コールバックを呼ぶようなやつだったら、正直FIRを時間ドメインでやろうが周波数でやろうが
変わらない。

リアルタイム性を重視するフィルタだったらFIRを時系列で畳み込む方がいい場合もある。
特にタップ長が短い場合。

171 :デフォルトの名無しさん:2009/05/20(水) 23:46:32 .net
質問いい?

VistaでWin32APIのmidiOut〜系でMIDIを出力しているんだが、
どうにも我慢ならないほどの遅延が発生する(200ms程度)。
出力先をデフォルトのMIDIマッパーの代わりに、Timidity++→ASIOにしても同程度の遅延が発生するので、
多分APIに問題があるんだと思う。

そこで、他のAPIに乗り換えようかと思ったんだが、
DirectMusicは消滅した上に64bitアプリで使えないようなので、
他の選択肢が欲しい。
なんかないかな?

172 :デフォルトの名無しさん:2009/05/20(水) 23:53:35 .net
MIDIならしょうがない

173 :デフォルトの名無しさん:2009/05/21(木) 00:02:12 .net
しょうがないのか。 適当な音源自前で実装するか……サンクス。

174 :デフォルトの名無しさん:2009/05/21(木) 09:57:02 .net
Timidity++側、ASIO側にバッファがあれば同様の遅延は発生するだろ
APIを疑う前になぜMIDIインタフェース+外部音源の組み合わせで試さないのか不思議だな

175 :デフォルトの名無しさん:2009/05/21(木) 10:22:23 .net
>>171
少なくともXPまでの環境でmidiOutで200msecも遅延するとか聞いたこと無い
Vistaのドライバとかの問題だと思うが、ソフトMIDI音源とかで試してみた?

176 :デフォルトの名無しさん:2009/05/21(木) 12:35:56 .net
>>174
外部音源とか持ってねーよwwww
Timidity++のGUIからmidiファイルを再生してみたけど、たぶん遅延してない。

>>175
全く違うハードウェア構成の2台のVistaで同様の遅延が発生してる。
で、さっきXPマシンで試験したけど遅延しない。

何ヶ所かの英語フォーラムで、Vistaだと遅延が発生するという報告があるのよ。

177 :デフォルトの名無しさん:2009/05/21(木) 13:33:55 .net
いや、MIDIファイルの再生じゃ遅延してるかどうかなんて分からんだろう・・・
なんにせよmidiOUtの問題じゃないと思うんだが

VISTA環境があれば試すんだがなぁ

178 :177:2009/05/21(木) 13:36:32 .net
>>173には同意してるかんね

179 :デフォルトの名無しさん:2009/05/21(木) 13:59:15 .net
ソースが公開されてるDAWやシーケンサがMIDIをどう発音しているか確かめたら?
あとTimidity++自体に遅延があるからASIOを使ってもMSGSより遅いぞ

180 :デフォルトの名無しさん:2009/05/31(日) 17:26:05 .net
ogg vorbisのエンコードについて詳しく書かれたサイトありますか?
公式見ても初期化部分しか書かれてなくて何をすればいいのかすらわからん

181 :デフォルトの名無しさん:2009/05/31(日) 21:03:25 .net
>>180
oggのlibならexamplesディレクトリに encoder_example.c があると思うけど、それじゃだめなん?

182 :デフォルトの名無しさん:2009/06/05(金) 13:24:01 .net
ogg vorbisのエンコード上手くいかない・・・

183 :デフォルトの名無しさん:2009/06/06(土) 14:21:40 .net
自作のフィルターを組んでメモリ上に全てのデータを置いてランダムアクセスで
メモリ上を飛び回って処理をしているのですが、音源の時間に比べて20倍の処理速度が掛かります。
DSPとやらを使えばもっと高速にできるらしいのですが、どうやって使えばいいのでしょうか?
Google先生に効いてもネット上に資料はあまりなく、困っています。
VC++9.0SP1を使ってプログラミングをしています。誰かVC++からのDSPの使い方を教えてください。

184 :デフォルトの名無しさん:2009/06/06(土) 16:19:54 .net
とりあえずどんなフィルタか書かんと
DSPは単純な演算を高速に(あるいは並列に)こなすものだから
処理の種類によっちゃ効果がない

185 :デフォルトの名無しさん:2009/06/07(日) 02:42:57 .net
>>183
どんなマシン使って20倍なのかわからないけど、
最近のPCでそのスコアならアルゴリズムから見直さないとどのみち無理な気が。

一言にDSPっていってもピンキリだし、PCから使うならどこかの評価ボードみたいなの買うしかないんじゃないかな?
本気でDSPに手出すなら開発キット&コンパイラで数十万、仕事じゃないなら個人に販売してくれるかってのも微妙な所。
たぶん想像してるよりもはるかに敷居高いと思う。

波形処理の高速化なら一番お手軽なSIMDに手出してみれば?
モノによっては5〜10倍くらい期待出来る。

186 :デフォルトの名無しさん:2009/06/09(火) 13:12:40 .net
G.722とG.722.1 Cの、GPL/LGPLでないソースを探していますが、どこにありますか?

187 :デフォルトの名無しさん:2009/06/09(火) 18:29:55 .net
誰かにそのソースを渡す
アルゴリズムと定数だけそいつから聞き出して自分で実装する

188 :デフォルトの名無しさん:2009/06/09(火) 20:49:19 .net
そして定数の中にGPLの文字がひっそりと含まれていて自爆するわけですね

189 :デフォルトの名無しさん:2009/06/09(火) 21:05:53 .net
ogg vorbis以外で意匠フリーでブロードキャスト向けの音声圧縮ってありますか?

190 :デフォルトの名無しさん:2009/06/09(火) 21:30:33 .net
189!=186と仮定して、G.722

191 :186:2009/06/11(木) 12:55:56 .net
結局Speex使うことにしました

192 :デフォルトの名無しさん:2009/06/26(金) 18:55:46 .net
スペアナ作りたいですが、窓掛けしてFFTして絶対値取れば完成ですか?

193 :デフォルトの名無しさん:2009/06/26(金) 19:03:43 .net
いや、表示せんと。

194 :デフォルトの名無しさん:2009/06/26(金) 21:17:35 .net
テキストで吐けば十分
リアルタイムじゃないなら

195 :デフォルトの名無しさん:2009/06/28(日) 21:04:34 .net
すいません。
WindowsXPでサウンドデバイスを2つ以上インストールしているマシンがあるとします。
再生デバイスと録音デバイスにそれぞれ別の物を設定しているとして、
録音デバイスから入力した音声をそのままダイレクトに再生デバイスから出力させることは
できますか?

196 :デフォルトの名無しさん:2009/06/28(日) 23:57:27 .net
OS上の機能では無理だったと思うよ。

プログラム作っていいなら AudioIn → プログラム → AudioOut は簡単に実装できる。
まぁ、レイテンシは発生してしまうけど。

Virtual Audio Cable とか既存のツール使ったらプログラム組まなくても簡単にいけるかな。

197 :デフォルトの名無しさん:2009/07/02(木) 15:13:37 .net
DirectXスレからきました。

DirectSound で再生しながら、
横軸に周波数、縦軸に音量を表すようなグラフを
リアルタイムで描きたいです。
とりあえずWAVを再生するところはできてるんですけど、
そのようなグラフを描くにはどうすればいいですか?

一応↓のコードを手に入れたのですが、どういうふうに使えば... ?
ttp://www5.airnet.ne.jp/tomy/cpro/sslib8.htm

198 :デフォルトの名無しさん:2009/07/02(木) 17:40:48 .net
やる気がなければ帰れ。

199 :デフォルトの名無しさん:2009/07/02(木) 18:21:18 .net
>>197
テストアプリ書いてデバッガなりコマンドプロンプトなりに変換結果出してみるとかやってみた?
サイン波形なりを食わしてみればすぐ理解できる

200 :デフォルトの名無しさん:2009/07/02(木) 23:50:01 .net
>>197のプログラムをコンパイルするとkが初期化されてない警告が出るんですけど、
これは0 で初期化して問題ないですか?
あと、iter は何の値なんでしょうか??


201 :デフォルトの名無しさん:2009/07/03(金) 00:53:28 .net
んー、一通り目通せばすぐ気付くだろうに、ホントにやる気ないのな

fft2(), fft2x()のjのforループでkは使われてない→たぶんコピペって k += nmax を消し忘れ
iterはループ回数の演算省略用じゃね? 0渡せば勝手に計算するようになってるだろ

202 :デフォルトの名無しさん:2009/07/05(日) 23:56:30 .net
RolandのVariPhraseってあるじゃん
あれってなにがすごいの?

203 :デフォルトの名無しさん:2009/07/07(火) 21:12:01 .net
>>202
当時のチップの速度でリアルタイムにピッチやらフォルマントやらを操作して、それをもとに音作りできるところ。

204 :デフォルトの名無しさん:2009/07/09(木) 23:57:30 .net
ケプストラムについて教えてください。

n個の時間領域のデータxn(t)をFFTし、

Xk(f)のパワースペクトルを得たとします。(k=n/2)

パワースペクトルの自然対数を取り、IFFTすると思うのですが、IFFTするには
実部と虚部の情報が必要ですよね?パワースペクトルの対数をとったら、虚部が
わからなくなってしまいますよね。
そのところでわからなくて困っています。わかる方教えてください。

205 :デフォルトの名無しさん:2009/07/10(金) 00:15:43 .net
>>204
IFFTは別に虚部がなくてもいいです.
それとスペクトルのkはnのままでいいと思います.
スペクトルは偶関数になってるので,IFFTすれば実数成分(ケプストラム)が求まると思います.

206 :デフォルトの名無しさん:2009/08/15(土) 03:03:10 .net
MMEやDirectSound対応のスペアナソフトやレベルメーターのソフトみたいな音を入力して解析してリアルタイムで表示する系統のソフトって、
半日以上とか1日とか数日とか、長時間起動してると、必ず反応がかなり遅れるようになるけど、それはなぜ?
複数のソフト、いろいろな環境で再現性があるのでOSの問題なんだろうかと思うんですが。
たとえばwavespetcraとかDeskTopLevelMeterとか、他にも山ほどあります。

207 :デフォルトの名無しさん:2009/08/15(土) 11:25:17 .net
システム時計とサンプラ側の時計(たとえば44.1kHz)がビミョーにずれてくのかもね

208 :デフォルトの名無しさん:2009/08/16(日) 15:56:49 .net
ソレ系のソフト以外でも、何でも遅くなってないか?
多分、ただのページングだよ。

209 :デフォルトの名無しさん:2009/08/17(月) 16:48:43 .net
WinVista/VC++expでサウンドプログラミングをしているのですが、
リアルタイム(1バッファ遅延)に入力→加工→出力を行うAPIを探しています。
調べたところWDM?ではカーネルミキサを通す分遅延がありすぎて話にならない
ディフォルト出力ならKernel Streamingが良いと聞きました。
Win32APIのwaveXXXX関数は、関数の内容的にハードウェアに直接アクセスしてるように思えるのですが
実際のところ、Winのカーネルミキサを経由していたりするのでしょうか?


210 :デフォルトの名無しさん:2009/08/17(月) 23:22:46 .net
「ハードウェアに直接アクセス」なんて危険なAPIは基本的に存在しない

waveIn()/waveOut()で遅延がネックになるレベルならPCでの処理は難しいと思うが、
WinAPIよりはリアルタイム処理に向いてると言われるASIO使ってみれば?

211 :デフォルトの名無しさん:2009/08/17(月) 23:54:39 .net
CoreAudioAPI

212 :デフォルトの名無しさん:2009/08/18(火) 00:49:41 .net
DirectX

213 :デフォルトの名無しさん:2009/08/18(火) 10:04:27 .net
>>211
DirectXはミキサ通すはず。
>>212
VistaはCoreAudioっていうんだな。Macかとオモタ

214 :デフォルトの名無しさん:2009/08/19(水) 00:03:48 .net
音程を変えずに速度を変える処理って、100msとかの短い間隔のかたまりで処理するタイプが定番なんですかね。
ゆっくりさせると、響いている様になってしまい良くないです。
NHKテレビで、波形の山を増やすとか言ってたが、
波形の山一個単位(一周期単位)でコピーして増やしたり減らしたりするアルゴリズムを僕は考えていたのですが、実現されていないのでしょうか。

215 :デフォルトの名無しさん:2009/08/19(水) 00:09:28 .net
>>214
ちょうどいい間隔でスキマがうまるならそれでいいだろうよ。
どうせギャップができて似たような音になると思うけど。

216 :デフォルトの名無しさん:2009/08/19(水) 00:25:22 .net
>>214
ピッチ検出の話になるが、ゼロクロス検出の精度が実際微妙ってことを
考えると、似たような理由で何かの障害があるんだと思うよ

217 :デフォルトの名無しさん:2009/08/19(水) 10:22:13 .net
含まれる周波数の最小公倍数な周期、いわゆるf0周期が短く明確なら良好な結果になるが
が、実際の音声は周波数はおろか振幅エネルギーも
時間変動する
よってf0の定義自体がまず困難
少しでもずれがあればパルスノイズが発生(矩形窓の場合)

蛇足だか、なんだかんだで窓関数は有効だよ。
目的に応じて最適な窓関数とオーバーラップ数の設計をすればいいし

218 :デフォルトの名無しさん:2009/08/19(水) 19:03:38 .net
>>214
nhkでそんな話してくれるの?KWSK

219 :デフォルトの名無しさん:2009/08/20(木) 01:06:24 .net
反応速度を優先するならグラニュラー(ディレイを使ったものも一緒)
音質を優先するなら、周波数領域に変換してからリリース部なんかを中心に引き伸ばせ。

220 :デフォルトの名無しさん:2009/08/20(木) 23:02:58 .net
ここの人たちって、お仕事はなにを?

221 :デフォルトの名無しさん:2009/08/21(金) 04:29:17 .net
無職

222 :デフォルトの名無しさん:2009/08/21(金) 05:37:43 .net
マ板でやれ

223 :デフォルトの名無しさん:2009/08/21(金) 10:13:29 .net
自宅警備員

224 :デフォルトの名無しさん:2009/08/21(金) 18:53:17 .net
音関係に詳しいから仕事もそれ関連かと

225 :デフォルトの名無しさん:2009/08/21(金) 19:06:27 .net
だからなにやってんのって話だ

226 :214:2009/08/24(月) 00:24:34 .net
なるほど、なかなか難しい訳ですね。 ありがとうございました。
>>218
昔の高校情報Aでやってました。

227 :デフォルトの名無しさん:2009/08/24(月) 00:29:44 .net
最近の高校生は信号処理とかもするのか

228 :デフォルトの名無しさん:2009/08/24(月) 01:41:47 .net
うろ覚えだけど昔工房でフーリエ変換習ってた奴もここに居たしな。

229 :デフォルトの名無しさん:2009/08/24(月) 02:07:02 .net
高専なら普通に教えてそうだね

230 :デフォルトの名無しさん:2009/08/24(月) 06:21:32 .net
証明はともかく使いかただけなら工房でも分かる罠

231 :デフォルトの名無しさん:2009/08/24(月) 06:22:50 .net
は?何?それがどうした?

232 :デフォルトの名無しさん:2009/08/24(月) 06:32:01 .net
なんか変なレスきた

233 :デフォルトの名無しさん:2009/09/10(木) 15:14:29 .net
FM合成、もしくはFM変調などについて学べる書籍またはサイトは無いでしょうか?
簡単な波形合成を行うプログラムを作っているのですが、中々FMについて理解が進みませんorz

234 :デフォルトの名無しさん:2009/09/10(木) 16:38:49 .net
「FM音源」と組み合わせて検索かければ解説からサンプルコード、FM音源ドライバのソースまでなんでも見つかんね?

235 :デフォルトの名無しさん:2009/09/11(金) 16:57:04 .net
wikipediaで調べるといい。

236 :デフォルトの名無しさん:2009/09/11(金) 19:18:03 .net
サウンドプログラミングに限らず、離散信号処理で辞典的役割をしてくれるもしくはできるだけ広範囲をカバーした本があったら教えてください

237 :デフォルトの名無しさん:2009/09/11(金) 21:43:38 .net
http://www.google.co.jp/search?hl=ja&q=%E3%83%87%E3%82%A3%E3%82%B8%E3%82%BF%E3%83%AB%E4%BF%A1%E5%8F%B7%E5%87%A6%E7%90%86+%E6%9B%B8%E7%B1%8D

238 :デフォルトの名無しさん:2009/09/17(木) 14:46:03 .net
ttp://www.seventhstring.com/
ここのTranscribe!ってソフトのタイムストレッチ/ピッチシフトがめちゃ精度良いように思うんだけど、
どうやって実現してるか先輩方わかります?

239 :デフォルトの名無しさん:2009/09/20(日) 19:13:26 .net
そんな糞ソフトよりAutoTuneとかのほうが糞精度いい

240 :デフォルトの名無しさん:2009/09/20(日) 19:17:06 .net
ポジティブな形容にも「糞」って付けるものなの?

241 :デフォルトの名無しさん:2009/09/20(日) 19:21:31 .net
ワンピースみろよ。

242 :デフォルトの名無しさん:2009/09/20(日) 19:50:04 .net
着てる

243 :デフォルトの名無しさん:2009/09/20(日) 19:54:57 .net
ワンピース着るような清楚な女は一度も見たことないわ(清楚でなくてもだけど(ワンピース着てる奴に限ってビッチ多いらしいけど(童貞だから知らないけど)))

244 :デフォルトの名無しさん:2009/09/20(日) 19:57:43 .net
lisp厨がきたぞー

245 :デフォルトの名無しさん:2009/09/23(水) 20:42:23 .net
WaveOut系APIで、waveOutWriteで送った後のデータ書き換えたらマズいのかな
(waveOutPrepareHeaderで指定したWAVEHDR構造体のlpDataの参照先のデータのことね)
やってみたら一応動作はしたんだけど、これが出来るならWaveOut系APIの遅延も短く出来るよな

246 :デフォルトの名無しさん:2009/09/23(水) 22:22:23 .net
俺もそれやった事あるんだけど、結局資料が見つからずに有耶無耶になってサウンドプログラミングやめた。

247 :デフォルトの名無しさん:2009/09/23(水) 23:00:21 .net
>>245
woWriteの後はデータ管理としてはOS側だろ?
バグ作り込むようなもんだからできるできない以前にやらない
仕様として保証されていない動作に依存するようになるとデバッグが泥沼だよ

248 :デフォルトの名無しさん:2009/09/25(金) 11:49:05 .net
Replaygainを自作プログラムに実装すべく考えているのですが
良く分かりません。教えていただけないでしょうか。

実際、色々調べてみてある程度はわかったのですが、
「Peak Amplitude」があまりよくわからなかったのと、
音量設定の単位がdbになっているので、設定の仕方が難しい、
合わせにくいというところでつまずき、そのままになっていました。

現在わかったことは、ピーク時の振幅(Peak Amplitude)、
トラックごとに音量を設定する値(Radio Replay Gain Adjustment)、
アルバム単位で設定する値(Audiophile Replay Gain Adjustment)
の3項目でタグが構成されていて、これらの値を使って音量をdb単位で調整する、
ということです。

タグの読取りはそれぞれの形式(tta,ape,mp3)で異なるが、
提供されているライブラリを使えば読取りは比較的簡単に出来る。

というところまでは行きついたのですが、
実際に読み取った値からどう処理するかが難しく、
実装するのが難しい状況です。

今考えているのが、勝手にdbの単位を独自の値に置き換えて(0dbが125とか)、
音量を調整すればいいのかも?と思っているのですが、
それにしても、ピーク時の振幅(Peak Amplitude)がよくわからないので、
どう使って良いか悩み、ここでつまずいています。

ご存じの方、教えていただけないでしょうか。

249 :デフォルトの名無しさん:2009/09/25(金) 21:42:49 .net
>>248
全てはdBとリニアの変換くらいは自在にできるようにしてからだ。
Peak Apmplitudeは意味そのまんま最大振幅と思うんだが。最大はmaximumだとか言うなよ?

250 :デフォルトの名無しさん:2009/09/26(土) 03:12:01 .net
dBーリニア変換

dB = 20log(A/B) log:常用対数
(パワーの場合は10log(A/B))

例)
Aが1、Bが10の時AはBに対して20dB落ち(-20dB)

上記のような比を表す他に、dBV, dBu, dBmなど、具体的な単位
(例えば1Vなどの電圧)に対する比を計算し、実際の値を表すこともある

例)
0dBm = 1 mW

251 :デフォルトの名無しさん:2009/09/26(土) 16:45:56 .net
>>249-250
ありがとうございます。
試行錯誤してみます。

252 :デフォルトの名無しさん:2009/09/26(土) 17:22:01 .net
色々な楽器の倍音構成をある程度記載したサイトもしくは書籍などないでしょうか?
ピアノについては見つけられたものの、そのほかの楽器が中々見つけられません

253 :デフォルトの名無しさん:2009/09/26(土) 19:15:25 .net
Peak Apmplitudeについても、何となくわかりました。
曲によって振幅が違うから、その状況を表しているんですね。
それにしても、何故「1」が最大値なんでしょうか。
「1」の基準は何でしょうか?

質問ばかりで申し訳ないのですが、ご存じの方教えてください。
よろしくお願いいたします。

254 :デフォルトの名無しさん:2009/09/26(土) 19:24:26 .net
少しは自分で考えないと相手にされないよ
もうされてないと思うけど

255 :デフォルトの名無しさん:2009/09/27(日) 03:19:10 .net
>>252
自分でスペアナ通せよ。

>>253
Maxが100%=1だと計算しやすいから。

256 :デフォルトの名無しさん:2009/09/27(日) 04:00:30 .net
>>255
本当にありがとうございます。

257 :デフォルトの名無しさん:2009/09/29(火) 14:23:14 .net
適当なGM音源モジュールを買ってMIDIで鳴らして録音
リアルな音じゃなくても、倍音構成を調べるくらいには使えるんでない?

258 :デフォルトの名無しさん:2009/09/30(水) 20:15:57 .net
本当にありがとうございます。

259 :デフォルトの名無しさん:2009/10/06(火) 05:56:05 .net
デシベルの計算式がまったく理解できなくて死にたい
-25dBから-30dBに音量が下がったら振幅値にいくつかければいいんだ…

260 :デフォルトの名無しさん:2009/10/06(火) 06:14:42 .net
まず日本語からだな

261 :デフォルトの名無しさん:2009/10/06(火) 06:34:53 .net
振幅100の正弦波を基準として(これが0dB?)音量が-5dB下がったときの振幅値を知りたいんだ…
説明すらできねぇ…

262 :デフォルトの名無しさん:2009/10/06(火) 07:07:58 .net
-25dBの正弦波を、-30dBの正弦波にしたいって事だよね?
>>250 の逆の変換になるので、この場合、10^(-5/20)を掛ければよいはずです。

263 :デフォルトの名無しさん:2009/10/06(火) 09:42:46 .net
dB = 20log(A/B) log:常用対数
(パワーの場合は10log(A/B))

-25dBから-30dBに音量が下がったら振幅値にいくつかければいいんだ…

-25dBの正弦波を、-30dBの正弦波にしたいって事だよね?
>>250 の逆の変換になるので、この場合、10^(-5/20)を掛ければよいはずです。



264 :デフォルトの名無しさん:2009/10/06(火) 10:40:13 .net
>>262-263
ありがとうございます!まさにコレが知りたかったんです…
教えていただいたことを参考にして
ttp://geocities.yahoo.co.jp/gl/flawtips0/view?.date=20050324
を試してみたのですが、同じ波形を得ることが出来ませんorz
計算は間違えてないと思うのですが…表が誤っているのでしょうか?

265 :デフォルトの名無しさん:2009/10/06(火) 13:59:15 .net
logとかフーリェ級数にピンとこないってことはreal中学生かな?
http://www.geocities.jp/flawtips0/Pic/wav2.html#p14
ここを見ると周波数分布の山の高さがdbと合ってるから表は間違ってないと思う


266 :デフォルトの名無しさん:2009/10/06(火) 15:02:14 .net
まあ特に独学で始める場合は年齢関係なく中学生レベルに見える
質問しちゃったりするしね。どんな分野でも。
育て直しじゃないが、学習のプロセスをゼロから辿り直すわけで。

日本語が中高生レベルに見える点にはあえてつっこまない

267 :デフォルトの名無しさん:2009/10/06(火) 17:22:03 .net
http://www.shonan.ne.jp/~hiro-s/pages/post-tut/fm.html
http://homepage3.nifty.com/sawai/neiro/neiro.html
http://flawtips.ami.amigasa.jp/blog/051230.html
http://www.terawave.net/amane/contents/soundworks/
http://d4.princess.ne.jp/msx/datas/OPLL/YM2413AP.html

268 :デフォルトの名無しさん:2009/10/06(火) 19:34:08 .net
質問する前に少しは考えるなり調べるなりしろよ・・・
検索すればすぐにわかるんだろそんなこと


269 :デフォルトの名無しさん:2009/10/06(火) 19:36:59 .net
>>264
重ね合わせる高周波の位相がずれてるとうまくいかないよ

270 :デフォルトの名無しさん:2009/10/06(火) 20:59:51 .net
はいそうですか

271 :デフォルトの名無しさん:2009/10/06(火) 23:41:37 .net
アー確かに、そういう奴いそうだわ

272 :デフォルトの名無しさん:2009/10/07(水) 07:29:49 .net
>>264
まず試してみたソースを出せ、話はそれからだ

273 :デフォルトの名無しさん:2009/10/08(木) 22:17:03 .net
>>245
違うバッファに用意しとけばいんじゃない?
メモリーのコピー作業はそんなに重くない
とこだよね
書き方によるけど

274 :デフォルトの名無しさん:2009/11/02(月) 14:47:39 .net
まぁ、大抵はめんどくさいから6dBで2倍(-6dBで半分)にしちまうけどな

275 :デフォルトの名無しさん:2009/11/17(火) 13:12:21 .net
-6dbは半分じゃなくて1/2乗だろ。
半分は1/2倍。

276 :デフォルトの名無しさん:2009/11/17(火) 21:11:57 .net
1/2乗は-3dB

277 :デフォルトの名無しさん:2009/11/17(火) 23:25:32 .net
えっ

278 :デフォルトの名無しさん:2009/11/18(水) 01:42:20 .net
馬鹿がいるな

279 :デフォルトの名無しさん:2009/11/18(水) 04:35:38 .net
逆立ちしたら草食性哺乳類一種鯨偶蹄目になっちまうな

280 :デフォルトの名無しさん:2009/11/18(水) 07:08:02 .net
ttp://av.watch.impress.co.jp/docs/news/20091117_329581.html
なんじゃこりゃ?

281 :デフォルトの名無しさん:2009/11/18(水) 08:21:50 .net
ものすごくリバーブが掛けられたゲーム音楽CDに発憤して
リバーブ成分を取り除いてみたことはあるな
そこからサラウンドに繋げられたか・・・

282 :デフォルトの名無しさん:2009/11/24(火) 12:58:22 .net
>>276
ばーか、エネルギーは振れ幅の二乗だろ。アホ

283 :デフォルトの名無しさん:2009/11/24(火) 13:47:16 .net
>>282
いつからエネルギーの話になったんだろうか
ああ脳内で世界が固定されちゃってるんですね

284 :デフォルトの名無しさん:2009/11/24(火) 14:04:51 .net
>>274
×>>275
×>>276

285 :デフォルトの名無しさん:2009/11/24(火) 14:10:04 .net
ttp://ja.wikipedia.org/wiki/デシベル
20log10(b/a) = 10log10((b/a)^2)

286 :デフォルトの名無しさん:2009/11/24(火) 14:25:19 .net
20*log10(2) = 6.02 dB
20*log10(1/2) = -6.02 dB

287 :デフォルトの名無しさん:2009/12/12(土) 14:30:44 .net


288 :デフォルトの名無しさん:2009/12/23(水) 05:08:00 .net
Windowsで、ネットワークから受信した音声データを
スピーカーに再生するプログラムを書いてるんだけど
再生の方が速くて困ってる。

具体的には、
20ms間隔で20ms分の音声データをwaveOutWriteで書き込んでるんだけど、
waveOutProcのコールバックが0〜15ms間隔くらいで返ってくる。

waveOutAPIってこういうもんなの?

289 :デフォルトの名無しさん:2009/12/23(水) 05:19:10 .net
yes

290 :デフォルトの名無しさん:2009/12/23(水) 13:45:32 .net
バッファが十分たまれば間隔は落ちる

291 :デフォルトの名無しさん:2009/12/24(木) 21:40:04 .net
DirectSound使え

292 :デフォルトの名無しさん:2009/12/24(木) 21:42:34 .net
そこでWASAPIですよ

293 :デフォルトの名無しさん:2010/01/07(木) 22:02:10 .net
Visual Basic 2005以降 or C#2005以降ならそこそこ開発できるスキルは持っています。
C言語はなんとなくわかりますが,非常に苦手です。
C++はわかりません。
VBでPCMデータをアップサンプリングするプログラムを作った経験はあります。

こんな私にもわかるようなASIO SDKの使い方を解説したサイトまたは書籍などご存じありませんでしょうか?


294 :デフォルトの名無しさん:2010/01/09(土) 00:00:32 .net
無理

295 :デフォルトの名無しさん:2010/01/09(土) 15:41:28 .net
デジタルフィルタがむずかしい。

296 :デフォルトの名無しさん:2010/01/10(日) 10:01:36 .net
「***が苦手です」とか「###が苦手です」って言う人は何が難しくて自分にできないか考えたことはあるの?
それがASIO SDKとどう結びつくかを他人に説明する気はないの?

297 :デフォルトの名無しさん:2010/01/10(日) 15:04:01 .net
山葵?

298 :デフォルトの名無しさん:2010/02/10(水) 10:44:38 .net
Windowsでbeep音だけで音階を作るサンプルコードがあれば教えてよ

299 :デフォルトの名無しさん:2010/02/10(水) 11:52:49 .net
>>298
double cdef[] = {3.0, 5.0, 7.0, 8.0, 10.0, 12.0, 14.0, 15.0};
for (int i = 0; i < 8; ++i)
{
DWORD freq = (DWORD)(440.0 * pow(2.0, cdef[i]/12.0));
Beep(freq, 500);
}


300 :デフォルトの名無しさん:2010/02/10(水) 12:04:09 .net
先越されてしまった。
がんばって作った俺の努力の結晶が無駄に・・・
http://codepad.org/VxXlvVkM

301 :デフォルトの名無しさん:2010/02/10(水) 12:13:17 .net
MMLまで作ったのかw

302 :デフォルトの名無しさん:2010/02/10(水) 17:28:35 .net
4分割多重MML再現したくなったw

303 :デフォルトの名無しさん:2010/02/12(金) 21:39:59 .net
>>300
努力した内に入らないよw

304 :デフォルトの名無しさん:2010/02/13(土) 21:52:44 .net
BASICでbeep文だけで声を鳴らすサンプルコードがあれば教えてよ

305 :デフォルトの名無しさん:2010/02/13(土) 22:02:26 .net
>>300
久し振りに笑うプログラムに出会った
これは面白い
Windowsにこのような機能がまだ残されていたとはw

306 :デフォルトの名無しさん:2010/02/13(土) 22:03:09 .net
何BASIC?

307 :デフォルトの名無しさん:2010/03/01(月) 03:52:18 .net
FFTを勉強中です
基本的な質問で悪いんだけども
周波数ごとの音量ってのは
実部のスペクトル?
それとも実部と虚部から求めるパワースペクトル?

308 :デフォルトの名無しさん:2010/03/01(月) 03:57:21 .net
補足です
パワースペクトルが音量に相当するなら
実部=0、虚部≠0の場合
周波数は無いのに、音量はあるのか?
実部が音量に相当するなら、パワースペクトルの意味ってなに?
とか、よくわかんなくなっちゃったのです


309 :デフォルトの名無しさん:2010/03/01(月) 05:09:56 .net
http://laputa.cs.shinshu-u.ac.jp/~yizawa/InfSys1/basic/chap6/index.htm
アニメで見ると分かりやすいね

310 :デフォルトの名無しさん:2010/03/03(水) 01:10:53 .net
>>309
読みました。
たしかにアニメーションついててわかりやすいですね。
んで、周波数ごとの音量に相当するのは、
パワースペクトルってことですね。
ありがとうございました。

311 :デフォルトの名無しさん:2010/04/23(金) 22:54:20 .net
SIMDなフィルタプログラムの英語か日本語のチュートリアル、どこかにありませんか?CPUには拘りません。

312 :デフォルトの名無しさん:2010/05/11(火) 22:50:57 .net
アップサンプリング時にゼロ補間してもスペクトルが変化しない理由ってなんでしょうか?


313 :デフォルトの名無しさん:2010/05/13(木) 23:02:00 .net
補間のあとのLPFで鏡像になって出てくるスペクトルをカットしてるから。

314 :デフォルトの名無しさん:2010/06/03(木) 09:06:10 .net
wavファイルの合成について相談です。

現在2つのwavファイルを読み込み、データ部を足し算することで「両方同時になっているwavファイル」を作成、出力することができました。
ここで疑問なのですが、16bitWAVの場合、データ部の値は
-32768〜32767
となりますが、2つの足し算なら「int型に変えたあと足して、限界を超えたら丸めこみ、shortの範囲に戻す」すればいいとわかります。

ですが、3つの音を足すとなると、丸めこみを最後に一括してやるか、足すたびにやるかで結果が変わってしまいます。
例:
丸め(30000 + 30000 - 10000) = 32767
丸め(丸め(30000 + 30000) - 10000) = 22767

今はまだ、足す音が3つと決まっているから1単位時間毎にintで計算>shortで吐き出しで問題ないのです。
が、もし「任意にユーザーの選択により次々音を足し算できるツール」のようなものを作る場合
やはり単位時間毎に一旦intとしてバッファを作り、WAVファイルとして出力する際に丸めこむべきなのでしょうか?


315 :デフォルトの名無しさん:2010/06/03(木) 11:52:39 .net
先に個数で割ればいいだろう

316 :デフォルトの名無しさん:2010/06/03(木) 13:11:05 .net
>>315
個数で割る。というのがよくわかりませんが、任意に追加できるため個数はその場その場で定まらないのを想定しています。

例えばAとBを合成して、とりあえずそれを再生。
ユーザーがそれを聞き、「やっぱりCも合成しよう」となった時などを想定しています。

AとBの合成音を再生するために、合成音を出力するバッファを用意しますよね。
その後Cを合成するのが決定した時、
・再度A、Bのデータもひっぱってきて、3音合成する
というよりは
・A+Bの合成音にCを合成する
ほうがメモリー効率や処理速度などで有利そうです。

ですがそれだと丸めこみ問題がでてしまいます。

317 :デフォルトの名無しさん:2010/06/03(木) 13:35:55 .net
普通は64bitとか128bitで計算して最後に戻すのよ。

318 :デフォルトの名無しさん:2010/06/03(木) 14:55:02 .net
>>普通は64bit
一体16bit音源を何万個合成するつもりだよw

319 :デフォルトの名無しさん:2010/06/04(金) 00:22:21 .net
>>316
> その後Cを合成するのが決定した時、

そんだけ仕様が未確定だと汎用的にプログラム書くしかないから効率もクソもない。
数百万サンプル程度の加算が問題になるような環境ならできることの自由度を下げる以外ない。

あと「〜そう」で目についたところを最適化するのはほぼ最悪の戦略。
かなりの確率で最適化ポイントを間違う

320 :デフォルトの名無しさん:2010/06/04(金) 17:33:01 .net
ごめんねぼくはdouble厨なので

321 :デフォルトの名無しさん:2010/06/04(金) 20:45:17 .net
コンプレッサ実装すれば?
r = 初期値1.0
出力サンプル = 合成サンプル * r
出力サンプルが16bit幅超えたら、r = abs(合成サンプル) / 32768.0 で更新
r < 1.0 なら時間経過と共に少しずつ1.0へ戻してやる

実用レベルで実装するなら細かいノウハウとかあるからDSP関係の文献自分で調べて

322 :デフォルトの名無しさん:2010/06/05(土) 00:00:11 .net
>>314は「丸め」とか用語が適切じゃないからちょっと知識が不足してる感じがするね。
俺もコンプレッサ/リミッタ関連について調べてみることをお勧めする。

323 :デフォルトの名無しさん:2010/06/08(火) 11:34:15 .net
コンプレッサーはデータを改変してしまうからよくないだろ。
ノーマライズすればいい。

324 :デフォルトの名無しさん:2010/06/08(火) 18:08:07 .net
いまどき整数とか面倒
不動明王を使うだろ普通

325 :デフォルトの名無しさん:2010/06/09(水) 09:59:47 .net
恐れ入谷の鬼子母神

326 :デフォルトの名無しさん:2010/06/11(金) 21:27:02 .net
>>314
分解能32ビットとかで作業用データ配列を作成すると良い。すべて加算した後16ビットレンジに収まるよう最適化する。

一旦WAVファイルをセーブした後、さらに別のWAVファイル加算したいときは、16ビットでは精度が不足するので、
以下の方法を取る。

WAVファイルの分解能をfloatか24ビットとする。フォーマットの設定が16ビットと異なるがちゃんと再生されるWAVファイル
を作成することができる。

参考:
WAVEFORMATEX構造体
WAVE_FORMAT_IEEE_FLOAT


327 :デフォルトの名無しさん:2010/06/11(金) 21:35:42 .net
float
-> WAVEFORMATEX
24ビット
-> WAVEFORMATEXTENSIBLE


328 :デフォルトの名無しさん:2010/06/20(日) 01:58:19 .net
midiデータから波形を作成するにはどうすればいいですか?

329 :デフォルトの名無しさん:2010/06/20(日) 11:29:53 .net
ソフトウェア音源でファイルに出力する

330 :デフォルトの名無しさん:2010/06/20(日) 17:38:34 .net
waveout

331 :デフォルトの名無しさん:2010/06/21(月) 02:37:19 .net
中古楽器屋でMT-32というのを探して買ってくるんだ

332 :デフォルトの名無しさん:2010/06/21(月) 02:40:31 .net
ソフトウェア音源を作りたいって話だろ!

333 :デフォルトの名無しさん:2010/06/21(月) 13:39:43 .net
MT-32まだ持ってるなーw

334 :デフォルトの名無しさん:2010/06/21(月) 18:37:52 .net
それGM非対応や!

335 :デフォルトの名無しさん:2010/06/22(火) 17:59:37 .net
ソフトウェア音源を作るにはどうすればいいですか?

336 :デフォルトの名無しさん:2010/06/22(火) 18:04:23 .net
どんなのが作りたいんだ?

337 :デフォルトの名無しさん:2010/06/22(火) 18:27:24 .net
MIDIデータには、どの楽器でどの高さの音をどのくらいの強さで出すか
とかそんなデータが入ってる。
この楽器の音は演奏する側が用意しなきゃならない。
実際の楽器の音などをサンプリングして内蔵しておいて要求に合わせて
編集して出すことになると思うよ。

338 :デフォルトの名無しさん:2010/06/22(火) 18:56:28 .net
今で言うところのマルウェア認定のwingrooveまだ使ってるわ

339 :デフォルトの名無しさん:2010/06/22(火) 21:27:55 .net
波形データの作成はできても、OSのサウンドAPIに鳴らさせるのがやっかい。

340 :デフォルトの名無しさん:2010/06/23(水) 02:34:56 .net
そこは定型処理だからほぼ悩む所じゃないけどな

341 :デフォルトの名無しさん:2010/06/23(水) 06:13:28 .net
>>338
破壊型のウィルスだろう

342 :デフォルトの名無しさん:2010/06/23(水) 09:18:12 .net
ワレザー乙

343 :デフォルトの名無しさん:2010/06/23(水) 10:26:03 .net
波形データをサンプリングせずにプログラムのみで作成したいのです

344 :デフォルトの名無しさん:2010/06/23(水) 10:36:19 .net
そんな当たり前のことを質問するような椰子に何を言っても無駄だYO

345 :デフォルトの名無しさん:2010/06/23(水) 10:41:08 .net
>>343
そしたら普通に式書いてそれでウェーブ作ればいいじゃない。
まずはサイン波でやってみそ

346 :デフォルトの名無しさん:2010/06/23(水) 10:41:16 .net
ウイルス 寄生 自己増殖
ワーム 非寄生 自己増殖もしくは移動
トロイ 寄生 非自己増殖
マルウェア 上記を含む迷惑ソフト全般

347 :デフォルトの名無しさん:2010/06/24(木) 20:27:32 .net
ウィルス対策ソフト 寄生 定義ファイルのダウンロードによる自己増殖 有料

348 :デフォルトの名無しさん:2010/06/25(金) 12:45:15 .net
メガデモ的なサウンド演奏プログラムを作りたいな。
できる限り少ない容量で、いい音を出すって言う。

349 :デフォルトの名無しさん:2010/06/25(金) 19:40:32 .net
メガデモはやり始めたらキリがない。

350 :デフォルトの名無しさん:2010/06/25(金) 21:47:45 .net
>>343
シンセ作りたいってことでしょ?
ニコニコ動画にJavaでソフトシンセ作ってる人がいるよ。

ところでこのスレの住人でJava使ってる人いる?
Javaにサウンドプログラミングは耐えられるかな。

351 :デフォルトの名無しさん:2010/06/26(土) 11:40:24 .net
イコライザーってどうやるのでしょうか?
キーワードだけでもいいので教えていただけると幸いです

352 :デフォルトの名無しさん:2010/06/26(土) 12:20:10 .net
>>350
Java自体は問題ない。Javaで書かれた音楽ソフトもある。

>>351
http://www.musicdsp.org/files/Audio-EQ-Cookbook.txt

353 :デフォルトの名無しさん:2010/06/26(土) 13:15:16 .net
>>352
ありがとうございます!読ませていただきます。

354 :デフォルトの名無しさん:2010/06/26(土) 16:58:02 .net
>>335
つ ttp://msdn.microsoft.com/en-us/library/ff537519(VS.85).aspx

カーネルモードで動くドライバーを書く必要がある
素人では無理


355 :デフォルトの名無しさん:2010/06/26(土) 19:15:35 .net
ソフトウェアMIDI音源だったらそうだろうけどさ

356 :デフォルトの名無しさん:2010/06/27(日) 13:00:21 .net
ここの人たちは仕事をなにを?

357 :デフォルトの名無しさん:2010/06/27(日) 13:02:37 .net
仕事がない鬱だ死のう

358 :デフォルトの名無しさん:2010/06/27(日) 20:25:49 .net
DFTで周波数分解能をあげるためにゼロ詰めしたりしますが、なぜこれが許されるのですか?

元の波形のスペクトルを変えてしまっていることになりませんか?

359 :デフォルトの名無しさん:2010/06/27(日) 20:36:58 .net
それで増えるのは元々のナイキスト周波数を超える部分だから削れば問題なし

360 :デフォルトの名無しさん:2010/06/27(日) 20:47:45 .net
ということは、結局周波数分解能はあがらないということですか?

1



361 :デフォルトの名無しさん:2010/06/27(日) 22:33:32 .net
>>350
おお、ありがとう。
これをC++に移植してみるよ。

362 :デフォルトの名無しさん:2010/06/30(水) 12:37:42 .net
ナイキスト周波数のサイン波ってパルス波になってるから
元の周波数は保存できても音質みたいなのは絶対違うと思うけど
なんで誰も突っ込まないのか不思議。

363 :デフォルトの名無しさん:2010/06/30(水) 12:47:02 .net
厳密な矩形波なら帯域が無限大まで伸びてる。
それをナイキスト周波数でばっさり切る理想的なローパスフィルタを通せば、
元の通りのサイン波が出てくる。

364 :デフォルトの名無しさん:2010/06/30(水) 13:30:12 .net
0埋めの理由が、本当に周波数分解能を上げるためなのかどうか、って話?

365 :デフォルトの名無しさん:2010/06/30(水) 21:39:22 .net
>>363
それよりも位相がずれてたら、波形がなくなるよな
そっちが問題

366 :デフォルトの名無しさん:2010/07/01(木) 21:40:22 .net
単に2倍を越える周波数でサンプリング云々ではなく、実際にはもっと難しい計算があるらしく、それを行うと位相のタイミングのずれは無問題らしい。

367 :デフォルトの名無しさん:2010/07/01(木) 21:45:27 .net
あ、サンプリング定理の話じゃないのか。まあいいか。

368 :デフォルトの名無しさん:2010/07/01(木) 22:24:22 .net
>>366
どういうこと??詳しく
サンプリングポイントを最高周波数の位相に合わせてシフトするの?

369 :デフォルトの名無しさん:2010/07/02(金) 11:07:18 .net
http://embedded.com/design/207400936?pgno=3
こゆ話?

370 :デフォルトの名無しさん:2010/07/02(金) 14:02:38 .net
>>360
0埋めしてDFTサイズ増やしたって本当の意味での分解能が上がるわけないでしょ。
ただsinc補完される(丸くのっぺりした波形になる)だけだよ。

371 :デフォルトの名無しさん:2010/07/03(土) 19:28:49 .net
つまりアップサンプリングでサンプリングレートを上げている=周波数分解能があがっている

ということですよね?ただアップサンプル時に差し込んだ0に意味がないと

372 :デフォルトの名無しさん:2010/07/05(月) 13:58:12 .net
パルス波はサイン波と違って倍音を含むだろ?
サンプリングレートの半分のサイン波はパルス波になってるだろ?
でもサンプリングレートの半分以上の周波数は出ないはずだろ?
ではパルス波の倍音はどこにいったの?

373 :デフォルトの名無しさん:2010/07/05(月) 14:24:51 .net
周波数帯域無限大のマイクとかスピーカーとかケーブルを持っている人はうらやましいですね(棒)

374 :デフォルトの名無しさん:2010/07/05(月) 14:47:56 .net
鼓膜もね

375 :デフォルトの名無しさん:2010/07/05(月) 15:12:31 .net
きっと頭にデジタル入力端子が付いてるんだよ

376 :デフォルトの名無しさん:2010/07/05(月) 15:41:19 .net
>>372
ナイキストレートで折り返す


377 :デフォルトの名無しさん:2010/07/05(月) 15:59:37 .net
折り返しが自分と重なって、表現できないんじゃないかな


378 :デフォルトの名無しさん:2010/07/06(火) 19:25:07 .net
>>372
>サンプリングレートの半分のサイン波はパルス波になってるだろ?
意味不明

379 :デフォルトの名無しさん:2010/07/06(火) 20:56:45 .net
1サンプルで半周期ってことだろ

380 :デフォルトの名無しさん:2010/07/08(木) 22:53:42 .net
0.5fsの純粋なサイン波なら普通に0.5fsのサイン波としてデータ化されるでしょ。
どこから「パルス波」が出てくるのかわけわからん。
0.5fsを超える周波数成分がある信号なら超えてる部分は折り返すし、倍音(1.0fs)
成分があるならそれは折り返してDC成分になる。

381 :380:2010/07/08(木) 23:57:43 .net
「普通に」というのは訂正。
初期位相によっては振幅がどっかいっちゃう(最悪0になる)。


382 :デフォルトの名無しさん:2010/07/09(金) 00:03:46 .net
プログラム上はDCオフセット許容していいもの?
カップリングコンデンサが大抵入るから16〜20Hzぐらいの余裕が必要?

383 :デフォルトの名無しさん:2010/07/12(月) 22:36:01 .net
ASIOプログラミングに初挑戦してるんですが、
ASIO SDK 2.2 についてきた hostsample をビルドすると
(hostsample.vcproj を VC++2008 でオープン)
Debugビルド → 正常に動く
Releaseビルド → 動かない
となってしまいます><
たどってみると、ASIOGetChannels()がReleaseビルドの時は
おかしな値を返してる(outputチャンネル数が2なのに8と)ようです・・・
何がだめなのでしょうか?

384 :デフォルトの名無しさん:2010/07/12(月) 22:39:52 .net
だめな点がだめなのだと思いますよ

385 :デフォルトの名無しさん:2010/07/12(月) 23:02:23 .net
ASIOは音源チップやドライバに影響されまくった経験あるので
とりあえずばっさり違うPCでデバッグするのが吉

386 :デフォルトの名無しさん:2010/07/12(月) 23:06:12 .net
自己解決しました

387 :383:2010/07/12(月) 23:23:29 .net
>>385
ありがとうございます
見た感じシンプルで間違えようが無さそうなんですけどねー>hostsample
ライブラリとかプロジェクトの設定まわりでもう少しもがいてみます
一応ASIO対応のプレーヤーからは音が出るので正しいやり方はあるんでしょうね・・・


388 :デフォルトの名無しさん:2010/07/12(月) 23:29:24 .net
いえいえ

389 :デフォルトの名無しさん:2010/07/12(月) 23:30:34 .net
おまえアク禁な

390 :デフォルトの名無しさん:2010/07/13(火) 15:00:48 .net
漏れもASIOで音を出したいな。

391 :デフォルトの名無しさん:2010/07/23(金) 00:17:24 .net
他スレから誘導されてきました
質問させてください
サーバでwavファイルをいろいろ操作しながらストリーミング配信のようなことをしたいので、
その方法を模索中です

具体的には、ドップラー効果を付加したwavファイルをクライアントに聞かせたいのですが、
ストリームで流すためにはどのようにwavファイルを生成すればよいでしょうか?

392 :デフォルトの名無しさん:2010/07/23(金) 01:56:36 .net
波形作り終わってる前提ならタダのRIFF-WAVEフォーマットでおくりゃーいーじゃんか

393 :デフォルトの名無しさん:2010/07/23(金) 03:35:46 .net
waveのファイル読み書きするプログラムを組んでます。
波形のデータはすぐに読み込むことが出来たのですが、
ここから時間ごとの音量のグラフを作るにはどうすればいいですか?


394 :デフォルトの名無しさん:2010/07/23(金) 06:59:43 .net
波形は取れたんだろ? なら後は好きなようにプロットしろ。このスレの領分じゃねぇ

395 :デフォルトの名無しさん:2010/07/23(金) 15:08:29 .net
音量を得る方法はこのスレの範疇だろがよ
二乗平均平方根でググれ

396 :デフォルトの名無しさん:2010/07/23(金) 17:14:45 .net

>>393
音量とは何かって事とWavファイルの情報は何を意味するのかを考えてごらん


397 :393:2010/07/23(金) 18:11:22 .net
無事、望んでいた結果が出ました。
ありがとうございます。

398 :デフォルトの名無しさん:2010/07/23(金) 23:43:47 .net
時間毎に最大値を表示したらいけないの?

二乗平均平方根とか大学行くと勉強するのでしょうか。

399 :デフォルトの名無しさん:2010/07/24(土) 00:14:49 .net
おまえには関係ねえよ

400 :デフォルトの名無しさん:2010/07/24(土) 04:19:29 .net
そっちはPEAKだな
波形のクリッピングを検知するのに使われる
聴覚上の音量とはほど遠いぞ

401 :デフォルトの名無しさん:2010/07/24(土) 10:33:48 .net
耳へのダメージを測るためにエネルギー計算をします

402 :デフォルトの名無しさん:2010/07/26(月) 21:41:54 .net
1/3octで帯域分割してラウドネス求めろ
もしくは聴覚フィルタシミュレーションしろ
パターソンの論文でも嫁

403 :デフォルトの名無しさん:2010/07/27(火) 13:26:07 .net
>>400
アナログなメーターの動作か?
あれはピークじゃないんだ。

404 :デフォルトの名無しさん:2010/07/27(火) 23:55:51 .net
聴感上の音量とかピークとかと耳へのダメージもほど遠いと思うんだ

405 :デフォルトの名無しさん:2010/09/16(木) 08:39:48 .net
>>393
遅レスですまんが、ラウドネス計算をするプログラム見つけたので貼っとく。
http://d.hatena.ne.jp/amarui/20100223/1266893744

406 :デフォルトの名無しさん:2010/10/28(木) 08:47:48 .net

ピッチシフトですごく遅いピッチのときに
ノイズを軽減する良い方法ってありますか?
なるべく処理が重くない実装を探しています。

407 :デフォルトの名無しさん:2010/10/28(木) 18:50:58 .net
面倒なんでボリュームを落としてる

408 :デフォルトの名無しさん:2010/11/04(木) 23:07:08 .net
FFTの勉強してるんですが
FFTで求まったフーリエ級数にどんな処理をして逆FFTすれば
ピッチの変更が出来ますか?

409 :デフォルトの名無しさん:2010/11/05(金) 03:46:20 .net
簡単なMML音源のようなもの作ってみたんですが、音量上げるとすぐクリッピングするし
音量下げると個々の音が小さくて困ってます。
皆様どう対処されてるんでしょう

410 :デフォルトの名無しさん:2010/11/09(火) 13:10:43 .net
>>408
ピッチの変更を、音色とテンポを変えずにピッチだけ変更とエスパーしてみる
FFTを勉強し始めたレベルでは、この課題は難しすぐる
マジで答えると本が書ける

ローパス・ハイパスなんかのフィルターや
ハムキャンセラーやイコライザーから始めては

>>409
どんな音源波形か知らんが、サイン波にエンベロープをかけた程度なら
その現象がおこる

音の強さは音量によるのではなく、アタック部分の音質による
ノイズやインパルス成分

サンプリング音を使うのも手だが、ちゃんとした音源作りは難しいよ


411 :デフォルトの名無しさん:2010/11/09(火) 19:05:40 .net
リミッターの話じゃないのかな。俺の知る限り銀の弾丸はない。

412 :デフォルトの名無しさん:2010/11/27(土) 00:20:04 .net
NintendoDSiに入ってる録音した音をトランペット風に変化させるってどんなアルゴリズムなのかな?

413 :デフォルトの名無しさん:2010/11/27(土) 06:24:18 .net
サンプルを

414 :デフォルトの名無しさん:2010/11/27(土) 14:08:44 .net
周波数を変えずに波形だけ変えるんじゃまいか

415 :デフォルトの名無しさん:2010/11/27(土) 18:19:42 .net
ピッチとレベルを抽出して、サンプラーを叩く
かな?


416 :デフォルトの名無しさん:2010/11/28(日) 21:27:27 .net
PCMはならしてないとおもうなー

417 :デフォルトの名無しさん:2010/11/29(月) 12:19:36 .net
だったら、元音から一波切り出してループ再生
エンベロープをトランペット風にアレンジ


418 :デフォルトの名無しさん:2010/12/03(金) 23:50:49 .net
BLITってのの原理がいまいちよくわからないんだけど、
日本語で解説してあるページってありませんか?
musicdspとかに英語で解説してあるテキストはあるんですが、わかんない……

419 :デフォルトの名無しさん:2011/01/05(水) 23:52:35 .net
瞬時周波数ってどういうもの?
何に役立つのかがわからん

420 :デフォルトの名無しさん:2011/01/17(月) 10:45:40 .net
自動車の速度メーターと同じ

421 :デフォルトの名無しさん:2011/05/11(水) 13:54:57.62 .net
保守

422 :デフォルトの名無しさん:2011/05/11(水) 20:02:21.43 .net
点検

423 :デフォルトの名無しさん:2011/05/14(土) 02:39:14.50 .net
これ良いね
早く普及して欲しいわあ

http://chromium.googlecode.com/svn/trunk/samples/audio/specification/specification.html

424 :デフォルトの名無しさん:2011/05/14(土) 17:46:14.44 .net
結構本格的に実装されてるのはいいが
リアルタイムだとCPUパワー余っててもブツ切れだな

>>418
今更かもしれないけど、要は矩形波や鋸波の倍音構成を
正弦波の合成で再現してやれば絶対に折り返しノイズが発生しないって理屈

425 :デフォルトの名無しさん:2011/05/14(土) 18:35:41.66 .net
>>424
その理屈自体はわかりますが、実際にリアルタイムに正弦波で矩形波とかを合成すると
どう足掻いても音が飛んでしまいプチノイズの嵐になるわけで。
それを避ける為の合理的な計算なんかも恐らくBLITってのには含まれてると思うんですが。
どっちかってーとそっちを知りたい。

426 :デフォルトの名無しさん:2011/05/14(土) 19:32:35.23 .net
単純計算で、200Hzを合成すると20kHzまでとして100個か

427 :デフォルトの名無しさん:2011/05/14(土) 20:15:42.12 .net
FFTするサンプル数増やすと、パワーの最大値が増えるのはなぜですか?
10000Hzの正弦波waveファイル(16bit)を窓関数なしでFFTしたとき
サンプル数が以下のときの最大のパワーは
1024 は 15701165
2048 は 25431718
4096 は 62699682
8192 は 101021697
でした
同じ正弦波なのに最大値が違うのが
なんか納得行かないんです

428 :デフォルトの名無しさん:2011/05/14(土) 23:25:45.40 .net
>>425
BLITは>>424で解説した理屈以上のものじゃないぞ
実装時は基音を元にした各倍音の位相テーブルを作っておいて
合成するのが一般的・・・なハズだ。俺もそんなに多くの実装を目にしたわけじゃないが

429 :デフォルトの名無しさん:2011/05/14(土) 23:31:20.13 .net
>>427
1024サンプルで正弦波が途切れるwaveファイルに
各サンプル数でFFTをかけてみたらどうなるかな?

430 :デフォルトの名無しさん:2011/05/14(土) 23:36:14.42 .net
1Hzの正弦波のテーブル作っといて、希望の周波数をインターバルにテーブルを
読んでく、っていう手法の解説を(それとは関係ないけど)昔読んだことがある。

440個ごとに読み出せば440Hzの波形が出てくる、ってことね。

431 :デフォルトの名無しさん:2011/05/15(日) 00:04:26.79 .net
DDSのハードウェア実装はそんなんだったかな。

432 :デフォルトの名無しさん:2011/05/15(日) 00:16:43.77 .net
>>429
回答ありがとうございます
ご指示の通りサンプル数453のwaveファイルで試したところ
以下のような結果になりました(FFT時に、波形の無い部分は0埋め)
1024 … 7200310
2048 … 7200310
4096 … 7284914
8192 … 7284914
4096と8192が微妙に違いますが、ほぼ同一の値が得られました

この結果はつまり、>>427で値が違ったのは
切り出した波形の総エネルギーが違うから
という理解でいいんでしょうか?
最大パワーは2048なら1024の2倍、4096なら4倍になるというような感じで

433 :デフォルトの名無しさん:2011/05/15(日) 12:42:05.05 .net
>>432
その解釈でいいと思う.
DFTの定義によるけど,サンプルを総和することになるからFFTポイント増やすと値は増えるはず.
そのFFTの値をそのまま逆変換する場合,サンプル数で割るから値は増えずに元に戻るよ.
http://ja.wikipedia.org/wiki/離散フーリエ変換

434 :デフォルトの名無しさん:2011/05/15(日) 23:06:01.47 .net
>>433
ありがとうございました
独学でやってるんで
ふとした疑問を聞ける人がいなくて困ってたんです
助かりました

435 :デフォルトの名無しさん:2011/05/16(月) 08:58:32.29 .net
OpenALにはハード毎の同時発音数制限が無いのでしょうか?
手持ちの2つのデバイスで再生させると、両方とも一応256ソースまではAL_NO_ERRORで同時再生できてしまいました。音は潰れますが。
ソフトウェア処理だからだとしたら、逆にハードウェアでOpenALに対応していたら発音数が256以下だったりするのでしょうか?

436 :デフォルトの名無しさん:2011/05/16(月) 09:56:29.19 .net
あった気がする
もうあんまり覚えてないけれど、十何個かそこらしか生成できなかった記憶が

437 :デフォルトの名無しさん:2011/05/16(月) 15:42:28.67 .net
取り敢えず仕様としては決まってないよな
実装依存だと思う

438 :デフォルトの名無しさん:2011/06/01(水) 18:46:50.15 .net
44100のWAVE波形を半音上げ下げするにはレートをいくつにすればいいんですか

439 :デフォルトの名無しさん:2011/06/01(水) 20:31:34.74 .net
1オクターブ上が2倍
1オクターブは12半音
なので半音上は2^(1/12)倍
あとは計算して

440 :デフォルトの名無しさん:2011/06/01(水) 20:49:34.76 .net
thx
あと、音ってなんで足して2で割ると混ざるの?
すごい不思議なんだけど

441 :デフォルトの名無しさん:2011/06/01(水) 23:39:43.31 .net
足す操作そのものが混ぜることだから。
水面の波紋も同じ。

442 :sage:2011/06/10(金) 12:50:15.47 .net
VSTで簡単なVUメーターを作ってるんだけど、
VSTGUIを使って、Idle()のなかで描画するようにしたら、なんだか動きが遅くて・・

VUメータのようなものを描画するときは、
「GDI+」とか、「directX」で描画したほうがいいのかな・・?

誰か、詳しい人おしえてくらはい


443 :デフォルトの名無しさん:2011/06/10(金) 13:29:46.46 .net
リアルタイムな描画をもとめないならGDIで描画したほうが楽だよ。

444 :sage:2011/06/10(金) 13:42:33.15 .net
ありがとう!
ひとまず、GDIでやってみます。

445 :デフォルトの名無しさん:2011/06/12(日) 03:56:21.18 .net
VSTはDTM板にもスレがあるので参考に

446 :デフォルトの名無しさん:2011/07/13(水) 23:20:28.69 .net
1bitのデータをマルチビットのPCMに変換したいのですが,
全くイメージできずに行き詰っています。

PCMであれば間に0を挟んでアップサンプリング,FFT,
LPFといった処理をしたことはあるのですが,1ビットは
ちんぷんかんぷんで・・・
どなたか,勉強のしかたをアドバイスいただけないでしょうか?

PS3でのDSD→PCM変換は教科書どおりにやっているから音
質がよいといった表現を見かけますが,その教科書に相
当する考え方をまずは知りたいと思っています。


447 :デフォルトの名無しさん:2011/07/13(水) 23:49:06.80 .net
本物のDACもLPF通すだけみたいな状態だし
単純にLPFのあと間引きすればいいんじゃないの?

448 :デフォルトの名無しさん:2011/07/14(木) 22:49:54.08 .net
1ビットのデータにどうやってLPFをかければいいかわかりません。

PCMであれば,

倍精度浮動小数点の配列→FFT→LPF→逆FFT→倍精度浮動小数点の配列

という手法ならわかるのですが,1ビットのときは???


449 :デフォルトの名無しさん:2011/07/15(金) 05:18:09.01 .net
>>446
+1と-1の集合だから
落とし込みたいサンプリング周波数の範囲で足し算して割るだけ

450 :デフォルトの名無しさん:2011/07/15(金) 22:58:53.96 .net
>>449
ごめんなさい。よくわかりません。

>+1と-1の集合だから
これはわかりました。1と0ではないのすね。

>落とし込みたいサンプリング周波数の範囲で足し算して割るだけ
ここがわかりません。
もしよろしければ,もう少し具体的にお教えいただけるとありがたいのですが。
1bit 2822400Hz→16bit 44100Hzだとどのような計算になるでしょうか?

2822400個の配列があるとして,
0〜44099の1or-1を合計して,その値を44100で割るという事になるのでしょうか?

あれ,でもこれだと1秒間に64サンプリングしかできない・・・





451 :デフォルトの名無しさん:2011/07/15(金) 23:25:44.27 .net
単純なFIRフィルタも理解できないのか?
とりあえず答えの一つみたいの見つけた
ttp://www.hydrogenaudio.org/forums/index.php?showtopic=37717&start=0&p=670042&#entry670042
ttp://www.hydrogenaudio.org/forums/index.php?act=attach&type=post&id=5524

452 :デフォルトの名無しさん:2011/07/15(金) 23:35:52.83 .net
>>451
コメントありがとうございます。

>単純なFIRフィルタも理解できないのか?
はい。全くわかりません。
今回の処理に必要という事でしょうか?そのキーワードもあたってみます。

>とりあえず答えの一つみたいの見つけた
ありがとうございます。VB開発者なものでソースコードの解読に苦労しそう
ですが,こちらも勉強してみます。

少し道がひらけた気がします。ありがとうございます。

453 :デフォルトの名無しさん:2011/07/16(土) 00:08:10.45 .net
FFTした後にどんなLPFフィルタ使ってたんだろ・・・

454 :デフォルトの名無しさん:2011/07/16(土) 00:16:12.16 .net
>>453
LPFに「どんな」ってどういう事でしょうか?
単純に一定周波数以上の値を「0」にしてから逆FFTしてるだけなのですが・・・


455 :デフォルトの名無しさん:2011/07/16(土) 12:09:18.41 .net
>>449
1ビット 2822400Hz→マルチビット 44100Hzの場合

仮に32768サンプルの1bitデータがるとして,
2822400÷44100=64なので
64個毎に合計して,その値を64で割ることを512回繰り返せば,
512サンプルのPCMなったりするかなぁ思うのですが,どうでしょうか?


456 :デフォルトの名無しさん:2011/07/16(土) 22:28:25.89 .net
これ普及して欲しいなあ

https://wiki.mozilla.org/Audio_Data_API

457 :デフォルトの名無しさん:2011/07/18(月) 12:35:39.55 .net
NaClでも出来そうだ

458 :デフォルトの名無しさん:2011/07/18(月) 22:40:35.17 .net
HTML5のAudio Data APIでWAVファイルの音階を変えて
再生するのって出来ないんでしょうか
mozSetupやmozSampleRateで周波数を変えてもうまくいかず
WAVファイルの音階を変えて再生する作曲ソフトを作りたいんだけど
JavaScriptが駄目ならC言語とかでもいいんだけど
そもそも音階というのは単に周波数の値を変更するだけで変えられるもんなんでしょうか
それともデータをちゃんといじってあげないといけないのか

459 :デフォルトの名無しさん:2011/07/19(火) 01:01:25.74 .net
>>456
これはすごいな、普通にFireFox上で動作するソフトシンセとか見つかってびっくりした。
時代を感じる。

460 :デフォルトの名無しさん:2011/07/27(水) 22:59:59.82 .net
やはり,1bit→PCMがわかりません。
1,1,1,0,1,1,1,1
という1bitの連続したデータを
同じサンプリング周波数のマルチビット整数にすると
1,2,3,2,3,4,5,6
となる。
という考え方は誤っているでしょうか?

上記の方法で作成したPCMデータは音としては聞き取れますが,
音質としてはひどいものでした。
低域がかろうじて鳴っているだけで,中域,高域はまったく感じられませんでした。

どなたかアドバイスをいただけないでしょうか?

461 :デフォルトの名無しさん:2011/07/29(金) 11:05:29.12 .net
ちょっとぐぐればいくらでも出てくるのに自分で調べる気ねぇの?
ttp://oshiete.goo.ne.jp/qa/1816052.html
ttp://patent.astamuse.com/ja/published/JP/No/2008141470/
ttp://blog.goo.ne.jp/commux/e/e08c353a7d0d5be49a00c3c61e7b8372
まぁ既に読んでてそれでも解らないってんならお前には無理だから諦めろ

462 :デフォルトの名無しさん:2011/07/29(金) 23:03:13.95 .net
>>461
ありがとうございます。
この2週間ほどグーグルに聞いてはいたものの,理解できるような
文献が見つからなかったので,こちらを頼った次第です。

2つ目は見つけましたが,理解不能でした。
1つ目と3つ目はまだ見たことがなかったので,これから読んでみよ
うと思います。

この度は誠にありがとうございました。
重ねてお礼申し上げます。

463 :デフォルトの名無しさん:2011/08/10(水) 17:26:29.68 .net
>>461は意外といいやつだと思う

464 :デフォルトの名無しさん:2011/08/15(月) 08:33:50.58 .net
サイン波を入力するときって
サイン関数の値を書き込む方法みたいなダサい方法は普通使いませんよね。
ということでみんなやってるやり方とかはどの本に乗ってますか?

465 :デフォルトの名無しさん:2011/08/15(月) 10:47:57.13 .net
日本語でOK。

466 :デフォルトの名無しさん:2011/08/15(月) 10:49:18.14 .net
OK?おkじゃなくて?
恥を晒したな・・・
というわけでレスポンスよろwww

467 :デフォルトの名無しさん:2011/08/15(月) 11:16:50.80 .net
> サイン関数の値を書き込む方法みたいなダサい方法は普通使いませんよね。

そうなの?

468 :デフォルトの名無しさん:2011/08/16(火) 17:33:17.53 .net
>>464
お前の考えるスマートな方法を先に言えよw

469 :デフォルトの名無しさん:2011/08/17(水) 06:03:03.15 .net
IIRでぶんまわすだけじゃ駄目なの?

470 :デフォルトの名無しさん:2011/08/18(木) 14:55:06.34 .net
コサイン関数の値を書き込む

471 :デフォルトの名無しさん:2011/08/18(木) 17:37:12.63 .net
方形波にLPFをかける

472 :デフォルトの名無しさん:2011/08/19(金) 23:43:29.00 .net
1本だけ立てて逆FFTする

473 :デフォルトの名無しさん:2011/09/06(火) 21:10:52.49 .net
サンプリング周波数変換の方法をどなたかお教えいただけないでしょうか?
自分で調べてやってみた方法は,

1. 44.1kHzに0を挿入して8倍(352.8kHz)にアップサンプリング
2. FFT→LPF(音の周波数22.05kHz)→逆FFT
3. 352.8kHzを間引いて48kHzにする

上記の方法では,処理も遅く高域にノイズが発生しているように聞こえます。

どなたかテクニックを伝授していただけないでしょうか?

474 :デフォルトの名無しさん:2011/09/06(火) 21:44:25.26 .net
>>473
ttp://www.madlabo.com/mad/book/
ここの「任意レート変換 サンプリングレートコンバータ.pdf」がわかりやすい


475 :デフォルトの名無しさん:2011/09/09(金) 13:33:50.63 .net
>>473
高域にノイズ発生の問題はLPFの効きが弱く、折り返し歪が発生しているのでは?
極端に遅いなら2のやり方がおかしい気がする。

476 :デフォルトの名無しさん:2011/09/10(土) 21:40:40.41 .net
>>474
ありがとうございます。
私には難解な内容ですが,一読してみようと思います。

>>475
>高域にノイズ発生の問題はLPFの効きが弱く、折り返し歪が発生しているのでは?

コメントありがとうございます。
整数倍の場合は品質的に問題ないように思います。
恐らく非整数倍のときの「3」の間引き方の方法を工夫しなくては
いけないのかと思って入るのですが・・・

477 :デフォルトの名無しさん:2011/09/14(水) 23:43:13.48 .net
>>473
きれいにやるには >>474 のような方法が現実的だし、実際よく行われてます
44.1kHz:48kHz=147:160なので、
タップ長(たとえば101)×(出力パターン数)160の
係数テーブルを作って計算します
(係数を削減する方法もある)

>>473 のようにFFTを使いたいなら、
窓がけ、オーバーラップ、などをしないと不連続ノイズが出ると思います
FFTするし、それなりに重いのは仕方ないでしょう

適当にやるには、(0挿入ではなく)前の値を保持(0次ホールド)するか
直線補完(1次ホールド的な?)でもしながら48kHz信号を無理やり作り、
20kHzくらいのカットオフの高めの次数のLPF(IIRなら8次以上とか)をかければ、
まあきれいではないけど、軽くできるできるんじゃないかな

波形の見た目のきれいさを求めて、あんまり音的には意味の無い
近時曲線でサンプルを補完しちゃう人もいますけどね
それが割といい音がすることもw


478 :デフォルトの名無しさん:2011/09/15(木) 09:23:19.37 .net
アップサンプリングなら元データのほうが周波数低いんだから
画像みたいに数タップのLanczosで補完しちゃだめなの?
Bスプラインを使ってたハイエンドメーカーもあったようだけどそっちは高域が落ち込むだろうし

479 :デフォルトの名無しさん:2011/09/15(木) 14:26:55.65 .net
というか、ハードディスクの容量とか制限ほとんどないんだし
する意味無いだろ。

480 :デフォルトの名無しさん:2011/09/15(木) 21:23:55.86 .net
>>478
> アップサンプリングなら元データのほうが周波数低いんだから
というよりサンプリング周波数比が単純じゃないのが面倒なのでしょう

> 画像みたいに数タップのLanczosで補完しちゃだめなの?
それは >>474 を数タップでやるのと同じことなのでOKだと思います
ただ、(これを言うと画像屋さんには怒られるけど)
画像と比べて音は求められるSNが非常に高いので
数タップで、また、固定の係数なんかではあまり良いスペックは出ません


481 :デフォルトの名無しさん:2011/09/16(金) 00:42:18.85 .net
>>478
44.1kHzから48kHzへ変換する場合、160倍の0補完アップサンプリングと
147倍の間引きダウンサンプリングをするなら、タップ数が1000〜とかでも
演算結果が0になることがわかっている分は除けるから
畳み込みの回数は1サンプルに対して〜10程度になるよ

482 :デフォルトの名無しさん:2011/09/18(日) 13:53:58.23 .net
http://www.dtmstation.com/archives/51741938.html
これって、どんなアルゴリズムで動いているのでしょうか?

483 :デフォルトの名無しさん:2011/09/19(月) 13:45:51.25 .net
FFT

484 :デフォルトの名無しさん:2011/09/20(火) 00:36:37.93 .net
フリーのソフトでも転がってたやつを、UIを綺麗にして売り物にしたって感じだね
触ってないけど、それほど目新しいものでもなさそう

485 :デフォルトの名無しさん:2011/09/20(火) 10:25:16.55 .net
左右のパワースペクトルを差分取って定位割り出しって感じかな
可視化するのは個人的に目から鱗

486 :デフォルトの名無しさん:2011/09/20(火) 10:43:31.84 .net
これだいぶ前に他の会社が同じもん出してたぞ
売れてんのかは知らんが

487 :デフォルトの名無しさん:2011/09/20(火) 12:18:45.34 .net
切り出すU/Iのでき次第だから、ぶっちゃけアルファテストを積み上げた分だけ使い勝手がよくなるかと。

488 :デフォルトの名無しさん:2011/09/20(火) 22:50:00.32 .net
>>485
>左右のパワースペクトルを差分取って定位割り出しって感じかな
左右の定位置を求める方法、もっと詳しくしりたいのですが、
なにか資料とかキーワードとかあります?

489 :デフォルトの名無しさん:2011/09/20(火) 23:34:00.51 .net
>>488
超アカデミックな基礎としては、ブラウエルトの音像定位の本(日本語は絶版してると思う)
だけどそこまでのことはやってないでしょうw
せいぜい各周波数エレメントごとのLRの振幅比からパンを割り出してるくらいじゃないのかな?
位相差も見てたらすばらしいと思うけど

490 :デフォルトの名無しさん:2011/09/20(火) 23:46:39.32 .net
>>489
http://www.amazon.co.jp/dp/4306041972
これでしょうか?情報ありがとうございます。

491 :デフォルトの名無しさん:2011/09/21(水) 07:28:44.42 .net
ボーカルを処理例に出されてもな……って思った。
センターに定位してるのが普通だし、周波数帯域も限定されてて
比較的簡単な部類なんだから、他のパートでやってくれないと。

492 :デフォルトの名無しさん:2011/09/22(木) 08:29:13.64 .net
コロナ社の「空間音響学」は事例も新しいし内容もコンパクトにまとまってて良い感じ。

493 :デフォルトの名無しさん:2011/09/22(木) 09:25:19.79 .net
フィルタ自体のプログラミングは、いったいどうしているのですか?

494 :デフォルトの名無しさん:2011/09/22(木) 21:39:46.26 .net
>>493
漠然としすぎてて難しい質問だな
係数をかけたりzバッファにためたりするプログラムをしているよ

495 :デフォルトの名無しさん:2011/09/23(金) 19:41:08.59 .net
>>494
フィルタをどうすると言う書き込みは多いけど、フィルタ自体はどうしているのかなと思って。
みな自作しているけど、疑問なく作れるってことですか?

496 :デフォルトの名無しさん:2011/09/23(金) 20:45:36.37 .net
>>495
デジタル信号処理の知識があればできるよ

497 :デフォルトの名無しさん:2011/09/23(金) 23:53:21.01 .net
アナログのフィルタ回路をデジタルに変換できるので、
アナログのフィルタ回路の作り方を探る手もあると思うよ。

498 :デフォルトの名無しさん:2011/09/25(日) 14:22:59.21 .net
アナログ世代乙

499 :デフォルトの名無しさん:2011/09/26(月) 18:42:41.99 .net
>>498
ゆとり世代の耳にはデジタル入力がついてるのか

アナログというよりs領域で設計してs-z変換ということでしょ
特にIIRフィルタはs領域での設計は楽だから
z領域で設計するのは至難の業だ
アナログ回路の伝達関数をs関数にすることも楽だ

500 :デフォルトの名無しさん:2011/09/26(月) 23:27:19.82 .net
>>486
掴んだのを移動できるのは見たことないぞ

501 :デフォルトの名無しさん:2011/09/30(金) 14:03:49.60 .net
>>500
遅せぇよ、ただしこれはマスキングなピッチ・タイムストレッチは別機能
ttp://www.psoft.co.jp/jp/product/chronoplayer/index.html

502 :デフォルトの名無しさん:2011/10/02(日) 01:58:36.59 .net
だから定位は変えられんでしょ?

503 :デフォルトの名無しさん:2011/10/07(金) 13:50:37.35 .net
すいません、スレ違いかもしれませんが相談に乗ってください。

あるMIDI機器を操作した際に出るSystem Exclusiveをプログラム・チェンジに変換して、
演奏情報も一緒に別の機器に送りたいんですが、何を勉強すればいいでしょうか?

当方プログラミングの経験なしです・・・(無理っすか?

504 :デフォルトの名無しさん:2011/10/07(金) 20:44:26.89 .net
Windowsサウンドプログラミング―音の知識×プログラミングの知識
って本がMIDIについて結構詳しく書いてあったような気がするので
立ち読みして良さそうなら買ってみたらどうだろう

505 :デフォルトの名無しさん:2011/10/08(土) 02:03:07.42 .net
>>504
ありがとうございました! 立ち読みしてみます。
でも、友人に「無謀だ」と言われ、くじけそうな心・・・

506 :デフォルトの名無しさん:2011/10/08(土) 12:27:45.51 .net
>>503
簡単に実現したいのだったらMaxとかPureDataという手もあるかもしれない。

507 :デフォルトの名無しさん:2011/10/08(土) 17:21:10.44 .net
音声データを加工したくて勉強しています。とりあえず「C言語ではじめる音のプログラミング」
という本を買って読んでいるんですけど、何をしているのかわからない箇所があるので教えてください。

音声ファイルのオープン時にWAVEファイルのPCMデータ(1サンプル16bit)を読み込んでいるのですが、その際に

  short data;
  double *pcm = calloc( length, sizeof(double) );

  for( n=0 ; n<length ; n++ )
  {
   fread( &data, 2, 1, fp );
   pcm[n] = (double)data/32768.0; /* 音データを-1以上1未満の範囲に正規化する */
  }

と、省略して抜き出しましたが、コメントはそのままです。
そして、ファイルへの出力時に

  double s;
  for( n=0 ; n<length ; n++ )
  {
   s = ( pcm[n]+1 )/2.0*65536.0;  
   if( s > 65535.0 )

  data = (short)(pcm


508 :デフォルトの名無しさん:2011/10/08(土) 17:37:49.80 .net
16ビットの値 (-32768 〜 +32767) を浮動小数点の値 (-1.0 〜 +1.0) に変換してるだけじゃね
-32768 〜 +32767 より -1.0 〜 +1.0 の方が加工とか処理するのにわかりやすくて扱いやすい、と本の中の人は思ったんだろう
ファイルに書くときは当然また16ビットに戻す必要がある

509 :507:2011/10/08(土) 17:44:14.96 .net
途中で書き込んでしまいました!!! 出力時のforの中はこうです。

for( n=0 ; n<length ; n++ )
  {
   s = ( pcm[n]+1 )/2.0*65536.0;  @

   if( s > 65535.0 ) s=65535.0;
   if( s < 0.0 ) s=0.0;

   data = (short)(s+0.5)-32768; /* 四捨五入とオフセットの調節 */

   fwrite( &data, 2, 1, fp );
  }

そこで、わからないのは何故double型にして-1〜1の範囲に変換(正規化?)しているのかです。
本文には「精度を考慮して正規化する」とあるだけで、こうすることによってどうして精度が良くなるのかがわかりません…。
正規化でググっても違う意味のものが検索されてしまいます。
それから元に戻すときはどうしてわざわざ @ のように(これだと0〜65535の範囲になる)してから、-32768〜32767に
戻しているのかとか…。必要なんでしょうけどどういう効果があるのか具体的にわからなくてもやもやしていて先に進めません。
ググって調べられるワードなどでも何でも良いので教えてもらえるとありがたいです。よろしくお願いします。

510 :507:2011/10/08(土) 17:49:38.18 .net
ああ、すでにレスしてくれてる方が!!ありがとうございます。
>>508
なるほど、扱いやすいプログラミングの好みみたいなものなんでしょうかね。
あまり深く考えないほうがいいのかな。

511 :デフォルトの名無しさん:2011/10/08(土) 17:53:33.06 .net
処理内容にもよるけど、そのまま16bitの範囲で処理するとオーバーフローなども気にしないといけないし
複数のフィルタかけたりすると累積の計算誤差も減るし
まあ耳でわかるようなもんじゃないかもしれないけど、わざわざ誤差作るほどじゃないという感じでもある

512 :デフォルトの名無しさん:2011/10/08(土) 18:15:54.00 .net
0〜65535 にしてから -32768〜32767 にするのは、負の値の切り捨てを嫌ったんじゃないかと
単純に整数化すると -0.999...〜+0.999... の範囲が 0 になるんじゃないかな

513 :507:2011/10/08(土) 20:13:36.07 .net
>>511 >>512
加工する過程での細かな誤差を嫌ったという感じなんでしょうかね。
正規化(?)をするのとしないのとでは実際どの程度違う結果になるのかわかりませんけど、
いまはあまり気にしなくてもいいのかな。
実際は読者からの細かい突っ込みを嫌ったためのような気も(笑)
少なくとも音声データの加工そのものとは直接関係ないようなので先に進んでみます。
ありがとうございました!

514 :デフォルトの名無しさん:2011/10/08(土) 23:20:53.19 .net
C++って難しいんでしょうか・・・
(こんな事をきいてるようじゃ無謀と言われてもしょうがないですねw)

515 :デフォルトの名無しさん:2011/10/09(日) 01:54:00.11 .net
そうですね

516 :デフォルトの名無しさん:2011/10/09(日) 12:25:41.01 .net
っていうかそこは序盤だから理由が判らないだけで
後半でデータ加工するのに都合良いようにしてんだろ

517 :デフォルトの名無しさん:2011/10/09(日) 20:37:19.48 .net
整数レジスタ使って固定小数点演算でがんばる時代は終わったか

518 :デフォルトの名無しさん:2011/10/10(月) 07:25:15.75 .net
ていうかひたすら物量つぎこんで速くしたFPUが、大量生産で安く手に入るから、
それ使っちゃえば安くて速い、という。

519 :デフォルトの名無しさん:2011/10/10(月) 08:42:11.62 .net
>>517
20年くらい前に終わってる

520 :デフォルトの名無しさん:2011/10/10(月) 09:59:32.96 .net
20年前は嘘だな。
10年くらい前でも整数演算でやる方がずっと速かった。
SSEとか出だしてからじゃないか?

521 :デフォルトの名無しさん:2011/10/10(月) 10:49:13.67 .net
整数演算てどういうものをいうのかわかってない自分
加工前に1000倍して加工後に1/1000にするとかでしょうか?


522 :デフォルトの名無しさん:2011/10/10(月) 10:49:50.24 .net
PentiumのUVパイプラインあたりからかな。
あるいはAlphaあたり。

523 :デフォルトの名無しさん:2011/10/10(月) 18:27:05.12 .net
最近だとDSがまだ固定小数点をつかってますね

524 :デフォルトの名無しさん:2011/10/10(月) 19:30:11.42 .net
固定小数ならではの便利な事もあるんだよね

525 :デフォルトの名無しさん:2011/10/10(月) 20:17:47.25 .net
精度を固定とか荒くてもいいならデータをコンパクトにまとめられるとかかな?
MIDI命令みたいに可変長byteの整数つかってもおもろいかも。

526 :デフォルトの名無しさん:2011/10/10(月) 21:37:15.04 .net
まさに小数点位置が固定されていることでしょ

527 :デフォルトの名無しさん:2011/10/11(火) 00:35:05.10 .net
まだ固定小数点DSPの方が安いしクロックも速いのがあるからね
サンプリングレートが異常に高い分野ではまだまだ現役
最近は浮動小数点DSPも安くなったし、オーディオなら、オーバーフローとか
ヘッドルームとかほぼ考えなくて済むメリットの方がかなり大きい
が、まだ32bit floatが主流で、24bit精度が精一杯
フィルターかけまくり、ミキシングしまくりだと、そろそろ精度的に限界かな
PCのアプリなんかは64bit doubleが使われるようになってきたし
(PCのCPU(FPU)はもともとdoubleの方が計算速度速いっていうのもあるけど)
(メモリもたくさん使えるしね、DSPに比べたら無限にあるみたいなもの)
(ただし同じパフォーマンス出すのにCPUのコストは10倍以上、下手したら100倍かかるけど)
DSPも倍精度浮動小数点になっていくのかなぁ

528 :デフォルトの名無しさん:2011/10/11(火) 01:47:28.46 .net
FPU付きのDSPってみたことないや。いつも固定小数点でやってます。
DSPの定義の問題なのかな?

529 :デフォルトの名無しさん:2011/10/11(火) 04:02:54.67 .net
iOSやAndroidなんかだと、ハードによってはFPUしょぼいんで
固定小数じゃないとリアルタイム処理はきついね

530 :デフォルトの名無しさん:2011/10/11(火) 21:18:03.93 .net
最近のオーディオプレイヤーにある,高域の周波数成分を補間する
機能を実装すると考えた場合,FFT意外に何か考えられる手段はあ
るのでしょうか?

もしくは,完全フリーで高速なFFTライブラリがあれば教えていた
だけるとありがたいです。
ソースコードの開示が必要ないものがよいのですが・・・

今は大浦さんのFFTを使わせてもらっていますが,もっと速いもの
はないかなぁと思いまして。


531 :デフォルトの名無しさん:2011/10/11(火) 21:24:23.87 .net
むしろ完全フリーで高速なFFTライブラリを作ってくれるとうれしい。

532 :デフォルトの名無しさん:2011/10/11(火) 21:40:06.15 .net
残念ながら,数学が大嫌いなプログラマーなのです。


533 :デフォルトの名無しさん:2011/10/11(火) 22:26:00.16 .net
>>530
FFTの手段っていうのは漠然過ぎない?

フリーだとFFTWが有名だけどコードの開示は知らないです。


534 :デフォルトの名無しさん:2011/10/11(火) 22:26:35.10 .net
>>528
今は主要各社ラインナップありますよ
まあ確かにDSPとしてはハイエンド系かな
もちろんアーキテクチャは積和命のDSP

>>530
よくあるタイプは、高域に非線形ひずみかけて倍音を発生させて、
さらに高い超高域を作り出している
例えば、HPFで高域取り出す→クリップさせる→奇数次倍音発生
→超高域HPFかけて取り出す→原音に足しこむ
みたいな感じ(偶数次倍音の発生とか、足しこみ方とかいろいろあるけど)
こうして作られた超高域は、一応倍音だから、元は有ったかもしれないんですw


535 :デフォルトの名無しさん:2011/10/11(火) 22:35:54.76 .net
>>533
FFTした場合は周波数成分へのアクセスは簡単なので,
そこは工夫次第でどうにでもなりそうですよね?
ただ,FFTそのものの処理時間がネックに感じています。

>>534
むむむ,難しい・・・すいません。頭の悪い私には理解
不能でした。
FIRとかIIRとかそっち系でしょうか?実はFIRを理解して
おらんのです。


536 :デフォルトの名無しさん:2011/10/11(火) 23:02:03.26 .net
>>535
そっち系ですw
でも分かれば非常に軽く実装できますよ
FFTは万能なようで色々面倒なこともあります、まず重いし
連続処理じゃなくてブロック処理になるんで、
連続信号の音を綺麗に処理するのは結構苦労します
分析には向いてますけどね
とりあえず時間分解能と周波数分解能で悩むでしょうw


537 :デフォルトの名無しさん:2011/10/11(火) 23:46:24.26 .net
>>536
やはりそっち系でしたか!
まずはFIRの勉強しないといけませんね。
FFTはどうしても矩形窓を使いたかったので,オーバーラップの
実装に苦労しました。

ありがとうございます。

538 :デフォルトの名無しさん:2011/10/12(水) 23:11:48.27 .net
初歩的な質問かもしれませんが,16bitPCMデータの場合
・1〜32767
・0
・-1〜32768
でデータを表現する事ができますよね。

しかし,+と−で解像度が1つ異なるのですが,
浮動小数点数との相互変換のとき,この1つの違
いをどう考えればよいのでしょうか?

539 :デフォルトの名無しさん:2011/10/12(水) 23:41:13.43 .net
>>538
問題ないのでは?
x∈R
-32768.0 <= x < 32768.0 と考え
デジタルデータ d は x の小数点以下を切り捨て、それより小さい最初の整数に変換されると考えると、「解像度」に違いはないと思います。

540 :デフォルトの名無しさん:2011/10/12(水) 23:50:08.69 .net
浮動小数点というのは,-1〜1の範囲のことです。
ですから,+の場合に整数→浮動小数点変換する場合は
32767÷32768なのか
32767÷32767なのかという事です。

541 :デフォルトの名無しさん:2011/10/13(木) 00:16:41.05 .net
>>540
変換前の PCM データを x,
変換後の浮動小数点データを y としたとき、
y = x * 32768
とすれば問題ないと思いますが‥‥‥。

別の例で考えてみます。
*----*----*----*----*----
0 1 2 3 4
0 <= x < 5 の連続値をとるアナログデータをデジタルデータ化する方法として、x の小数部分を切り捨てた値に代表させるとします。
このとき 0 に代表させられるアナログデータ、1 に代表させられるアナログデータ、‥‥‥ 4 に代表させられるアナログデータ
とグループ化した場合、どのグループも「属するアナログデータの数は同じ」と考えられないでしょうか。
ここでは、アナログデータ x ≠ 5.0 としていますが、仮にアナログデータ x = 5.0 の場合もデジタルデータは 4 とする、としてもほとんど問題ないと思います。

しかし正確な説明は難しい。数学の言葉としては何が該当するでしょうかね。1 対 1 対応ではないからカントールの濃度ではないでしょうし。



542 :541:2011/10/13(木) 00:20:06.74 .net
>>540
失礼
y = x / 32768.0
ですね。

あと図は、
*----*----*----*----*----
0   1   2   3   4   5
です。


543 :デフォルトの名無しさん:2011/10/13(木) 00:42:59.23 .net
ふーむ,なるほど。
では,ちょっと質問を変えてみますと,オーディオ/サウンド
関連の分野では常識としてどうすべきかというものがあるので
しょうか?

それとも,ソフトや機器によって実装はマチマチなのでしょう
か?

544 :デフォルトの名無しさん:2011/10/13(木) 14:43:43.30 .net
固定少数は分数と考えればいいよ。
分母ができほど制度が高くなるイメージ。

545 :デフォルトの名無しさん:2011/10/13(木) 21:57:28.96 .net
>>540
まあ浮動小数点で扱うなら32768とかで割らなくてもいいんだけどね
オーディオ入出力のAPIによっては浮動小数点を選択すると-1.0〜+1.0になってることが多いね
16bitデータをそのままQ15フォーマットの固定小数点データとみなせば-1.0<=x<1.0となる

>>543
細かいところはまちまちでしょう
ただPCでは飽和処理を自動でやってくれないので自分でやること

float x;
short y;
if (x<-32768.0) y=-32768; else if (x>32767.0) y=32767; else y=(short)x;

とかね
そういえば>>512を気にする場合は

x=x+32768.0;
if (x<0.0) y=-32768; else if (x>65535.0) y=32767; else y=(short)((unsigned short)x-32768);

とかかな?


546 :デフォルトの名無しさん:2011/10/13(木) 23:26:24.28 .net
>>545
なるほど。
大変参考になりました!
ありがとうございます。

547 :デフォルトの名無しさん:2011/12/07(水) 17:04:17.87 .net
HTKを使ってHMMをつかっての音声認識をしてるんですけど、
ケプストラムからスペクトル包絡を求めたいとおもってるんです。

で26次元のケプストラムから求めるには32ポイントでのフーリエ変換して指数変換でいいのですかね。


548 :デフォルトの名無しさん:2011/12/10(土) 00:14:57.52 .net
FFTじゃないスペアナってないかね?
低域の分解能がほしい。時間分解能もほしい

549 :デフォルトの名無しさん:2011/12/10(土) 01:17:45.00 .net
スペクトルではないけど、ウェーブレットでも似たことはできる。

550 :デフォルトの名無しさん:2011/12/10(土) 07:35:19.94 .net
ブラウザだけで波形を生成して音を出すことに成功したぜ〜

http://www42.atwiki.jp/syugyou?cmd=upload&act=open&pageid=250&file=oto2.html

551 :デフォルトの名無しさん:2011/12/10(土) 07:51:02.37 .net
Javascriptだけででバイナリ作るとか怖いFlash要らないな

552 :デフォルトの名無しさん:2011/12/10(土) 09:02:43.69 .net
exeならいいのかとかFlashに何の関係がとか

553 :デフォルトの名無しさん:2011/12/10(土) 14:22:41.11 .net
exe?riffだろ常識的に考えて…

554 :デフォルトの名無しさん:2011/12/12(月) 23:34:02.83 .net
研究用音声サンプルが萌える件
ttp://www.it.ice.uec.ac.jp/SRV-DB/
ギャルゲから音声抜き出したのかとw

555 :デフォルトの名無しさん:2011/12/13(火) 00:07:32.02 .net
>声優によるオリジナル原稿の読み上げ


556 :デフォルトの名無しさん:2011/12/13(火) 00:19:05.94 .net
声優パートを試し聴きされる方へ

データの種類が多すぎて,どこから聴いたら良いかわからないという方のために, 「おすすめ」を書いておきます.
まず,どんな発話内容であるかその全体を把握したいという方は,ステレオで聴ける方は, 自然な話速での
男女ステレオデータ:5分45秒:第1回収録版 もしくは 同:第2回収録版をお聴きになってみて下さい.
モノラルでしか聴けない方は, 自然な話速での男女モノラルデータ:5分45秒:第1回収録版)
もしくは 同:第2回収録版をお聴きになってみて下さい.

なお,研究素材として用いるために, 音声データにはコンプレッサなどで音圧を上げる処理を施しておりません.
CDなどで言えば,マスタリング工程前のデータということになります. このため,全体として音量は小さめですので,
パソコン側の音量を最大にして試聴して頂ければ幸いです. ボリューム最大でも音量が足りないパソコンをお使いの方は,
簡易コンプレッサで音量を上げた 大音量版:ステレオ:5分45秒:第1回収録版をお聴き下さい.
無処理ならではの伸び伸びとした魅力は失われますが, 全体の感じはつかめると思います.


557 :デフォルトの名無しさん:2011/12/13(火) 00:20:12.05 .net
著作権等に関する注意

音声の研究の進展のため,あるいは,信号処理技術の発展に寄与するためであれば, 広く利用を許可したいと思います.
ぜひ,企業や大学での研究で,素材として使って頂ければと思います. また,学会発表,展示会発表などにおいて,
本データを信号処理したもの,あわせて,比較のために本データそのものを 参加者に聴かせることは可能です.
新製品や新技術や技術改良の効果を具体的にアピールするために, 本素材と本素材をその技術で処理した結果の音声を発表
(学会,展示会,Webページに掲載,CDとして配布) することも許可したいと思います.
どうぞ,技術の進歩のために有効にお使いになって下さい.

なお,役者志望の方が 練習または評価を受ける目的で本データベースを利用するようなことは構いません.
たとえば,対話型の音声の片方に自分の声を挿入するなどです.
データセット3のように音楽を付けたデータを製作し発表することも含め, 良識の範囲内であれば許可します.

ちなみに,データセット3の音楽は, 本データベースのために作曲し製作したオリジナルソースです.
音声の基準(2つ上の段落で説明した基準)の範囲内であれば, 発表や展示やWeb掲載に利用可能です.
BGMが加算されたソースに対する音声認識や話速推定などの研究で, 標準ソースとして利用していただければ幸いに存じます.

原稿「雪」については,本データベース用のオリジナル原稿ですので, 原稿そのものについては,
その一部または全部を許諾無しに無料で利用(読み上げ,テキストの掲載や印刷や配布など) してもらって構いません.

ただし,「雪」と読売新聞の「編集手帳」の発声データについて, 意図的に原稿とは違う意味になるように
編集することはお断りします.
(続く)


558 :デフォルトの名無しさん:2011/12/13(火) 00:21:33.20 .net
公序良俗に反する利用を禁じます. 声優の方々やアナウンサー方々は, 音声研究の進展のためになることを理解して
協力して下さっていますので, 発声して下さった方々に迷惑がかかるような行為があった場合は,
必要な処置をとらさせて頂きます.

義務ではありませんが, 本データベースの音声や原稿を利用したものを発表・配布する場合は,
「話速バリエーション型音声データベース(SRV-DB)を利用した」 もしくは, 「SRV-DBを利用した」 ことを
書き添えて頂ければ幸いに存じます. 定期的に「SRV-DB」でWeb検索し,本データベースが 期待どおりに
皆さんに活用して頂いていることがわかれば, 今後,さらに充実したものにしていきたいと思っております.

謝辞

声優による読み上げに関しまして, 第1回収録に出演して下さいました,男性声優VM00様,女性声優VF00様には,
非常に遅い音声から,非常に速い音声まで,かなりの幅があったにもかかわらず, どの話速でも魅力的で心のこもった
聞き応えのある音声を発声して頂きました. お陰さまで,本データベースは研究用としての価値はもちろん,
聴くだけでも音声の素晴らしさを味わうことができる大変充実したものになりました. ここに深く感謝いたします.

また,第2回収録に出演して下さいました,男性声優VM01様,女性声優VF01様には, さらに,第1回収録での
発話ペースにあわせて発話して頂くという条件で収録させて頂きました. このような難しい条件にもかかわらず,
個性的で魅力的な役を演じて下さいました. その結果,全く同じ発話速度に制御された上で,異なる男女の
ペアの方々が それぞれ個性あるキャラクターを演じて下さっているという, 貴重なデータベースを完成させることが
できました. ここに厚く御礼申し上げます.
(続く)


559 :デフォルトの名無しさん:2011/12/13(火) 00:21:53.80 .net
さらに,本研究の意義をご理解下さいまして, 声優の方々へ我々にかわって事前説明をして下さいました 芸能事務所の
チーフマネージャー様に厚く感謝いたします, 氏のご協力なくしては,データセット1〜3はここまで充実させることは
出来なかったと思います. ここに厚く御礼申し上げます.

その他,発話のプロフェッショナルによる読み上げ(データセット4と6)に関しましては,
株式会社エス・オー・プロモーションのご協力を頂きました. 本研究の意義にご理解下さいました佐藤邦宏様,
話速を厳密に管理して発声して頂くというたいへん難しい注文に 応えて下さいました,落合こず恵様(話者PF00),
小松上花様(話者PF01), 山田直広様(話者PM00)に感謝いたします. また,編集手帳につきましては,
読売新聞社より,文章掲載と 音声ファイル公開の許可を頂きました.ここにお礼申し上げます.

560 :デフォルトの名無しさん:2011/12/13(火) 00:36:08.12 .net
なんで違うファイルに同じファイル名付けるんだ?馬鹿じゃねーの?

561 :デフォルトの名無しさん:2011/12/13(火) 09:06:06.81 .net
長文いらない。

562 :デフォルトの名無しさん:2011/12/14(水) 00:21:16.18 .net
リンク先見りゃわかるのにわざわざコピペするって馬鹿じゃね

563 :片山博文MZ ◆0lBZNi.Q7evd :2012/01/15(日) 11:05:55.31 .net
音声を分解して、分解した音を選んで削除するのってできますか?

564 :デフォルトの名無しさん:2012/01/15(日) 11:16:21.02 .net
>>563
DFT(FFT)+IDFT(IFFT) でなんとかなりませんか?

565 :片山博文MZ ◆0lBZNi.Q7evd :2012/01/15(日) 11:46:48.94 .net
>>564
大変忙しいので、音声を分解するソフトを作ってもらえませんか?
お願いします。

566 :デフォルトの名無しさん:2012/01/15(日) 20:12:36.60 .net
ここのスレってうpろだ無いん…

567 :デフォルトの名無しさん:2012/01/16(月) 02:25:31.21 .net
分解ってのは楽器ごとに分解?
それとも周波数成分ごとに分解?
楽器ごとなら非常に難しい
NMFとかで調べてみるといいかも
周波数成分ごとならいらない音を
フィルタで除去すればいい
ノイズだけ除去ならスペクトル減算法とかある

568 :550:2012/01/17(火) 07:37:18.39 .net
特定の周波数を削る3タップのノッチフィルタだよ(俺言語)

周期=レート/周波数;
c=2*円周率/周期;
e=cos(c);
f=sin(c)/(2*精度);
無限インパルス応答(配列,1,-2*e,1,1+f,-2*e,1-f);

function 無限インパルス応答(配列,b0,b1,b2,a0,a1,a2){
var x0,x1,x2,y0,y1,y2,i;
var len=配列の長さ;
x0=x1=x2=y0=y1=y2=0;
for(i=0;i<len;i++){
x2=x1;x1=x0;x0=配列[i];
y2=y1;y1=y0;
y0= (b0*x0 + b1*x1 + b2*x2 - a1*y1 - a2*y2)/a0;
配列[i]=y0;
}
}

引数を変えるといろんなフィルタができるよ
ググればでるよ

569 :デフォルトの名無しさん:2012/01/17(火) 21:04:46.81 .net
どうでもいいけどちょっといい?
見るからに双二次フィルタだけど、3タップって言うの?


570 :デフォルトの名無しさん:2012/01/18(水) 08:15:55.82 .net
俺言語っていってるんだから何でもいいんじゃね?

571 :デフォルトの名無しさん:2012/01/18(水) 09:04:17.47 .net
0デシベルでもDACでクリップするからマイナス何デシベルにしなければいけないって本にかいてあったんですけど
ほんとうですか?

572 :片山博文MZ ◆0lBZNi.Q7evd :2012/01/18(水) 11:07:22.22 .net
画像解析と音声解析はかなり似た技術だ。前者の知識が後者で役立つことも多い。
可変閾値、フーリエ変換しかり。ゆえに音声の学習が終わったら画像処理も
勉強しなされ。ヒューリスティックな音声解析のソフトが少ないので諸君の
研究テーマにしてはいかがだろうか?

573 :デフォルトの名無しさん:2012/01/18(水) 19:50:05.75 .net
>>571
DAC内蔵のオーバーサンプリングとかのデジタルフィルタがあれば
そこでクリップする可能性はあるね
でもかなり高い周波数で相当変なことしないと大きく飛び出ることはないよ
普通は気にすること無いと思う


574 :デフォルトの名無しさん:2012/01/21(土) 12:19:34.10 .net
>>565
買ってこい
http://www.roland.co.jp/products/jp/R-MIX/

ステマが済んだら能書き垂れてねえでどっか行け

575 :デフォルトの名無しさん:2012/01/22(日) 10:12:25.78 .net
フーリエ変換を10倍速くする新アルゴリズムをMITの研究者たちが開発
ttp://jp.techcrunch.com/archives/20120118improvement-on-age-old-mathematical-principle-could-yield-improved-images-video/

リンク先の論文読んだけど俺にはさっぱり理解できなかった
数学詳しい人ならこれ見ながらC++でアルゴリズム書けるのかと思うと羨ましい

576 :デフォルトの名無しさん:2012/01/22(日) 12:57:04.47 .net
可逆圧縮には使えなさそうな印象。

577 :デフォルトの名無しさん:2012/01/22(日) 14:57:41.50 .net
10倍といっても、いままでO(10f(n))だったのがO(f(n)に)なっただけだからな
10乗とかなら意味あるけど。

578 :デフォルトの名無しさん:2012/02/03(金) 07:42:45.58 .net
このスレサウンドプログラミングなのに音出るプログラムアップしないよね

579 :デフォルトの名無しさん:2012/02/04(土) 23:45:34.27 .net
同意。フィルターの使い方みたいなのばっかで…
>>568みたいなのがもっと増えて欲しい

580 :デフォルトの名無しさん:2012/02/07(火) 20:11:07.86 .net
>>578
>>579
自分のこと棚に上げるなよw
知らないなら質問すれば?

581 :デフォルトの名無しさん:2012/02/07(火) 20:47:19.72 .net
アップローダからつくらんと…

582 :デフォルトの名無しさん:2012/02/07(火) 22:59:43.08 .net
この手のは言いだしっぺがやらなきゃ誰も動かんよ

583 :デフォルトの名無しさん:2012/02/12(日) 04:09:56.35 .net
オイオイ>>568こそが「フィルターの使い方みたいなの」にモロ該当するだろ
実装が欲しいだけなら某cookbookでも参照しろよ
音出したけりゃ今のところ基本波形はBandlimited Synthesisでファイナルアンサーだし

あれ、語ることもう無くね?

584 :デフォルトの名無しさん:2012/02/17(金) 23:31:19.53 .net
1bit(2.8224MHz)→PCM(44.1kHz)の手順が知りたいのですが。

1または0のDouble値をFIRのLPFに渡してDouble値を貰う。
64サンプル毎にもらったDouble値を出力する
って事であってますか?


585 :デフォルトの名無しさん:2012/02/18(土) 00:32:40.38 .net
>>584
スレ内くらいは検索しようや >>446-

586 :デフォルトの名無しさん:2012/02/18(土) 00:51:21.08 .net
>>585
>446の流れは読んだつもりですが、わかりませんでした。
スミマセン。

587 :デフォルトの名無しさん:2012/02/18(土) 01:10:49.25 .net
>>586
1bit のデータは一つ前の値に対して-1なのか、 +1なのかを記録してるのは理解してる?
pcmは今の値が幾つなのかを記録してる

588 :デフォルトの名無しさん:2012/02/18(土) 09:22:15.20 .net
リンク先にソースつきのプログラムあるのに
同一人物としか思えない

589 :デフォルトの名無しさん:2012/02/18(土) 11:19:53.63 .net
>>587
ありがとうございます。
では、1または-1の値をFIR-LPFフィルタに渡すということでよいのですね?
その結果の値がマルチビットになるのでしょうか?(もしそうだとすると1bitの入力なのになぜマルチビットが返ってくるのかわかりませんが)
そうであれば、1/64に間引きして出力すると44100HzのPCMが出来るという事になりますか?

>>588
ソースコードへのアクセスの仕方がわかりませんでした。

590 :デフォルトの名無しさん:2012/02/18(土) 11:53:00.60 .net
あきらめたら?

591 :デフォルトの名無しさん:2012/02/18(土) 16:03:07.13 .net
>>589
理解まったくできてないようだね
数値とグラフを書いてみなよ
可視化するとわかりやすいよ

592 :デフォルトの名無しさん:2012/02/18(土) 16:56:42.17 .net
>>591
>数値とグラフを書いてみなよ
何の数値とグラフを書いたらよいのでしょう?

下記の処理はできるようになりました。
1.PCMデータ入力
2.FIR-LPF
3.PCMデータ出力

1ビットずつデータを取り出す事はできます。
1と-1の連続したデータを次にどうすべきなのでしょうか?









593 :デフォルトの名無しさん:2012/02/18(土) 17:09:20.78 .net
x+=1
x-=1

594 :デフォルトの名無しさん:2012/02/18(土) 17:43:25.86 .net
>593
値を加算して累積させていくということですね。
ここまではOKです。

思いつきで、1bitの入力データをshort型の配列に加算しながら格納しました。
44100HzのPCMにするため、単純に1/64に間引き(64サンプルごとに値を出力)してWAVファイルとして保存しました。
音として確認できるものはできたのですが低音のみで、4kHz以上の周波数成分は出力されていませんでした。


1bitの累積値の配列は何型に保存すべきでしょうか?
Long,Integer,Short/Single(float),Double

次にこの累積値の配列をどうすべきでしょうか?

ご指導いただけると助かります。


595 :デフォルトの名無しさん:2012/02/18(土) 20:57:14.76 .net
1ビットデータ(1または-1)をFIR-LPFのバッファ(doubleの配列)に格納し、64サンプル毎に値を取り出して出力しました。
FIRの係数は
ttp://achapi2718.blogspot.com/2001/04/fir-javascript.html
を使用して、作成しました。
FIR-LPFのタップ数:513
サンプリング周波数:2822400
カットオフ周波数は22050

音がはっきり聞こえるようになってきました。しかし、盛大に「シャー」というノイズがのっています。
係数作成時の指定が悪いのでしょうか?

どなたかご助言をいただけるとありがたいのですが。

596 :デフォルトの名無しさん:2012/02/18(土) 23:21:30.31 .net
>>595
まず1bitデータがちゃんと作れてないと思う

フィルターは確か3TapのIIRだった記憶がある
sonyの論文に載っているが、何処にあるか覚えてない


597 :デフォルトの名無しさん:2012/02/18(土) 23:28:36.86 .net
ちなみにノイズが40kHz以上なら正常だよ
大抵の1bit audioはすべて40k以上のノイズ吐いてます。
再生できるスピーカー少ないし、聞こえないし、測定も難しいから気にするな

598 :デフォルトの名無しさん:2012/02/19(日) 01:04:10.64 .net
>>596>>597
ありがとうございます。
FIR-LPFをひたすら追いかけていましたが、IIRなんですね。
まずはIIRの勉強をする事にします。

>まず1bitデータがちゃんと作れてないと思う
フィルタをかける前の1bitデータに問題があるという事でしょうか?
もう一度見なおして見ることにします。


599 :デフォルトの名無しさん:2012/02/19(日) 01:16:27.49 .net
>>596
わー! できましたー!

>まず1bitデータがちゃんと作れてないと思う
LSBファーストの意味を間違えてたみたいです。逆に配列したらノイズのない22kHzまでノイズのないデータができました。
ありがとうございます。

これから色々と音質を調整したいと思います。
本当にありがとう。色々とアドバイスをいただいた他の皆さんにも感謝です。

600 :デフォルトの名無しさん:2012/04/22(日) 00:31:06.78 .net
質問させてください。

DTMで使う簡易daw的なソフトを作ろうと思っているのですが、
vsthost,midiシーケンサーの2つの機能は最低限内包したいと思っています。

そのソフト内で
midiシーケンサー → vsthost
のような流れでmidi信号の通信が発生すると思うのですが、
このmidi信号の通信を行うために仮想midiケーブル的なプログラムを書かなければいけないのかな?
と思い当たりました。

参考になりそうなソフトはないかと色々調べてみたところ
midiyokeなど他にも色々見つかったのですが

例えば
http://www.johnrofrano.com/tutorials/virtualmidirouter.htm
ここのソフトだと、インストールする際、レジストリへの追加が発生している(ハードウェアの追加の部分で)
ようです。

しかし、欲しいのはあくまで自作プログラム内でのmidi通信用の仮想バスなので、
自分の場合はわざわざレジストリに登録するようなソフトにしなくてもよいのではと思ったのですが
自信がありません。(windows multimedia library とかの絡みでレジストリ登録は必須なのでしょうか)

このあたりのことについて教えていただけないでしょうか。
また、仮想midiケーブルを開発するにあたって参考になるページなどありましたら教えていただけると幸いです。

よろしくお願いします。

601 :デフォルトの名無しさん:2012/04/22(日) 18:42:20.78 .net
いきなり出だしから間違えてる
まずDAW内でMIDI"信号"そのもののやり取りは発生しない
MIDIイベント構造体でやりとりすればいいだけ(正確にはVstEvents*)

初っ端からそんなんで大丈夫か?

602 :600:2012/04/23(月) 01:12:24.70 .net
レスありがとうございます。

VstEvents*について調べてみました。

http://www39.atwiki.jp/vst_prog/m/pages/77.html?guid=on
ここのページを見ると、VstEvents*を引数に取る関数として
processEvents()
が挙げられており、その説明文に
「MIDIメッセージをホストアプリケーションから受け取る関数」
とあります。

この説明文を見て、これは
VSTホストアプリケーションからVSTiアプリケーションに
MIDIメッセージ(VstEvents)が送られた際、VSTiアプリケーション側が
MIDIメッセージを取得するための関数、と理解しました。

603 :600:2012/04/23(月) 01:12:44.04 .net
そこでまた疑問なのですが、ここでいうVSTホストアプリケーションは、
「MIDIメッセージを送信するタイミングを時間軸で管理して適切に送信する」
機能も兼ね備えているもの、なのでしょうか。

自分のイメージでは

SMFファイル → Midiシーケンサー → VSTホスト → VSTi
      load midimsg送信 VstEvents送信

という感じで、VSTホストとVSTiとの通信する際VstEventが使われるが、
MidiシーケンサーとVSTホストが通信する際には実際のMIDIメッセージがやりとり
されているのではないかと思ったのです。

このような感じで、自分が作りたいのはVSTホストなので
midi通信用のプログラムが必要なのでは、と思ったのですが、
この構図は間違っているのでしょうか。
VSTホスト自体がMIDIシーケンサーの役割も果たしているのでしょうか?

ご教示いただけると幸いです。


604 :デフォルトの名無しさん:2012/04/23(月) 01:18:46.45 .net

SMFファイル → Midiシーケンサー → VSTホスト → VSTi
       load       midimsg送信   VstEvents送信



わかりづらくてすみません。
上記のような感じです。

また、
http://www.hermannseib.com/english/vsthost.htm
ここで配布されているvsthostはmidiinに入力されるmidiメッセージを
解析してvstiを鳴らすようになっているようですが、
自分が作ろうとしているのは、
1つのアプリケーションの中でSMFファイルのロードからして、
vstiを鳴らすまでやることができるようなものをイメージしています。

よろしくお願いいたします。

605 :デフォルトの名無しさん:2012/04/23(月) 03:00:42.45 .net
日本語が難解で何をやりたいのか頭に入ってこない。もう少し簡潔に書けない?

606 :600:2012/04/23(月) 10:41:56.25 .net
VstEvents* は VSTHostとVSTiの通信に使うもので、
MIDIシーケンサーとVSTHostの通信の際には
生のMIDIメッセージのやりとりが必要なのではないか?という疑問です。

ただ、VSTSDKの中にMIDIシーケンサー用のプログラムが用意されていて、
それをVSTHostの中から呼べるようになっていたりするなら、
わざわざMIDIシーケンサーや仮想MIDIケーブルを自前で用意する必要もない気がするのですが
そのあたりのことがわからないので教えていただきたいのです。

自分が作りたいものはSMFをロードして音源としてVSTiを使用して音楽を再生する
簡易DAW的なものです。

607 :デフォルトの名無しさん:2012/04/23(月) 19:05:51.57 .net
日本語は分かるし、何をやりたいのかも分かるが
途方も無い勘違いをしているのでどこから正していけばいいのか・・・というより
>>601で解決しなかったので驚愕ってとこ

VSTホストは自分で実装するんだよな?
アプリのvsthostをそのまま使うわけじゃないんだよな?

608 :デフォルトの名無しさん:2012/04/24(火) 00:28:40.14 .net
いろいろと壮大な勘違いだらけ。

midiシーケンサーはmidiイベントを出力するもの。
midiシーケンサーでvstiを鳴らすにはmidiイベントをvsteventsに変換しないとvsthostが受け付けない

vstiの音はデジタル信号なのでシーケンサーとは時間(クロック)同期しないといけない。デジタルだから。

midiでvtsiを鳴らすだけならvsti対応のmidi playerであってdawではない。簡易dawはmidiは扱わない。オーディオのみ。

仮想結線するのと、ソフト内部でmidi信号をvsteventsに変換してシーケンスするのは広義では同等。しかし、これを仮想Midiケーブルなんて発想には普通はならない。

vsti とsmf以外はすべて自前で用意しないと駄目。midi playerとvsthostが内包したソフトを作るのでしょ?その二つが内包しているのに、それらを繋ぐ部分(仮想ケーブル?)を用意するってどのような発想?


609 :デフォルトの名無しさん:2012/04/24(火) 04:18:17.90 .net
「自分は頭が良くて詳しいです」的な自己満足レスの典型だぞ。
相手は超初心者なんだからもう少し優しく教えてあげないと。
さもなくばスルーでOK

610 :デフォルトの名無しさん:2012/04/24(火) 04:38:42.26 .net
MIDIは実際わかり辛いけどなw
シーケンスファイルも通信データもケーブルも全部MIDI付くから
まずMIDIの解説サイト熟読してMIDIメッセージとsmfファイルフォーマット理解しないと無理じゃね

611 :デフォルトの名無しさん:2012/04/24(火) 10:51:49.45 .net
そういう話だったか?

612 :600:2012/04/24(火) 12:00:28.18 .net
レスありがとうございます

>>607
>アプリのvsthostをそのまま使うわけじゃないんだよな?
参考になりそうなところがたくさんあるみたいなのでソース見て色々調べていますが、
全部そのまま流用という感じではないです。

>>608
>midiでvtsiを鳴らすだけならvsti対応のmidi playerであってdawではない。簡易dawはmidiは扱わない。オーディオのみ。
なるほど。

>仮想結線するのと、ソフト内部でmidi信号をvsteventsに変換してシーケンスするのは広義では同等。
これもわかりやすい説明ありがとうございます。
つまりmidiシーケンサー(≒midiプレイヤー?)側でmidiメッセージをVstEventsに変換して、
仮想midiケーブルなんてものを通さずに直接Vstホスト側に渡してしまえばいいという理解で合っていますでしょうか?



613 :600:2012/04/24(火) 12:01:39.86 .net
>midi playerとvsthostが内包したソフトを作るのでしょ?その二つが内包しているのに、それらを繋ぐ部分(仮想ケーブル?)を用意するってどのような発想?
dominoとVstHostを連携させる時にMidiYokeが必要だったので、仮想midiケーブルに該当するものが必要なのかなと思ったのです。
dominoとVstHostを連携させるときはdominoにはvst関連の機能はないようなので、
domino側で生のmidiメッセージを出力してVstHost側でmidiメッセージからVstEventsに変換しているという感じでしょうか。
自分で開発する際の参考にしたいのですが、midiメッセージをVstHostに送る前にVstEventsに変換しても、
VstHostに送ってから変換してもどちらでも大丈夫なのでしょうか(単純に設計による感じな気もします)


614 :デフォルトの名無しさん:2012/04/24(火) 13:01:16.15 .net
全然関係ないけど仮想ケーブルと言われるとreasonが頭をよぎる

615 :デフォルトの名無しさん:2012/04/24(火) 14:41:07.21 .net
vsthostとmidi playerは別のソフトとして作るの?
一つのソフトならどこで変換しても同じじゃないの?
ソースのここからはvsthostって分けるのは勝手。何を心配しているのかわからない。素人プログラミングならソースを書いていろいろ試した方が、ここで調べるよりためになるよ。

仮想ケーブルはイレギュラーなものだから忘れた方がいいよ。きみの作りたいものは普通のソフトみたいだから

616 :デフォルトの名無しさん:2012/04/24(火) 18:49:46.20 .net
えーとさ、まずVST SDKの仕様書を読めよ
そうすりゃ今までバカな質問してたってことがはっきりするから
勝手に仕様を想像して、その想像を元に質問してるから(俺らの)話が通じないんだよ
はっきり言って埒があかねえ

617 :デフォルトの名無しさん:2012/04/24(火) 18:50:03.15 .net
自演乙

618 :デフォルトの名無しさん:2012/04/24(火) 19:02:02.09 .net
シッタカの自作自演うぜえな
その程度の知識で自慢したいわけ?

619 :デフォルトの名無しさん:2012/04/24(火) 20:15:57.17 .net
何これコント?ワロタ。
わざとすっとぼけた事言っているようにしかみえんw
自演じゃなかったら、からかわれてるんじゃねーの?

620 :デフォルトの名無しさん:2012/04/24(火) 23:09:12.67 .net
とんでもないバカは実在するんだよ。

621 :デフォルトの名無しさん:2012/04/27(金) 03:14:41.65 .net
>>617
いえいえ

622 :600:2012/05/03(木) 00:40:53.79 .net
お礼のレスが遅れましてすみません。

>vsthostとmidi playerは別のソフトとして作るの?
いえ、同じソフトとして作ろうとしています。
ですので、仮想MIDIケーブルのようなものは全く必要なく、
VstEventsをmidiシーケンサー側で時間管理して正しいタイミングで
VstHostに送ればよいだけですね。
色々とよく分からない勘違いをしていたようで失礼しました。

>まずVST SDKの仕様書を読めよ
vstの仕様書とは
http://www.gersic.com/vstsdk/
これでしょうか。
いろいろ読んで勉強してみることにします。
アドバイスありがとうございます。

また何か質問させていただくことがあるかもしれないですが
よろしくお願いします。

623 :デフォルトの名無しさん:2012/05/07(月) 12:43:46.09 .net
いえいえ

624 :デフォルトの名無しさん:2012/05/15(火) 21:51:42.68 .net
マイクで拾った音をライン入力から取り込んで
音の強さをデシベル表記で騒音データベースに記録し続けるようなシステムを
開発しようと考えています。

そこで疑問なのが、ライン入力とデシベルの換算部分です。
ソフトで取り込んだPCM波形強さはマイクの感度やオーディオボードのADC、
またWindowsでしたらボリュームコントロールなど
様々な個所で音量調整されます。
正確にデシベル数を入力したい場合に何か良い方法はないでしょうか?

625 :デフォルトの名無しさん:2012/05/15(火) 22:04:23.33 .net
実測校正。
測定器なんてそんなもん。

626 :デフォルトの名無しさん:2012/05/15(火) 22:11:59.12 .net
なるほど。実測校正ですか。
そうすると正確に指定したデシベルの騒音だせる機械が必要になるのかな
売ってるのか不明だけど。



627 :デフォルトの名無しさん:2012/05/15(火) 22:27:28.06 .net
だったらログ機能のついた測定器買った方が安いって話だわな

628 :デフォルトの名無しさん:2012/05/15(火) 23:48:10.74 .net
>>626
http://www.onosokki.co.jp/HP-WK/products/keisoku/soundvib/sc3100a_2120a.html

マイクサイズが1/2インチか1/4インチじゃないとダメだけどね。
ピストンフォン買うと気圧計もついてくる。気圧変動も考慮して自分で調整。
JIS規格によると結局は比較校正になる。ピストンフォンはマイクが嵌らないと意味ないので、大抵は校正された騒音計の値に合うよう調整する。小数点以下一桁がなんとなく合っていればいいと諦めるのが大事。


629 :デフォルトの名無しさん:2012/08/27(月) 23:45:56.00 .net
自動作曲ソフトを作りたいんだが本格的な作曲アルゴリズムを考えてくれ


630 :デフォルトの名無しさん:2012/08/28(火) 00:06:39.70 .net
まずは自分で調べろよ。

631 :デフォルトの名無しさん:2012/08/28(火) 02:20:47.16 .net
http://www.nicovideo.jp/watch/1345807634

632 :デフォルトの名無しさん:2012/09/04(火) 00:28:56.20 .net
>>630
調べても出てこないんだよ

633 :デフォルトの名無しさん:2012/09/04(火) 00:29:38.36 .net
>>631
それ本格的じゃないだろう

634 :デフォルトの名無しさん:2012/09/04(火) 09:02:58.18 .net
>>632
調べ方が足りないなー。
古典的だけど、まずはGTTMあたりから勉強してみたらどう?

635 :デフォルトの名無しさん:2012/09/14(金) 08:33:57.66 .net
復帰テスト

636 :デフォルトの名無しさん:2012/09/22(土) 03:50:40.32 .net
>>634
それなに?

637 :デフォルトの名無しさん:2012/09/22(土) 21:32:00.10 .net
原書
Lerdahl and Jackendoff : A Generative Theory of Tonal Music. MIT Press(1983)

説明
ttp://www.asahi-net.or.jp/~NM7Y-TKUC/4-61.htm

動いてるのがあるところ
ttp://music.iit.tsukuba.ac.jp/hamanaka/index_j.html

こんな感じですか、わかりません><

638 :デフォルトの名無しさん:2012/09/24(月) 04:18:22.77 .net
ハウリング除去のアルゴリズムを基礎からまとめたサイトとか文献とかがあれば教えてほしい

639 :デフォルトの名無しさん:2012/09/24(月) 04:42:46.19 .net
http://www.gem.hi-ho.ne.jp/katsu-san/audio/next_gen/digital.htm

640 :デフォルトの名無しさん:2012/09/24(月) 13:23:10.47 .net
基礎からではないけど、ハウリング除去というかエコーキャンセラまで載ってる。
http://www.coronasha.co.jp/np/isbn/9784339011258/

641 :デフォルトの名無しさん:2012/09/27(木) 14:37:26.48 .net
SMFプレイヤーを実装するためのユーティリティ(再生、途中停止、途中再生、シーク など)
が揃っているC++のライブラリってありますでしょうか?
Synthesis Toolkitとか調べてみてSMFをloadするクラスは見つけたのですが、
上記のような機能を有したクラスは見つかりませんでした。
ご存知の方いらっしゃったら教えていただけると嬉しいです。


642 :デフォルトの名無しさん:2012/09/27(木) 19:12:06.99 .net
「MIDI C++ codeproject」辺りでググれば山ほどヒットするけど、
なかなか「これは」というものに出会わないね。
MIDI APIは、オーディオに比べ自由度が高すぎるのが原因だろうね。

結局、シーケンサーを作っている人は、自分用のMIDIライブラリを書いていると思う。


643 :641:2012/09/27(木) 21:09:32.94 .net
レス有難うごさいます。

なるほどです。
では自作する場合について試行錯誤してみたのですが、
以下2パターンの方式を考えました。

1. 読み込んだSMFデータからすべてのトラック内のmidiイベントを
シーケンシャルに並べ直し、midiイベントごとに再計算されたデルタタイムと
共にデータを格納された配列のようなものを作り、
whileループ内でsendMidiMessage()とsleep(deltatime) を繰り返す

2. 読み込んだSMFファイルからトラックごとにスレッドを生成し、
そのそれぞれの中でsendMidiMessage()とsleep(deltatime)を繰り返す



644 :641:2012/09/27(木) 21:10:43.24 .net
最初2の方がよいのではと思ったのですが、
この実装方式だと途中再生やシークの実装ができないような気がしてきました。
1の方だと途中再生もシークも可能だと思うのですが、
>すべてのトラック内のmidiイベントをシーケンシャルに並べ直し、
>midiイベントごとに再計算されたデルタタイムと共にデータを格納された配列のようなものを作り、
この部分の実装に結構手間がかかるのでは・・と危惧しています。

1の方式で正解なのでしょうか。
>すべてのトラック内のmidiイベントをシーケンシャルに並べ直し、
>midiイベントごとに再計算されたデルタタイムと共にデータを格納された配列のようなものを作り、共にデータを格納された配列のようなものを作り、
この部分を行なってくれるライブラリのようなものがすでにあればよいなと思うのですが・・

アドバイス頂けると嬉しいです。


645 :デフォルトの名無しさん:2012/09/27(木) 21:27:53.30 .net
なんか難しく考え過ぎているような気がする。
とりあえずSMFの解析結果をダンプしたり、実時間で少しずつイベントを処理していくだけような
簡単なプログラムから始めたほうが理解が進むんじゃないかと。

ちなみに1の手法として書かれている配列って、
もしかしてtick単位で展開された全演奏データを並べた配列をイメージしてる?
短い曲ならまだしも、分解能が大きかったり演奏時間が長かったりしたら
配列の要素数が爆発しそうな予感がする。間違ってたらゴメン。

646 :デフォルトの名無しさん:2012/09/27(木) 21:38:41.41 .net
レスありがとうございます。

tick単位で展開された全演奏データ、の意味するところがよくわからなかったのですが、
全てのトラックの全演奏データの配列で、
配列の要素は1つのmidiメッセージとそのデルタタイムを
格納した構造体をイメージしてました。
つまり全トラックに含まれているMIDIメッセージの数が
配列の要素数と同じになる感じです。
こうして一元管理しておかないと途中再生やシークができないと思ったんですが、
イベントごとのタイムを最初から全部計算しておけばいいような気もしてきました。

デルタタイム分スリープさせるという考え方は合ってはいるのでしょうか。

647 :デフォルトの名無しさん:2012/09/28(金) 01:30:15.68 .net
前winで実装したときは再生用スレッド1本用意して、
・各トラックに処理すべきメッセージがあれば必要なだけ処理しポインタを進める
・1msecのスリープ(事前にtimeBeginPeriod(1)必須)
・全てのトラックがEOTにたどり着くまでループ

デルタタイムでスリープ再生すると、恐らく絶対時間が合わなくなる
あとはシークも盛り込むのであればノートon/offだけ無視して時間進められるようにするか、
擬似的に状態保持するとか、多少考える必要がある
あと厄介だったのは曲中のテンポチェンジかな
時間経過をデルタタイム換算で処理していくなら問題ないけど、
事前にデルタタイムを実時間に変換するなら注意

648 :デフォルトの名無しさん:2012/09/28(金) 09:39:14.85 .net
メロディレイザー1999の作曲アルゴリズムはどんなアルゴリズムを使っているの?


649 :デフォルトの名無しさん:2012/09/28(金) 09:40:18.36 .net
メロディレイザー1999の作曲アルゴリズムはどんなアルゴリズムを使っているの?


650 :デフォルトの名無しさん:2012/09/28(金) 11:01:27.45 .net
>>646
後半変なこと書いて申し訳ない。
ともかく言いたかったのは>>647でも書かれてるように
デルタタイムのような相対時間をわざわざ絶対時間に換算しなくても
処理できるんじゃないかな、ってことです。

>>647
巻き戻しできるプレイヤーを作ったことがないので想像ですが、
通常のイベント処理時は状態変化の履歴を蓄積していって、
巻き戻し時はその履歴をさかのぼって処理しなおしていく感じで
過去の状態を再現する感じなんでしょうか?
テキストエディタのUNDOバッファや、各種アプリの操作履歴みたいな感じで。

651 :デフォルトの名無しさん:2012/09/28(金) 11:40:24.45 .net
実際のMIDI機器相手だとエクスクルーシブ等送信順序で動作が色々異なるので
・各種リセットメッセージ
・先頭からシーク位置までのノートon/offメッセージ以外の全てを送信
ってやってた

バンクやプログラム、その他の全ての状態を一回通読して必要最低限だけ送るってのがスマートではあるけど、
実機相手だと上手く動作しないmidがあったので、当時上記実装でお茶を濁した
まぁそのへんはmidファイルや再生機器次第かと

652 :デフォルトの名無しさん:2012/09/28(金) 12:41:55.55 .net
>>651
なるほど、ありがとうございます。
>>650を書いた時点ではプレイヤー側が全状況を把握して、
巻き戻しで状況を遡って再現していけばいいかなと思ってましたが、
現在の再生位置に無関係な任意の位置へのシーク、と考えれば
頭からの再生し直す方が実装も一つにできますし、素直な方法だと思います。


653 :虫頭:2012/09/28(金) 16:29:17.48 .net
http://aimp.coolverse.jp/bh2ch.pdf

654 :646:2012/09/30(日) 16:10:22.63 .net
レスたくさんいただきましてありがとうございます!
かなり参考になりました。

とりあえず再生用スレッドを用意する方式で実装し始めてみたいと思います。
また何かわからないことが出ましたら質問させていただきたいと思っていますので
お答えいただけると幸いです。

655 :デフォルトの名無しさん:2012/10/20(土) 13:29:20.39 .net
ちょっと質問です。
Windows で OpenAL を使いたいのですが、
最近、OpenAL11CoreSDK を公式から落とそうとしても、500 internal server error が出て落とせません。
何か原因、もしくはミラーサーバなどご存知の方はいないでしょうか?

656 :デフォルトの名無しさん:2012/10/24(水) 10:31:52.20 .net
普通にできるけどな。
ブラウザ変えてみては

657 :デフォルトの名無しさん:2012/10/25(木) 22:07:25.40 .net
過去質問させていただいた者です。>>641-654
いただいたアドバイス等に従いまして、TSE3 というMIDIシーケンサーライブラリを見つけ、
Windows XP 上で SMFをロードして内蔵Midi音源にmidiメッセージを飛ばして
音を鳴らすところまでできたのですが問題も発生しており、
また質問させていただきに来ました。

658 :657:2012/10/25(木) 22:13:22.31 .net
上記の通り、シンセの音を鳴らすところまでは行ったのですが、鳴らした結果が以下になります。
http://ux.getuploader.com/sience1_20/download/234/20121025+210212.m4a
それっぽいものは鳴っているのですが、ブツブツ切れてしまい全く正常に再生できていません。

659 :デフォルトの名無しさん:2012/10/25(木) 22:17:18.08 .net
一番最後で音が伸びているのは強制終了させているからなのですが、
ノートオフメッセージを飛ばす前にプログラムが終了しているからなのかな?
と見当を付けています。が、であれば途中が切れているのはなんなのだろうと・・

660 :デフォルトの名無しさん:2012/10/25(木) 22:51:38.89 .net
ノートONとOFFが極短い間隔で送られてるように聞こえるけど、最後まで再生したときSMFの尺と合ってる?
あとはランニングステータスの処理ミスで送信チャンネルがおかしくなってるとか
音は鳴ってるんだし、フルのSMFだとデバッグし辛いだろうからドレミの3音だけ鳴らすような単純なSMF作ってトレース実行してみては?

661 :657:2012/10/27(土) 20:34:00.78 .net
レスありがとうございます。
なるほどその方法でトレースしてみます。

ちなみにソースコード的にはざっくりと以下のような感じです

timeBeginPeriod(1);
do
{
transport->play(smf, startClock); // TSE3ライブラリ使用
transport->poll(); // TSE3ライブラリ使用
Sleep(100);
} while (true);
timeEndPeriod(1);


662 :デフォルトの名無しさん:2012/10/27(土) 23:17:50.85 .net
>>661
transport->play()が無限ループの内側にあるのは書き間違い?
TSE3 0.3.1のサンプルを見ると外側にあるけど。

663 :デフォルトの名無しさん:2012/10/28(日) 17:27:11.02 .net
transport.play関数の役割を理解してる?
transport.status関数をなぜ使わない?


664 :657:2012/10/29(月) 02:04:42.78 .net
レスありがとうございます。
サンプルコードまで見ていただいたようでして、本当にありがとうございます。
その後調査を進め少し進展があったのですが、また詰まってしまっています・・。
何度も恐縮なのですが、よろしければまたアドバイスをいただけますと幸いです。

長文になってしまうのでpastebinに文を貼り付けました。
ご覧頂けると嬉しいです。
http://pastebin.com/FdWfrqUM

665 :デフォルトの名無しさん:2012/10/29(月) 03:11:24.28 .net
質問内容がドキュメント完備されてるライブラリの基本的な使い方なら、流石にこのスレの範疇外だと思うがなぁ
ttp://tse3.sourceforge.net/doc/Article.html
ここの Examples of using TSE3 に再生方法書かれてるから、まず永久ループをなんとかしろ
それと startClock の値は?
transport.play の第二引数は再生開始位置だから
src/examples/midifile/midifile.cpp(74行)見る限りじゃ整数型で 0 渡せばいいはず
ライブラリソースに手加えてるなら作業前に全部元に戻す事

666 :デフォルトの名無しさん:2012/10/29(月) 08:44:16.86 .net
とりあえず>>665が挙げてるmidifile.cppのサンプルをそのまま動かしてみるとか。
midifile.cppの中身もシンプルだから悩むところは少ないんじゃないかな。


667 :デフォルトの名無しさん:2012/11/11(日) 05:31:58.52 .net
ケプストラム求める時って周波数データに窓関数ってかけてからもとめますか?
ノイズは周波数成分の高いところに出てきそうなので一見いらないように思えるのですが・・・

668 :デフォルトの名無しさん:2012/11/11(日) 13:33:32.01 .net
ノイズのスペクトルひとつひとつも正弦波
そして窓無しで解析するなら正弦波はその周期ぴったりで抜き出さないと正確にフーリエれない

669 :デフォルトの名無しさん:2012/11/13(火) 11:47:06.67 .net
いやいや、正弦波はひとつも無いだろ。
例えばナイキスト周波数ギリギリのサイン波とよばれるものなんか矩形波だし。

670 :デフォルトの名無しさん:2012/11/13(火) 12:05:12.32 .net
真の矩形波なら無限にスペクトルが伸びてることになるよ?

671 :デフォルトの名無しさん:2012/11/13(火) 12:09:31.56 .net
真のフーリエ変換をすればそうなる。

672 :デフォルトの名無しさん:2012/11/15(木) 12:39:26.85 .net
ナイキスト周波数ギリギリの成分も窓なしだと標本化数が奇数か偶数かで精度が変わるよ

673 :657:2012/11/16(金) 12:30:57.99 .net
>>665
>>666
レスありがとうございます。
お礼が遅れましたすみません。
その後調査を続け、なんとかSMFを正常に再生させるところまで行きました!
tse3/の中に plt/Win32.cpp というファイルがありまして、
win32api用の実装が途中までしかされていないのが原因だったようです。
timeGetTime関数等を使って調整することでうまく再生されるようになりました。
また分からないことが出てきたら質問させていただきますので宜しくお願いします。

674 :デフォルトの名無しさん:2012/11/16(金) 13:15:08.18 .net
>win32api用の実装が途中までしかされていないのが原因

へー

675 :657:2012/11/16(金) 21:00:35.60 .net
よくよく見てみたらwin32.cppの先頭のコメントに
「このモジュールは途中までしか実装してないので適当に微調整して使ってね!」
的なことが書いてあったのでした笑

676 :デフォルトの名無しさん:2012/11/17(土) 10:31:05.78 .net
>>667
スペクトル→ケプストラム変換の逆変換には窓掛け要らないよ。

677 :デフォルトの名無しさん:2012/11/19(月) 16:05:45.46 .net
FFTでボーカルキャンセルのコード書いているんですが、
4096サンプルでLRそれぞれFFTしたあと、
各周波数の振幅と位相を調べて、
位相と振幅が近いもの(定位が真ん中に近いもの)
をボーカルとみなして、実数部虚数部を0にしてから
再度iFFTかけてPCMに変換するという処理をかいたんだけど
なんか、ボーカルが半分くらいの音量になってるけど消えないんだ。
なぜかわからないので、教えていただけますか?

678 :デフォルトの名無しさん:2012/11/20(火) 03:13:09.35 .net
定位が真ん中をなくすのだったらfftしなくてもできるじゃん
左右の引き算とかで。モノラルになっちゃうけど

679 :デフォルトの名無しさん:2012/11/20(火) 07:54:31.08 .net
カラオケ作るソフトで
BestPracticeってのがあるんだけど
ステレオ保ったまま周波数域で間引くなら
それ参考になるよ

680 :デフォルトの名無しさん:2012/11/20(火) 08:30:41.38 .net
>>679
素晴らしいです。ありがとう。

681 :デフォルトの名無しさん:2012/11/20(火) 08:31:42.81 .net
>>678
そう、モノラルになるのが嫌なんです

682 :デフォルトの名無しさん:2012/11/20(火) 15:39:47.03 .net
>>680
BestPracticeもKaraokeProcessで、
LRに逆位相RLを足しこんで作ってますね。
LPF/HPFとPAN計算で工夫はしていますが・・・

FFTでのvocal cancelのサンプルプログラム無いですかねぇ

683 :デフォルトの名無しさん:2012/11/20(火) 17:34:49.19 .net
声をFFTすると基音〜5倍音くらいまでが取れると思う
しかもFFT解析結果はパルスではなくなだらかに周波数成分が分散する
なので、音声だけ半分くらいカット出来てるなら、0fillした帯域の周辺もある程度カットしてやればいんじゃね?

684 :デフォルトの名無しさん:2012/11/21(水) 05:12:21.68 .net
soundengineのボーカルカットはエフェクト挟んであるボーカル以外はほとんどカットできてる
が、あんまり重くないしFIRIIRかそこらへんか上記のやり方でやってるんだろうな
ステレオ維持できてるし。幅って設定項目あるからちょっと余計に削るといいのかもね

685 :デフォルトの名無しさん:2012/11/21(水) 21:32:40.99 .net
>>682
ヒント:内積

686 :デフォルトの名無しさん:2012/12/09(日) 21:22:29.37 .net
>>677
位相を比較する時に、−πと+πは近いと判定してますか?
位相の引き算は、複素数の割り算でできるので、
それで判定するのが楽だと思います
同時に振幅の比較もできますしね
見当ちがいのことを言っていたらごめんなさい

687 :デフォルトの名無しさん:2012/12/09(日) 22:24:36.94 .net
いえいえ
ありがとう

688 :デフォルトの名無しさん:2012/12/10(月) 10:39:15.81 .net
おっぱい揉んで
激安で抜ける
○1000円〜
「新宿 アイアイ 」
○1500円〜
「西川口 マーガレット 」
○2000円〜
「新宿・錦糸町 あんぷり亭 」
「新宿 ダブルエロチカ 」

689 :デフォルトの名無しさん:2012/12/15(土) 01:29:59.43 .net
質問させていただけますでしょうか。

いま、synth1の音を鳴らすことができるVstHost的なアプリを開発したいと考えているのですが、

http://www.geocities.jp/daichi1969/vstidev/index.html
http://www.geocities.jp/daichi1969/softsynth/

ここのページを見るとどうもsynth1はVst SDK 2.0 という
かなり古いバージョンのsdkを使っているようでして、
スタインバーグの公式ページにいってもSDK ver2.3とver2.4しか見当たらないのです。

synth1を鳴らそうと思ったら sdk 2.0 が必要、という解釈は合っていますでしょうか?
またsdk 2.0 を今手に入れようとしたらどうすればよいでしょうか・・
持っている人を探すしかないのでしょうか。

教えていただけますと嬉しいです。

690 :デフォルトの名無しさん:2012/12/17(月) 21:28:44.53 .net
windowsxpだとmixerGetNumDevs
であとから接続したusbオーディオインターフェース
認識できるのですがwindows7だと認識できなくて
オンボのミュージックデバイスしか認識できません。
7でどうにか認識させてミキサーいじる方法無いでしょうか?

691 :デフォルトの名無しさん:2012/12/17(月) 21:55:24.54 .net
自己解決しました

692 :デフォルトの名無しさん:2012/12/18(火) 10:41:59.18 .net
よかったな

693 :デフォルトの名無しさん:2012/12/18(火) 10:43:27.74 .net
これにて一件落着

694 :657:2012/12/26(水) 18:51:57.20 .net
こんばんは

またお聞きしたいのですが、
このページの
http://eternalwindows.jp/winmm/wave/wave03.html

for (i = 0; i < dwBufferCount; i++) {
wh[i].lpData = (LPSTR)lpWaveData;
wh[i].dwBufferLength = dwDataSize;
wh[i].dwFlags = 0;

waveOutPrepareHeader(hwo, &wh[i], sizeof(WAVEHDR));
waveOutWrite(hwo, &wh[i], sizeof(WAVEHDR));
}

の部分を実装してみたのですが、
これを実行させてみるとwaveOutWriteの実行のタイミングで(おそらく)
毎回「プツッ」というノイズが発生してしまうんですが、
これってどのように回避すればよいでしょうか。

osはwindows xpと7です。

どなたか宜しくお願いしますm(_ _)m

695 :デフォルトの名無しさん:2012/12/26(水) 21:21:08.15 .net
初期化のタイミングんとこだけならウィンドウ生成関連でモタってんじゃね?
よくわかんねーけど、forの手前にSleep(500);入れてみるとか
あと、ダブルバッファに同じポインタ突っ込んでるようにみえるけど、合ってんのコレ?

696 :デフォルトの名無しさん:2012/12/27(木) 01:23:11.78 .net
同じポインタ入れてるのはたぶんループ再生を意図してるからだと思う。

「プツッ」は再生したWAVEデータの最初と最後の振幅値に大きな差があるんじゃない?
lpWaveDataのデータの前半と後半をそっくりmemcpyとかで交換([A][B][C][D]→[C][D][A][B]に)
して、[D]と[A]の間でプツッがでるならこれが原因かと。

697 :デフォルトの名無しさん:2012/12/29(土) 09:55:30.95 .net
クリックノイズにはアンプエンベロープ

698 :デフォルトの名無しさん:2013/01/17(木) 18:00:33.82 .net
レスありがとうございます。
お礼が漏れておりました。。失礼しました。

>「プツッ」は再生したWAVEデータの最初と最後の振幅値に大きな差があるんじゃない?
まさにこの通りでした。
プログラムのバグで、波形がなめらかな曲線を描いてなかったようです。

ありがとうございましたm(_ _)m

699 :デフォルトの名無しさん:2013/01/18(金) 22:58:28.81 .net
>>698
律儀に報告おっつ乙!

700 :デフォルトの名無しさん:2013/03/19(火) 23:13:24.21 .net
既存のソフトがあまりにクソなのでMIDIシーケンサ作ることにした。

701 :デフォルトの名無しさん:2013/03/20(水) 02:16:02.34 .net
>>700
Abletonでも素直に使っとけよ、良いもの素直に認められない偏屈が世界を変えれると思う?

702 :デフォルトの名無しさん:2013/03/20(水) 05:03:08.15 .net
この曲のタイトル教えて
ttp://www.youtube.com/watch?v=WOrsP767ER0

703 :541:2013/03/20(水) 22:08:59.28 .net
>>702
ドリフ8時だよ全員集合のあれだね

704 :デフォルトの名無しさん:2013/03/21(木) 05:30:23.68 .net
盆回り

705 :片山博文MZパンク ◆0lBZNi.Q7evd :2013/03/30(土) 18:14:11.02 .net
age

706 :デフォルトの名無しさん:2013/03/31(日) 03:54:40.74 .net
ここのことか

707 :デフォルトの名無しさん:2013/04/07(日) 02:10:30.00 .net
void lopass(short *in, float *out, long sanprus, float cut);で
C言語でしローパス作ってください
inに入力
outが出力
sanprusがサンプル数
cutがローパスの周波数です。
以上

708 :デフォルトの名無しさん:2013/04/07(日) 02:28:16.86 .net
サンプルの綴り間違ってるし、日本語間違ってるし、ここは宿題スレじゃねーし、ナニ人なのお前

709 :デフォルトの名無しさん:2013/04/07(日) 03:29:57.50 .net
sanprus
ww
ローマ人じゃね?w

710 :デフォルトの名無しさん:2013/04/07(日) 03:56:51.89 .net
まあ綴りは目をつぶるとしても
その条件だけでは作れないわな

711 :デフォルトの名無しさん:2013/04/07(日) 03:59:08.55 .net
学生の宿題ならいいが、この時期なら新入社員の可能性も

712 :541:2013/04/07(日) 09:35:48.57 .net
宿題スレにいけ

713 :デフォルトの名無しさん:2013/04/07(日) 21:25:30.15 .net
[0.5 0.5]
でも立派にローパスだしな。
あの書き込みでは何をしていいやら。

714 :デフォルトの名無しさん:2013/04/08(月) 03:19:29.42 .net
ん?反論がなければ俺の勝ちだが?

715 :デフォルトの名無しさん:2013/04/08(月) 03:20:04.30 .net
>>710-714
ボケ防止ならやれよ老人ども

716 :デフォルトの名無しさん:2013/04/08(月) 03:33:15.19 .net
>>715
ヒント
void lopass(short *in, float *out, long sanprus, float cut){
while (sanprus--)
out[sanprus] = (float)(in[sanprus]+in[sanprus+1])/2;
}

717 :デフォルトの名無しさん:2013/04/08(月) 12:03:37.47 .net
平均値で十分
void lopass(short *in, float *out, long sanprus, float cut)
{
  float avg=0.0f;
  for(long i=0;i<sanprus;++i){
    avg+=(float)(*(in+i)/sanprus);
  }
  for(long i=0;i<sanprus;++i){
    *(out+i)=avg;
  }
}

718 :デフォルトの名無しさん:2013/04/08(月) 22:19:51.98 .net
量子化ビット数が16bitなのは関数インターフェースから想像つくが、
カットしたい周波数だけ渡されてもサンプリング周波数の指定無いから無理だろ?

って思ってたけど、無視すればよかったのかw

719 :デフォルトの名無しさん:2013/04/08(月) 22:34:54.47 .net
cutはナイキスト周波数単位かもしれん

720 :デフォルトの名無しさん:2013/04/09(火) 00:38:38.96 .net
サンプリング周波数指定するよりも何らかの正規化周波数使う方が普通ですね

721 :デフォルトの名無しさん:2013/04/09(火) 02:44:09.38 .net
>>720
まぁそんな感じ

722 :デフォルトの名無しさん:2013/04/10(水) 00:04:22.37 .net
>>707
FIRフィルタだとすると
先ずFIRフィルタの係数を逆DFT+窓関数等で求める
そして、その係数を使ってFIRフィルタする
ググれば、C言語で係数を求めるプログラムやFIRフィルタするプログラム
がころがっているよ

723 :デフォルトの名無しさん:2013/04/12(金) 22:26:10.04 .net
「今でしょ」

↑寒い奴登場
つーか、お前らの周りにもいるだろ
自称明るい人、自称おもしろい人って奴
結局ソイツらってさあ
流行りの芸人のギャグとか流行りのCMとかをパクってるだけに過ぎないんだよね
ワイルドだろぉ、もそろそろだしね
職場とかクラスの人気者で笑ったことがない
なにがおもしろいんだろ?
テレビの真似してるだけなのに

724 :デフォルトの名無しさん:2013/04/13(土) 02:08:40.41 .net
1. 他人の発言をさえぎらない
2. 話すときは、だらだらとしゃべらない
3. 話すときに、怒ったり泣いたりしない
4. わからないことがあったら、すぐに質問する
5. 話を聞くときは、話している人の目を見る
6. 話を聞くときは、他のことをしない
7. 最後まで、きちんと話を聞く
8. 議論が台無しになるようなことを言わない
9. どのような意見であっても、間違いと決めつけない
10. 議論が終わったら、議論の内容の話はしない

725 :デフォルトの名無しさん:2013/04/13(土) 06:14:21.24 .net
>>723-724
こいつ空気読めてねぇなぁ

726 :デフォルトの名無しさん:2013/04/13(土) 13:06:21.97 .net
いいからキチガイは病院行けよ

727 :デフォルトの名無しさん:2013/04/13(土) 13:15:52.69 .net
【IT】 「C言語やJavaを使う人は採用しない」「AGKやDarkBASICの方が生産効率が高い」就職活動
http://kohada.2ch.net/test/read.cgi/pcnews/1365242417/139-141

コンソール研究所は13日、C言語やJavaを使う学生を採用しない方針を固めた。

これは昨今のソフトウェア開発現場において社内研修期間を嫌う企業や官公庁の意向を取り入れたもので、
「 卒業=即戦力 」 が求められる新時代への突入を明確にしたものである。

たいていの面接官は ” 学生時代にどんな部活に所属していましたか? ” などと聞くが、それは時代遅れと
なったようだ。

また、C言語やJavaのスキルを問うものに対しても、「 実務経験がなければ意味がない 」 と言う現場の声も
反映した。

コンソール研究所の開発現場から一人の声を拾ってみた。
(以下ソース参照)

728 :デフォルトの名無しさん:2013/04/13(土) 13:25:18.61 .net
1. 他人の発言をさえぎらない
4. わからないことがあったら、すぐに質問する
この二つは矛盾しています
仮に後で質問するとすればメモを取らなければならず
5. 話を聞くときは、話している人の目を見る
6. 話を聞くときは、他のことをしない
ここでまた矛盾が拡大します
10. 議論が終わったら、議論の内容の話はしない
これは何を言ってるのか判らない

729 :デフォルトの名無しさん:2013/04/13(土) 19:09:27.58 .net
人間の耳に聞こえない192kHzとかもオカルトじみてるよなあ
ブラインドで聞こえなくてもそれ含んだ音楽聴けば高音の伸びが違うとか言ってるけど
それがガムラン音楽というどっかの民族の音楽しかないらしいし

730 :デフォルトの名無しさん:2013/04/13(土) 19:17:37.48 .net
犬笛の音でも再現したいんじゃないの

731 :デフォルトの名無しさん:2013/04/13(土) 21:27:16.68 .net
1kHzとか低くても三角波とか矩形波になったら48kHzごときじゃ再現しきれないんだから必要じゃないの?

732 :デフォルトの名無しさん:2013/04/14(日) 00:58:00.13 .net
>>729
単体で取り出しても認知できないから「聴こえない」というわけでもないようだね奴らの言い分だとね

733 :デフォルトの名無しさん:2013/04/14(日) 07:55:09.13 .net
研究目的や特殊な用途で高サンプリングレートが必要なら理解出来るが、
人が聞くこと前提の音楽再生用途では不要だよ
高音質LANケーブルとか信じてるキチガイなんて相手してらんねーよ

734 :デフォルトの名無しさん:2013/04/14(日) 10:38:04.57 .net
加工するときに情報が落ちるようなケースだと元が細かい方がいいんじゃ?

735 :デフォルトの名無しさん:2013/04/14(日) 11:35:24.43 .net
それを「特殊な用途」といってるんじゃなイカ?

736 :デフォルトの名無しさん:2013/04/14(日) 23:58:19.67 .net
そもそもスピーカーのf特が20kHzかそこらだから。
しかし生のガムランゴングなら有り得るかもな。
耳には聴こえなくても体に高周波の空気の振動は伝わるわけで。
うんこしたくなるとか。

737 :デフォルトの名無しさん:2013/04/15(月) 05:44:20.31 .net
今すごくしたいです

738 :デフォルトの名無しさん:2013/04/15(月) 09:54:33.10 .net
個人的には192kHzとか不要だと思ってる。
でも、サンプリング周波数を高くするのは定位の精度に影響するんじゃないかな。
ステレオ再生の時は、サンプリング周波数が左右の時間差(位相差)の最小単位を決めるわけだからさ。

739 :デフォルトの名無しさん:2013/04/15(月) 12:22:56.19 .net
>>733
そういうけど、シールドしてないLANケーブルが発するノイズは相当なもんだよ
それがアナログ回路に回り込んでオーディオ信号を濁すことは十分にあり得る

740 :デフォルトの名無しさん:2013/04/15(月) 12:39:42.47 .net
なんでアナログ回路を電気的にも電磁波的にもシールドすれば充分とは考えないのだろう。
そもそも、音源であるマスターレコード自体がデジタルデータでしかないと言うのに。

741 :デフォルトの名無しさん:2013/04/15(月) 13:05:20.89 .net
アナログ回路を電磁波的にシールドするとか簡単に言ってくれるねえ
EMCは出さない方法があるなら出さないのが一番

742 :デフォルトの名無しさん:2013/04/15(月) 13:06:53.25 .net
誤 EMC
生 EMI

743 :デフォルトの名無しさん:2013/04/15(月) 18:48:29.54 .net
誤 生
生 正

744 :デフォルトの名無しさん:2013/04/15(月) 19:20:52.74 .net
emi
omi

745 :デフォルトの名無しさん:2013/04/15(月) 21:00:28.75 .net
制作用途とかではミックスとか加工を適確にするために、
ハイサンプリングレートはいいと思うけどね。
だったらマスターそのままよこせよってことで
ハイサンプリングレートデーターになるんだろうね。

746 :デフォルトの名無しさん:2013/04/15(月) 23:07:58.14 .net
「LANケーブルが発するノイズ」って、マジで言ってんの?
LANケーブルが拾うノイズならまだわかるが、ケーブルがノイズ発するわけねーだろ
そもそもLANからのノイズが耳で解るレベルで乗っちゃう設計じゃ、どんなケーブル使っても同じだよ

747 :デフォルトの名無しさん:2013/04/16(火) 01:54:48.30 .net
シールドしてないLANケーブル

748 :デフォルトの名無しさん:2013/04/16(火) 14:34:35.50 .net
>>746
>ケーブルがノイズ発するわけねーだろ
お前がそう思うんならそうなんだろう
お前の頭の中ではな

749 :デフォルトの名無しさん:2013/04/16(火) 17:05:30.01 .net
幼稚だな。

750 :デフォルトの名無しさん:2013/04/16(火) 19:02:40.75 .net

鏡に向かって何言ってんの?

751 :デフォルトの名無しさん:2013/04/16(火) 22:20:11.99 .net
ここはケーブルの話になると盛り上がるのかい?
つーか、ノイズ出すほどのケーブルなら、LANのパケットにもノイズ乗るんじゃね?
通信不能なくらい。

752 :デフォルトの名無しさん:2013/04/16(火) 23:04:20.33 .net
自分が出した電磁波が自分にとってノイズになるケースもあるとは思うけど
LANはノイズを受ける事についてはある程度は強いよ
差動だから

753 :デフォルトの名無しさん:2013/04/17(水) 02:35:41.27 .net
スカラー波でも出してろ

754 :デフォルトの名無しさん:2013/04/17(水) 19:09:38.80 .net
女の子の車の排気ガスフェチ!

女の子がエンジンをかけて後ろから白い煙出てたらたまらん(笑)

昔出会い系で吸わして貰った(笑)

755 :デフォルトの名無しさん:2013/04/17(水) 21:33:06.40 .net
>>754
肺がんで早死にしたいの?

756 :デフォルトの名無しさん:2013/04/20(土) 19:04:48.58 .net
曲と曲を比べてどれだけ似ているかを表示するモノを真剣に作りたいと思う(ターミナルに表示)。
measure :: songA -> songB -> Float な感じ?
上の人たちに会話に着いていけないぐらいの初心者だけど、頑張りたい。
皆がどのような工程をソフトを作ってるときに辿っているのか分からないけど、DFDなど-> コーディングな感じで行きたいと思う。
出来れば何か道筋みたいなものを教えてもらいたい。

757 :デフォルトの名無しさん:2013/04/20(土) 19:11:24.11 .net
何か閃くまで寝とけ

758 :デフォルトの名無しさん:2013/04/20(土) 19:58:08.90 .net
>>757
PCMデータの差分をとる

songA[]={-50,100,20,30,-40};
songB[]={60,100,30,20,50}:

songd = malloc(songbytes);
if(songd){
short v;
for(v=0;v<sizeof(songA);v++)
songd[v] = songA[v]-songB[v];
}

}

759 :デフォルトの名無しさん:2013/04/20(土) 20:13:58.38 .net
どうかなそれはw
手始めにコード進行を解析するプログラムを考えてみれば?
できるかどうかわからんけどw

760 :デフォルトの名無しさん:2013/04/20(土) 20:14:26.28 .net
似てると言っても色々だ
曲のどんな特徴の類似度を計りたいかによるね

761 :デフォルトの名無しさん:2013/04/20(土) 22:03:55.06 .net
単に波形の類似性を見たいのなら相互相関なんじゃないの?
波形の頭を揃えるのも必要になるけど

762 :デフォルトの名無しさん:2013/04/20(土) 23:08:00.36 .net
コード進行が似てたら似てるように聞こえるし
キーが違うと似てない曲になったりもする

763 :デフォルトの名無しさん:2013/04/21(日) 01:12:17.16 .net
>> 758
プログラミングもう一度勉強します。java?

javaでスペースインベーダーぐらいしかプログラムしてない。
ピアノの楽譜を眺めていて、音符?の配置が似ていたら「曲が似ている」んじゃないかな?の思ったのが始まり。
音の高さより波長の類似性をみた方がいいのかもしれない。
PCMデータの取扱いは
javax.sound.sampledパッケージでいけるのかな?

764 :デフォルトの名無しさん:2013/04/21(日) 07:19:24.06 .net
FFTかけて周波数成分の特徴の類似度比較なら意味があるかも知れない

765 :デフォルトの名無しさん:2013/04/21(日) 20:15:05.01 .net
>>764
おまえはFF3の劣化コピーからやりなおせ

766 :デフォルトの名無しさん:2013/04/21(日) 20:27:57.37 .net
FFTとかFF3の略って何なんだろうか?
ファイナルファンダジーしか出でこない。

767 :デフォルトの名無しさん:2013/04/21(日) 20:33:05.61 .net
ふぁーすと ふーりえ たくてぃくす

768 :デフォルトの名無しさん:2013/04/21(日) 22:28:35.74 .net
わかった。フーリエ変換か。
効率的にはFFTがいいらしいが、分かりやすさの為にDFTを選んでみる。
何か、源波形や周波数特性、フーリエ逆変換などあるみたいだけど、どれが良いのだろうか?
曲が似てるって思った時って、音階など、振幅や音の高さが似ているとき?

769 :デフォルトの名無しさん:2013/04/21(日) 22:44:47.15 .net
リズム 旋律 和声進行 音色(編成、声色、残響など) 
パターン認識だよ。
FFTの周波数領域や波形を見たところで似てると「感じる」かどうかは判らんだろう。
リズムを比較するのがせいぜいだろうな。

770 :デフォルトの名無しさん:2013/04/21(日) 23:58:58.22 .net
単純にFFTして周波数成分の比較じゃ時間軸がちょっとでも揺れたら取れなくなる
散々言われてるけど、最低でもコード進行識別出来ないと無理じゃね

771 :デフォルトの名無しさん:2013/04/22(月) 20:23:40.30 .net
まあFFTも初めてみたいなんだから、
曲全体のスペクトル見て、似てる似てないでも
いいんじゃないかな、最初は。
リズム主体の曲か、ハーモニー主体の曲か、
めちゃくちゃな曲か、くらいの分類はできるよ。

772 :デフォルトの名無しさん:2013/05/06(月) 23:11:29.32 .net
BSDライクなライセンスのOpenAL的なライブラリってないですか?
いつのまにかLGPLになってやがった・・・

773 :デフォルトの名無しさん:2013/05/22(水) 01:13:06.28 .net
オープンソースのタイムストレッチライブラリってSoundTouch使っとけばオケ?

774 :デフォルトの名無しさん:2013/05/28(火) 05:48:55.32 .net
ここでいいのかわからないのですがdirectshowのフィルターのrotの登録で
下のを入れたんですがうまくうごきません。なぜでしょうかirotvierでも登録されていません
IMoniker * pMoniker;
IRunningObjectTable *pROT;
int hr;
if (FAILED(GetRunningObjectTable(0, &pROT))) {
printf("fil;");
}

hr = CreateItemMoniker(L"!",L"FilterGraph 0 pid 0", &pMoniker);
if (SUCCEEDED(hr)) {
hr = pROT->lpVtbl->Register(pROT,0, pUnkGraph, pMoniker, pdwRegister);
pMoniker->lpVtbl->Release(pMoniker);
}else{printf("fail");}
pROT->lpVtbl->Release(pROT);
return hr;

775 :デフォルトの名無しさん:2013/05/29(水) 05:23:35.46 .net
774ですが自己解決しました。

776 :デフォルトの名無しさん:2013/05/29(水) 10:14:15.07 .net
俺も自己解決した

777 :デフォルトの名無しさん:2013/05/29(水) 23:05:09.33 .net
じゃあ俺も

778 :デフォルトの名無しさん:2013/06/01(土) 19:40:32.47 .net
偉い人が「○○しましょう」「○○はやめましょう」って沢山言ってるわけだが、
大抵の発言は正しい。
しかし、偉い人の言うことをそのまま実行することが世のため人のためとは
いえない。

てなわけでマナー講座を開講することにしよう。
第1弾として、「自己解決」について問題提起する。
なお、このコーナーの記事は管理人の独断に基づく記事なので、
世間一般の考えとは違うかもしれない。
私が間違っていたら積極的に議論して欲しい。ただし「荒らし」はやめてね。

掲示板で質問して、暫くしてから「自己解決しました」って書き込む人が多いよね。
きちんと「自己解決しました」って書くことで、掲示板の住人は答えを書く手間が省ける。
だから自己解決したことを伝えるのは間違いではない。

でも、あなたが使っている掲示板はGoogleが巡回している。
あなたが書いた質問はGoogleに見られている。
似たような質問を持った人があなたのいる掲示板にやってくる。
でも、そこの掲示板には答えがないので役に立たない。
訪れた人はあなたを憎む。

だから、自己解決したときは、解決方法も書きましょう。

以上

779 :デフォルトの名無しさん:2013/06/02(日) 10:05:47.13 .net
はい先生(AAry

780 :デフォルトの名無しさん:2013/06/05(水) 21:43:45.82 .net
20年近く前のネタだが
ブラームスの演奏データ復元プロジェクト
http://ccrma.stanford.edu/groups/edison/brahms/brahms.html

ここの住人ならもっとうまいことやれないか?

781 :デフォルトの名無しさん:2013/06/09(日) 06:40:02.83 .net
ブラウザ上で動くMIDIシーケンサもどき『じゃがりん』β1.03
http://www42.atwiki.jp/syugyou/pages/255.html

でけたよ〜

782 :デフォルトの名無しさん:2013/06/09(日) 21:28:27.13 .net
waveOut系の再生で、初っ端勝手にフェードインするようなんだが、仕様かな?

同じデータをDirectSoundで鳴らしてもそういう現象は無いのだが。

できれば勝手にフェードインをやめさせたい。

783 :デフォルトの名無しさん:2013/06/13(木) 04:12:30.46 .net
それだけじゃわからん
ソースでもうp

784 :デフォルトの名無しさん:2013/06/18(火) 19:51:47.74 .net
>>783
理解力無いね

785 :デフォルトの名無しさん:2013/06/21(金) 01:11:07.28 .net
>>784
じゃ理解力のあるあなたに説明してもらおうか

786 :デフォルトの名無しさん:2013/08/03(土) NY:AN:NY.AN .net
ソフトシンセ作ってみました。
http://anago.2ch.net/test/read.cgi/software/1375351613/

787 :デフォルトの名無しさん:2013/08/07(水) NY:AN:NY.AN .net
http://www.amazon.co.jp/dp/4774155225/

788 :デフォルトの名無しさん:2013/09/05(木) 11:19:01.71 .net
すっごい初歩的な質問で申し訳ないんだけどこういうのを作る時に使う言語はやっぱりC言語なの?

789 :デフォルトの名無しさん:2013/09/05(木) 11:53:47.31 .net
こういうのって?

790 :デフォルトの名無しさん:2013/09/05(木) 12:05:09.38 .net
まぁC/C++が多いんだろうけど
別にJavaでソフトシンセとか作ったっていいんだぜ
今時のCPUパワーなら余裕

791 :デフォルトの名無しさん:2013/09/05(木) 13:04:59.46 .net
あーごめん説明足りなかった
ソフトシンセとかもっと言えばDAWそのもの

>>790
やっぱりC辺りなのか本買って勉強してみるサンクス

792 :デフォルトの名無しさん:2013/09/06(金) 22:30:42.83 .net
Cで挫折したら
JavaScriptのWeb Audio API試してみてね

793 :デフォルトの名無しさん:2013/09/18(水) 23:48:04.52 .net
PreFEstの実装のソースコードってどこかにないですか?

794 :デフォルトの名無しさん:2013/10/06(日) 19:06:44.70 .net
すっごい初歩的な質問で申し訳ないんだけど基本周波数の推定ってどうやるの?

795 :デフォルトの名無しさん:2013/10/06(日) 19:32:49.28 .net
FFTして調べたい基音のある帯域のピーク(山)を全て列挙
列挙したピークから倍音成分を必要なだけ取得(3〜5倍音程度?)
倍音の合計レベルが大きい物を基音として採用
倍音成分の乗り方がわかってる音なら合計レベル算出時に係数として加味

あと、このままだとFFTの低音域は制度が悪いので基音ピークの左右のレベルから補正かけてあげる

796 :デフォルトの名無しさん:2013/10/06(日) 21:04:27.57 .net
基本周波数は、波形の繰り返し周期の逆数になる。

別の言い方をすると、
隣接する2つの倍音の差の周波数が基本周波数になる。

音によっては基本周波数のレベルが低いもの、さらに存在しないものさえある。

また鐘の音のように基本周波数を特定しずらいものもある。

初歩的どころか、とても難しい解題だよ。

797 :デフォルトの名無しさん:2013/10/07(月) 15:16:01.89 .net
>>794
必要な精度、許される処理時間によってさまざま
FFTですむ精度で良いなら>>795のやり方が簡単

798 :デフォルトの名無しさん:2013/11/10(日) 16:56:05.94 .net
DSD to PCMは開発経験があり、FIRまたはIIRでローパスフィルターをかけて
目的のサンプリング周波数に間引けばOKですよね。

逆にPCM to DSDの工程がよくわかりません。
とりあえず、2822400HzにアップサンプリングしてLPFをかけることになるのでしょうか?

799 :デフォルトの名無しさん:2013/11/10(日) 21:12:09.13 .net
とりあえず、ΔΣ変調を調べてみたら?
1次ならすぐできるし感覚をつかみ易いでしょう
高次になるとそれなりに知識が必要になります

800 :デフォルトの名無しさん:2013/11/10(日) 23:31:53.42 .net
ありがとうございます。
ΔΣ変調を調べてみると難しい言葉ばかりで理解できないのですが、
ノイズシェーピング処理の事をいうのでしょうか。
現状の理解では以下の流れになるのではないかと思っています。

(1)2822400Hzにアップサンプリング
(2)LPF
(3)高次のノイズシェーピング(1次なら理解したつもりです。)
(4)1ビットに変換

高次のノイズシェーピングがさっぱりわかりません。
また何を根拠にdouble型の値を1と0に振り分けているのかも不明です。

アドバイスなどいただけるとありがたいのですが。

801 :デフォルトの名無しさん:2013/11/11(月) 00:09:17.69 .net
ΔΣでノイズシェープされることまで理解できたら、
ほぼ理解できていることになると思うのですが・・・
次数が高くなると入力信号によって発振する場合が出てくるので
その点のケアをする必要が出てきます
なぜそうなるのかが分からない場合はデジタル信号処理の
勉強をしっかりやり直しましょう
たとえ1次で変換してもS/N比は悪いですが1bitストリームは
作れるのでまずはそれで試してみては?
3次くらいまでは発振の心配はありません

802 :デフォルトの名無しさん:2013/11/11(月) 22:39:59.71 .net
>>801
ありがとうございます。
とにかくやってみる事にします。
最後に1つだけ、ノイズシェーピングをかけたとしてもdouble型の配列が得られるだけですよね。
何を根拠に1と0に振り分けるのかだけ教えていただけませんか?

803 :デフォルトの名無しさん:2013/11/12(火) 00:04:50.31 .net
単純に符号で分ければいいと思うけど。
0は0Vの意味ではなく-1を表すシンボルと考えればいいでしょ。

804 :デフォルトの名無しさん:2013/11/12(火) 00:21:19.19 .net
昔読んだCQ出版の本ではノイズシェーピングは可聴域内で発生するノイズを可聴域外に移す技術だと説明されてました。
ノイズシェーピングを使わずに単に符号で分ける1bitサンプリングではディストーションが掛かった音になってしまうのを
誤差をフィードバックすることで複雑な変化をさせてLPFで取り除けるようにしているってことです。

805 :デフォルトの名無しさん:2013/11/12(火) 07:57:27.70 .net
>>802
どうやらまだ理解できてないようですね
1bitに丸める場合はただのコンパレートです
なので中央値より大きければ1を出力し最大値からの誤差をフィードバックする
中央値より小さければ0を出力し最小値からの誤差をフィードバックする
というような感じになります

806 :デフォルトの名無しさん:2013/11/12(火) 21:50:54.00 .net
>>805
ありがとうございます。
要するに、0以上は「1」、0未満は「0」という事になるのですね。
正の数のときは1から引いた値を、負の数のときは-1から引いた値を
次のサンプルに加算するという事になると理解しました。

807 :デフォルトの名無しさん:2013/11/12(火) 22:44:15.88 .net
>>806
どういたしまして

808 :デフォルトの名無しさん:2013/11/17(日) 18:53:15.46 .net
>>800
私も数ヶ月前からDSDを始めたばかりなのですが、
(4)のところはサンプリングレート2822400Hzで得られた
double型の演算結果データが正の値ならビットを1に、ゼロ
または負の値ならビットを0にして、1バイトが8ビット(=8個の
double型データに対応)で詰めて並べて、これをDSDデータとして
dsf形式でファイルに書き出したら、とりあえずAudioGateで
再生できました。

よろしければ、お互いゆっくりと楽しみながらやっていきませんか。

809 :デフォルトの名無しさん:2013/11/17(日) 20:57:43.93 .net
家庭用プリンタでシンセサイザー
http://www1.axfc.net/u/3090551
akiko

810 :デフォルトの名無しさん:2013/11/17(日) 21:59:32.66 .net
>>809
ttp://www.tv-tokyo.co.jp/mv/wbs/trend_tamago/post_54136

811 :デフォルトの名無しさん:2013/12/14(土) 16:52:45.90 .net
HTML5でオーディオプログラミングやっている人いませんか?

812 :デフォルトの名無しさん:2013/12/27(金) 00:08:15.70 .net
友人の結婚式で新郎がギター演奏して、ギター二つあるからってことで式で使ったギターをもらった。
格好良かったから自分もやってみたいところだったが、USBギターケーブルってものを見つけた。
USB GUITAR LINK GUITLINK という製品。
プログラマの端くれとしてはギターの音を拾うプログラムを書いてみたくなったんたけど、
これってどういう仕組みなんだろう?
この機器に関係なく楽器用のAPIとかってあるのかな?

813 :デフォルトの名無しさん:2013/12/27(金) 02:06:57.85 .net
ADコンバータにそれっぽい名前をつけてるだけでしょ

814 :デフォルトの名無しさん:2013/12/27(金) 08:35:18.84 .net
>>812
PCや普通のAV機器の入力に直でギター繋ぐなよー、受け側が壊れる場合もある
ttp://www.g200kg.com/jp/docs/dic/impedance.html

815 :デフォルトの名無しさん:2013/12/27(金) 15:07:40.44 .net
ギターの直出力レベルで機器が壊れるってのは初めて聞いた

816 :デフォルトの名無しさん:2013/12/29(日) 11:15:14.72 .net
引用:
> 通常のミキサーのマイク入力などにそのまま接続しても正常に音が出ない。

「正常に音が出ない」という表現を「壊れる」と解釈するのは斬新だなw

817 :デフォルトの名無しさん:2013/12/30(月) 04:53:09.66 .net
音が壊れるってことだろ。

818 :デフォルトの名無しさん:2014/01/05(日) 16:14:20.64 .net
>>812

まず、音声を機器に取り込むには、マイク入力と、ライン入力 とかあったりする。
どちらも、電圧をオシロスコープで見ると、よくある音声波形が見えるのだが、
2つの違いは、その大きさが違うということ。(詳しく言うと、インピーダンスの違いが大きいが、それはおいておこう)

ところで、コイルに磁石を出し入れすると電圧(電流)を生じるのは分かるかな。
エレキギターも、コイルが入っていて、弦の振動が、電圧になるのだが、微弱すぎるんだ。
そこで、ギター入力可能な端子というのは、ギターの微弱な電気を、増幅させる回路が入っている。
( 詳しくいうと、入力インピーダンスがすごく高い、かつ、増幅率の高いアンプ、というのがポイント)

つまり、USBギターケーブルっていうのは、いろんなPCにもついている音声入力端子 を、
ギターの微弱音に対応させた専用のもの、と覚えておけばよいだろう。

819 :デフォルトの名無しさん:2014/01/05(日) 16:33:14.29 .net
次に、この音声入力信号を扱うプログラムを書く方法だが、
察しのとおり、PCに入ってきた音声信号は、OSやAPI、ドライバなどがまとめて取り扱う。
自作のプログラムは、用意されたAPIに対して、データのやりとりをして処理を行うこととなる。

なお、USBの信号を、OSやAPIに渡すまでの処理は、機器のメーカーが用意してある。
通常、USBを指したら、ドライバをインストールしてください、って出るだろ?それ。
で、例えばWindows の場合、音声信号を扱うAPIは、何種類かある。

マイクロソフトが標準で用意しているドライバは、
Windows マルチメディアAPI(MME) mmsystem.h
Windows Audio Session API (WASAPI)
DirectSound
など。
でも、マイクロソフトのAPIは、割とどんな機器でも対応できるような仕様で音声信号をまとめるので、
それがいやだ、って言う人のために、楽器用のオーディオドライバも第3者から提供されている。
それが、ASIOとかいうドライバ。


で、ASIOとかに対応したプログラムを書きたいなら、ASIOのSDKを入手して、
asiodrivers.h をインクルードして、、、などとプログラムをすればよいのだが、
一定時間内に処理を終わらせないと音が途切れるなど、各種のオーディオプログラミングテクニックが必要。

820 :デフォルトの名無しさん:2014/01/05(日) 16:46:47.67 .net
ということで、ギターの音を拾うプログラムをしたければ、
(a) USBギターケーブルと通信するための、USB信号を自分で解析して、自分で制御する
(b) a はメーカーの用意したUSBドライバに任せて、
自分は、そのUSBドライバが対応しているオーディオAPIとやりとりするプログラムを自作する
といったプログラムをすることとなる。

どちらも結構面倒である。 というか (a)は無理。
(a)をやりたければ、ハードウェアの自作から始めた方が早い。

つまり、ギターの音を拾うのはあなたには無理であろう。あきらめなさい。

821 :デフォルトの名無しさん:2014/01/05(日) 16:48:14.94 .net
だが、ギターの音を拾うところまでは、先人の開発したソフトウェアに任せてしまえば、
そのソフトウェアを使ったプログラミングならば、割と簡単にできる。

例えば、Processing のmimimライブラリを使えば、簡単に音声入力を扱える
http://r-dimension.xsrv.jp/classes_j/minim/

もし、音声エフェクトアプリとかに興味あるのなら、VSTエフェクトの自作とかも探ってみる。
VSTっぽいみたいなのを、簡単にやってみたいなら ↓ とか面白いかも。
http://jvaptools.sourceforge.net/scripteffect/screenshot.htm
Javaの文法で音声エフェクトを簡単にリアルタイムコーディングできて面白い。

822 :デフォルトの名無しさん:2014/01/05(日) 17:35:31.98 .net
もっというと、ブラウザ上のJavaScriptでギター入力音を扱える時代が来るかもしれない。

ブラウザがオーディオ入力信号を扱うことができれば、
あとは自分のJavaScriptは、そのAPIに対してデータのやりとりとかメソッド実行を行うだけだ。

今のところ Chrome なら、
WebRTC とか WebAudio API を使えば、
オーディオ入力データを getUserMedia()関数で取得できる。

823 :デフォルトの名無しさん:2014/01/16(木) 02:58:43.07 .net
mp3等の圧縮って先にLPFで帯域制限してるみたいなんだけど
単にフーリエ変換後ある周波数以上のデータを含めないって帯域制限の掛け方できる?

824 :デフォルトの名無しさん:2014/01/16(木) 03:09:57.75 .net
デジタルフィルターってのが、一般にそれをやってるんじゃないの。
逆フーリエ変換のときに。

825 :デフォルトの名無しさん:2014/01/17(金) 22:51:27.40 .net
普通にできるけど、逆変換した後にフレーム間の波形のつながりが悪くなるから、
フレームに処理前のサンプルを入れる時点で余分にサンプルをとって、
フレームを重複させながら処理するんだったような。

826 :デフォルトの名無しさん:2014/03/31(月) 14:53:16.34 ID:OkqtQFpz.net
インパルスレスポンスの入ってるwaveファイルって
元となる音の一番目のサンプルとインパルスのサンプルの一番目の音を掛け算して
次に元となる音の一番目の音とインパルスの2番目の音と掛けて、元となる2番目とインパルスの1番目を
掛けたものを足すみたいにやってけばいいんですよね?

827 :デフォルトの名無しさん:2014/04/02(水) 12:23:16.75 ID:FY64sASs.net
たずねる前に、まずやってみることです。

828 :デフォルトの名無しさん:2014/04/23(水) 09:35:49.37 ID:Fk2AHs0t.net
パンで音の広がりってどうやって再現するんですか?
たくさん右に振ったパンとたくさん左に振ったパンを混ぜると広くて
たくさんを小さくにすると狭いんですか?
あとパンの振ってあるステレオファイルをパンを振るにはどうするんですか?

829 :デフォルトの名無しさん:2014/04/23(水) 09:45:29.51 ID:5vldvyzp.net
パン振るだけじゃいわゆる広がりは出ない
ディレイをかける

830 :デフォルトの名無しさん:2014/04/23(水) 10:22:20.03 ID:ezfyJwXq.net
位相をずらす

831 :デフォルトの名無しさん:2014/04/23(水) 10:34:58.59 ID:Fk2AHs0t.net
位相って右から音がなると右のほうが先に聞こえるってことですよね?
それと広がりとどう関係するんですか?

832 :デフォルトの名無しさん:2014/04/23(水) 11:06:08.12 ID:GdSWjfVB.net
単純にそういうわけでもないけど、、
脳が空間を認識するからだろ

833 :デフォルトの名無しさん:2014/04/23(水) 12:51:33.30 ID:6VikSZRx.net
横の広がりはディレイ
縦の広がりはリバーブ

834 :デフォルトの名無しさん:2014/04/30(水) 17:30:57.64 ID:96+BbSAH.net
ミキサーで加算するとき、信号をソートして小さい方から足していかないと情報落ちが起きますよね
このときの誤差ってどの程度のものなんですか?

835 :デフォルトの名無しさん:2014/04/30(水) 19:01:17.86 ID:+zw06xcU.net
>>834
式は思い出せないけど、
計算機イプシロン 情報落ち でググって。

836 :デフォルトの名無しさん:2014/05/05(月) 11:16:12.48 ID:Mu2ScZdD.net
その情報落ちより、浮動小数点を整数に直すときのズレが大きすぎるから気にしなくていいよ。

837 :デフォルトの名無しさん:2014/05/11(日) 11:50:22.46 ID:0MhL7reQ.net
最近のソフトシンセの機能と音質の凄さに、
「これじゃあ、わざわざ、立派な外部スピーカー買わなくても良いじゃんw」
とさえ考えてしまう俺がいるのであった...。
プロはどう思うか知らんが、素人だと、そこまで考えてしまうくらいだから。

838 :デフォルトの名無しさん:2014/05/11(日) 11:54:30.79 ID:uVLDDIJF.net
そうなんだ
ソフトにしろハードにしろシンセで作った
濃厚な音を再現性良く出すには
それなりのスピーカーが必要だと思ってた

839 :デフォルトの名無しさん:2014/05/11(日) 16:16:19.06 ID:xo7pnJy3.net
スピーカーの特性を検出して、
信号にその逆特製を施してやるとかできないもんだろうか?

840 :デフォルトの名無しさん:2014/05/11(日) 16:23:16.03 ID:Kc1eCup4.net
音場補正ならこういうのあるよ
http://www.ikmultimedia.com/mobile/products/arc/?O=JP

割と安価だし自分でやる必要性は感じないかな

841 :デフォルトの名無しさん:2014/05/11(日) 16:46:14.09 ID:+P2aAX7z.net
CONEQとか既にその手の処理は飽和気味だよね

842 :デフォルトの名無しさん:2014/05/12(月) 13:02:09.34 ID:qGQ9K653.net
イコライザーっていうものはそういうもののために存在しているわけだが。

843 :デフォルトの名無しさん:2014/05/12(月) 13:20:51.32 ID:2vYhWLPf.net
リアルタイムに外からの騒音も消してくれるなら良いんだけど
測定時の部屋の反響程度だよね

844 :デフォルトの名無しさん:2014/05/12(月) 20:12:08.66 ID:di4+ZeX/.net
>>842
言われてみれば、等化器か。
正直、調味料的な見方してた。

845 :デフォルトの名無しさん:2014/05/12(月) 20:33:27.39 ID:eNXkL11P.net
補正なんてしたら頭動かせなくなるんじゃん?固定器具必要じゃん?

846 :デフォルトの名無しさん:2014/05/12(月) 22:42:37.82 ID:cG/EbP95.net
そんなんカメラで位置検出すれば大丈夫だって

847 :デフォルトの名無しさん:2014/05/13(火) 18:53:31.89 ID:TbMp8/0S.net
キネクト使えばいけそうやな

848 :デフォルトの名無しさん:2014/05/18(日) 12:40:16.32 ID:7YUGvOzg.net
サイン波で少しずつ音を上げていかないとプチっていうんですけど、
波形自体がそういう音の成分を含んでいるのか、スピーカーを通すとそういう音が鳴るのか
どちらですか?

849 :デフォルトの名無しさん:2014/05/18(日) 13:16:24.42 ID:vXasxGe8.net
both

850 :デフォルトの名無しさん:2014/05/18(日) 13:19:50.84 ID:OJTIBpRp.net
波形の立ち上がり(時間)の事か解像度の荒さの事か分からんけど、

前者ならA点からB点をサイン曲線とかで補間してやれば立ち上がりが若干緩くなる
他のやり方だとオーバーサンプリングして戻してもノイズ消えるんじゃないかな?

後者はそもそも補間してないって話だよね

851 :デフォルトの名無しさん:2014/06/02(月) 16:32:33.23 ID:2EOO5SfK.net
元々モノラルお音をステレオに二重化するとき
音を左右大きさ変えて音源移動してるイメージにしたいのに
なかなかうまくいかないわ

852 :デフォルトの名無しさん:2014/06/04(水) 11:14:33.83 ID:JjkiX3zX.net
パンを一番左にすると普通左からしか聞こえないけど
実際は右からも聞こえるからな。
反射音なしなら左からしかきこえないってことなんだろうけど。

853 :デフォルトの名無しさん:2014/06/04(水) 23:03:23.65 ID:ZoWoj1bU.net
位相をずらす

854 :デフォルトの名無しさん:2014/11/01(土) 01:49:48.99 ID:i3hu5hPg.net
音声認識はスレ違い?

855 :デフォルトの名無しさん:2014/11/01(土) 22:17:04.75 ID:TOmVtt0r.net
ギリありじゃね

856 :デフォルトの名無しさん:2014/12/12(金) 03:57:40.57 ID:L50nhIUx.net
ビブラート入れるプログラムくれー

857 :デフォルトの名無しさん:2014/12/16(火) 14:13:56.88 ID:mKQuEY+m.net
道具に頼らず歌の練習しろ

858 :デフォルトの名無しさん:2014/12/17(水) 14:49:10.86 ID:ejUwy2/1.net
ttps://www.youtube.com/watch?v=1iqqo5V3pBI

859 :デフォルトの名無しさん:2015/05/21(木) 16:48:17.77 ID:jFMq0sb+.net
DOS環境でi8254を使って音ならすのは、ここで扱う範囲ですかね?

860 :デフォルトの名無しさん:2015/05/21(木) 18:17:56.84 ID:CKzSELPq.net
いいえ

861 :デフォルトの名無しさん:2015/05/21(木) 18:36:07.04 ID:/4m8f8ei.net
Beep(440, 1000);

862 :デフォルトの名無しさん:2015/05/22(金) 04:41:53.77 ID:SjToadmy.net
8254を使ってPWMによる音声出力でノコギリ波やサイン波を出したりWAVファイルの再生したり
現在の余りあるCPUパワーを使えば数トラック分の波形をリアルタイムに合成しつつ出力も
可能なのかどうかとか聞いてみたかったんですが、ここじゃ扱えないんですか……
残念です

863 :デフォルトの名無しさん:2015/05/22(金) 09:39:23.96 ID:LopKJOfq.net
聴くまでもないからな

864 :デフォルトの名無しさん:2015/05/30(土) 01:36:22.68 ID:SCc3gZg5.net
じゃソースだしといてください、MASM用のリストでいいんで

865 :デフォルトの名無しさん:2015/05/30(土) 01:40:27.05 ID:0K4sPnsN.net
TASMならあったがMASM限定か...残念

866 :デフォルトの名無しさん:2015/05/30(土) 09:32:38.41 ID:Kc1ZQXk+.net
macro-80 のなら残ってる

867 :デフォルトの名無しさん:2015/06/01(月) 11:49:47.71 ID:jClPxdDj.net
CP/Mかよ

868 :デフォルトの名無しさん:2015/06/01(月) 11:53:42.07 ID:Fvr773oX.net
optasmのなら手元に

869 :デフォルトの名無しさん:2015/07/12(日) 18:13:06.44 ID:eGQP6pyJ.net
でしたるおんせいについてちゃんとせつめいできへんうんこたればっかりやないかっ!

870 :デフォルトの名無しさん:2015/07/17(金) 00:20:33.70 ID:5h7Be4GN.net
WIN32API群だけでウェーブテーブル方式で矩形波を鳴らすにはどうしたらいいですか?

871 :デフォルトの名無しさん:2015/07/17(金) 10:02:30.77 ID:X7JQ6nLK.net
APIだけって、PlaySoundも入る?
waveOutWrite使う話?

872 :デフォルトの名無しさん:2015/07/17(金) 12:21:32.91 ID:RO6b+9z4.net
できればwaveOutWrite関数でのやり方のヒントを下さればいいのですが、
この際目的を果たせればどんな方法でも文句は言いません、お願いします

873 :デフォルトの名無しさん:2015/07/17(金) 13:14:12.33 ID:amtl7PFW.net
ggrks
http://www13.plala.or.jp/kymats/study/MULTIMEDIA/waveOut_create.html

874 :デフォルトの名無しさん:2015/07/17(金) 18:23:07.91 ID:MAxfs6tF.net
文句言いながらも教えてくれる
しかもすんごい分かりやすいサイト

…ええ話や

875 :デフォルトの名無しさん:2015/07/17(金) 21:16:13.13 ID:RO6b+9z4.net
わからないなら無理に答えなくてもいいです

876 :デフォルトの名無しさん:2015/07/17(金) 21:25:00.17 ID:amtl7PFW.net
人を恨んで技術を恨まず

877 :デフォルトの名無しさん:2015/07/18(土) 01:49:43.20 ID:VyGMEck6.net
>>875
「サイト見てもこの辺がよく理解出来ないんです」

って話ならまだわかるよ
でもキミ…なんなの?
何で上から目線なの?

878 :デフォルトの名無しさん:2015/07/18(土) 07:52:54.33 ID:+gZxBITT.net
大体ググってわかるものなら、わざわざこんなところに書き込みに来ません
現にそのサイトだって何十回と見てきました

もう問題は自己解決したので結構です
ありがとうございました

879 :デフォルトの名無しさん:2015/07/18(土) 09:55:30.83 ID:InMkSBJ7.net
クズすぎワロス

880 :デフォルトの名無しさん:2015/07/18(土) 14:05:00.32 ID:1dCgaP/A.net
頭も悪けりゃ性格も悪い
プログラムなんかやってないで死ねばいいのにな>>878

881 :デフォルトの名無しさん:2015/07/19(日) 08:22:25.53 ID:bmSa3482.net
これくらいのことで死ねはないわー

882 :デフォルトの名無しさん:2015/07/19(日) 09:02:53.81 ID:5PwANh2+.net
>>881
自演乙
はよしねよ

883 :デフォルトの名無しさん:2015/07/19(日) 09:33:32.25 ID:bmSa3482.net
何で俺がとばっちりくらってんだw
お前頭悪そうw

884 :デフォルトの名無しさん:2015/07/19(日) 09:49:52.62 ID:l1XxyCFZ.net
とばっちりとか言っちゃってるお前の頭が悪いからじゃね?
もう死ねばよくね?おまえw

885 :デフォルトの名無しさん:2015/07/19(日) 09:54:46.24 ID:bmSa3482.net
頭も悪けりゃ性格も悪い

886 :デフォルトの名無しさん:2015/07/19(日) 09:57:45.98 ID:l1XxyCFZ.net
>>885
わかってんならはよ死ねよカス

887 :デフォルトの名無しさん:2015/07/19(日) 10:04:36.49 ID:bmSa3482.net
お前らみたいな無能が居座り続けたからスレが荒廃していったのかw

888 :デフォルトの名無しさん:2015/07/19(日) 10:10:00.45 ID:l1XxyCFZ.net
え その理論どっから出てきたの?
アホ特有の考えなの?

889 :デフォルトの名無しさん:2015/07/19(日) 10:45:29.82 ID:rjdaqXDS.net
ん?自演擁護終了?

>>887死んでもうたん?

890 :デフォルトの名無しさん:2015/07/19(日) 11:11:54.10 ID:UqoVBwNq.net
それではここから先
通常運転でお願いします

891 :デフォルトの名無しさん:2015/07/19(日) 12:00:22.33 ID:Npxm1YBj.net
>>881
つべこべ言わずにさっさと市ね

892 :デフォルトの名無しさん:2015/07/19(日) 12:05:08.40 ID:x0QgGbu9.net
MP3の事で質問があるのですが
おとりこみ中でしょうか…

893 :デフォルトの名無しさん:2015/07/19(日) 12:09:06.13 ID:00gWbno5.net
>>892
2chの夏なので暫く時間がかかります

894 :デフォルトの名無しさん:2015/07/19(日) 12:10:07.90 ID:qIuV8crC.net
>>892
ググレカス

895 :デフォルトの名無しさん:2015/07/19(日) 12:10:45.32 ID:x0QgGbu9.net
そうでしたか
では次スレくらいで質問させてもらいますね

896 :sage:2015/07/19(日) 12:19:01.59 ID:U0Q8gnMS.net
882ってのが自分を叩いた人を貶めようと必死なんですね
わかりますw

897 :デフォルトの名無しさん:2015/07/19(日) 12:20:44.30 ID:U0Q8gnMS.net
ミスった…

898 :デフォルトの名無しさん:2015/07/19(日) 20:31:44.43 ID:1azLGWk4.net
>>895
頭悪いのが一匹住み着いてるけど
ほっとけばいいよ

バカまるだしだから見りゃすぐわかるだろけど
一応まとめとく


【バカの書き込み一覧】
>>872
>>875
>>878
>>881
>>883
>>885
>>887
>>891
>>894

899 :デフォルトの名無しさん:2015/07/20(月) 00:49:37.62 ID:x3k6Wnex.net
自分にとっていいこと何もないのに
わざわざ損をする行動ばかりしてるけど
今までの人生そんなことばかりなのか

900 :デフォルトの名無しさん:2015/07/20(月) 01:02:50.99 ID:TiBMlu35.net
民度低すぎワロタ

901 :デフォルトの名無しさん:2015/07/20(月) 01:26:40.56 ID:sh2i3Gaj.net
と、873が申しております

902 :デフォルトの名無しさん:2015/07/20(月) 04:17:38.83 ID:gQqIhgKH.net
ApeTagv2ってファイルのどの場所にあるんですか?

903 :デフォルトの名無しさん:2015/07/20(月) 08:43:08.46 ID:5uik2pSO.net
>>872
>>875
>>878
>>881
>>883
>>885
>>887
>>891
>>894

氏ね

904 :デフォルトの名無しさん:2015/07/20(月) 21:53:36.03 ID:AGKnnOa8.net
細かな場所は知らんけど
フリーソフトでAPEタグのあるファイル探して
見つけたらタグ文字検索すればいいんじゃね?

タグ文字は次の8文字
'A' 'P' 'E' 'T' 'A' 'G' 'E' 'X'

1文字1byte

Version2はヘッダとフッタで2箇所あるらしい

詳しい事は↓で
ttp://pppea.s16.xrea.com/freeware/mpachk.html

905 :デフォルトの名無しさん:2015/07/21(火) 08:50:50.41 ID:IkzkvI7X.net
>>872
>>875
>>878
>>881
>>883
>>885
>>887
>>891
>>894

くたばったか?w

906 :デフォルトの名無しさん:2015/07/21(火) 12:25:38.00 ID:D5PG4eJe.net
気狂うとるw

907 :デフォルトの名無しさん:2015/07/21(火) 12:29:28.71 ID:cDZFCGvg.net
夏休みやねー

908 :デフォルトの名無しさん:2015/07/22(水) 00:57:46.50 ID:HE+mVOuz.net
キチガイ共死ね

909 :デフォルトの名無しさん:2015/07/27(月) 19:53:40.97 ID:KH8d/GA1.net
doubleをshortに変換する時のディザリングって、
変換誤差を次のサンプルに繰り越す方式でOK?

910 :デフォルトの名無しさん:2015/07/28(火) 05:18:17.99 ID:QwU65quk.net
お好みでノイズシェイパーもどうぞ

911 :デフォルトの名無しさん:2015/08/15(土) 13:28:15.97 ID:x5Zzj+B4.net
開発環境がエクセルVBAしかないからこれでやってるんだけど
waveInOpenが成功しない(´;ω;`)

912 :デフォルトの名無しさん:2015/08/16(日) 10:39:56.12 ID:gulCE2GF.net
無料で作れる環境が沢山あるのに、なぜVBAという化石を使い続けるのか

913 :デフォルトの名無しさん:2015/08/16(日) 11:14:07.86 ID:0tax/iFh.net
OSとかOfficeのバージョンくらい書け

914 :912:2015/08/16(日) 18:35:32.80 ID:68k2mLDo.net
>>912それしかない環境だから・・・(ToT)

>>913
Win10Home
Office2003

Private Const WAVE_FORMAT_PCM = 1
Private Const WAVE_MAPPER = -1
Private Const CALLBACK_WINDOW = &H10000
Public Function 入力デバイスのオープン()
Private m_コールバック用ウインドウハンドル As Long
m_コールバック用ウインドウハンドル = FindWindow(vbNullString, UserForm1.Caption)
Private m_入力フォーマット As WAVEFORMATEX
With m_入力フォーマット
.nFormatTag = WAVE_FORMAT_PCM
.nChannels = 2
.nSamplesPerSec = 44100
.nBitsPerSample = 16
.nBlockAlign = .nChannels * .nBitsPerSample / 8
.lAvgBytesPerSec = .nBlockAlign * .nSamplesPerSec
.nSize = 0
End With
Debug.Print waveInOpen(m_入力デバイスハンドル, WAVE_MAPPER, m_入力フォーマット, m_コールバック用ウインドウハンドル, 0, CALLBACK_WINDOW)
Call waveInClose(m_入力デバイスハンドル)
End Function

結果:
waveInOpen()で32が返ってくる(Private Const WAVERR_BADFORMAT = 32)

915 :デフォルトの名無しさん:2015/08/16(日) 19:14:13.15 ID:mEfh+Nxq.net
>Private Const CALLBACK_WINDOW = &H10000

916 :デフォルトの名無しさん:2015/08/16(日) 20:17:38.90 ID:0tax/iFh.net
Private Const WAVE_FORMAT_PCM = 1
Private Const WAVE_MAPPER = -1
Private Const CALLBACK_WINDOW = &H10000
Type WAVEFORMATEX
wFormatTag As Integer
nChannels As Integer
nSamplesPerSec As Long
nAvgBytesPerSec As Long
nBlockAlign As Integer
wBitsPerSample As Integer
cbSize As Integer
End Type
Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" (ByRef clsname As String, ByRef winname As String) As Long
Declare Function waveInOpen Lib "winmm.dll" (ByRef hIn As Long, ByVal did As Long, ByRef pfmt As WAVEFORMATEX, ByVal cb As Long, ByVal cbi As Long, ByVal f As Long) As Long
Declare Function waveInClose Lib "winmm.dll" (ByRef hIn As Long) As Long

917 :デフォルトの名無しさん:2015/08/16(日) 20:18:50.68 ID:0tax/iFh.net
Sub openInputDevice()
Dim hIn As Long
Dim cbwnd As Long
Dim fmt As WAVEFORMATEX
cbwnd = FindWindow(vbNullString, UserForm1.Caption)
With fmt
.wFormatTag = WAVE_FORMAT_PCM
.nChannels = 2
.nSamplesPerSec = 44100
.wBitsPerSample = 16
.nBlockAlign = .nChannels * .wBitsPerSample / 8
.nAvgBytesPerSec = .nSamplesPerSec * .nBlockAlign
.cbSize = 0
End With
Debug.Print waveInOpen(hIn, WAVE_MAPPER, fmt, cbwnd, 0, CALLBACK_WINDOW)
Call waveInClose(hIn)
End Sub

Windows10pro / Office2003 で 0 戻り確認済

918 :デフォルトの名無しさん:2015/08/16(日) 20:28:14.66 ID:W8CNJz1m.net
は、、、早い
ありがとうございました
ゼロが戻りますた

919 :デフォルトの名無しさん:2015/08/16(日) 20:37:36.34 ID:mEfh+Nxq.net
2003つえー

920 :デフォルトの名無しさん:2015/10/21(水) 21:42:10.56 ID:XzqBxa//.net
生のパイプオルガンの演奏に、PCがどこまで迫れるものだろうか?
耳の良い奴に、PCが繰り出す擬似的なパイプオルガンの音を聞かせたら、
「この程度?」と、見事に笑われてしまった。

921 :デフォルトの名無しさん:2015/10/21(水) 21:51:29.12 ID:kNGAvyWJ.net
>PCが繰り出す擬似的なパイプオルガンの音

そりゃ電子オルガンの音なんでしょ。

922 :デフォルトの名無しさん:2015/10/22(木) 10:39:57.21 ID:CeSwqlxw.net
生パイプオルガン聴いたらスピーカー経由ならどのメディアで聴いてもこの程度?だしなあ

923 :デフォルトの名無しさん:2015/10/22(木) 10:52:17.20 ID:8pCzy071.net
可聴域だけじゃないからな。

924 :デフォルトの名無しさん:2015/10/22(木) 13:19:47.55 ID:522gqyPw.net
>>920
スピーカーを変えるべき

925 :デフォルトの名無しさん:2015/10/22(木) 22:59:22.96 ID:IPNK5Wr+.net
スピーカーを変えるだけで本物のパイプオルガンにかなり近い音が
出せるなら、逆にノーベル賞ものでは?

926 :デフォルトの名無しさん:2015/10/23(金) 11:04:24.97 ID:9hpieugb.net
各音程ごとにパイプならべてスピーカーで振動させればノーベル賞

927 :デフォルトの名無しさん:2015/10/23(金) 13:32:59.23 ID:E9Sd6aCq.net
実際に製品化したらイグノーベル賞を取れるかもね

928 :デフォルトの名無しさん:2015/10/25(日) 12:17:41.81 ID:UUHJNkfD.net
「パイプの数だけスピーカーを用意する」という、コペルニクス的な
発想は邪道かな。

929 :デフォルトの名無しさん:2015/10/27(火) 02:47:25.06 ID:TrEmiTqs.net
>>928
>>926と言ってることあんまり変わってないしコペルニクス的かと言われると疑問じゃないか

930 :デフォルトの名無しさん:2015/10/27(火) 08:32:41.56 ID:O948v5f3.net
スピーカーよりふいごの弁をコントロールした方がよさそうだね

931 :デフォルトの名無しさん:2015/10/27(火) 08:46:42.54 ID:LdCFlBPw.net
圧搾空気の弁の制御ならロボット関連技術が使えるんじゃない?w

932 :デフォルトの名無しさん:2015/10/27(火) 11:03:55.55 ID:Zj/nXK80.net
結局自動演奏のパイプオル(ry

933 :デフォルトの名無しさん:2015/10/27(火) 14:33:45.22 ID:qWbm94Vl.net
まあスピーカーは置いてくとして
サンプリングでパイプオルガンにどこまで迫れるもんかな、、と今ググったら
http://kohrogi.com/?p=4119
こんなのあるんだね、フリーの音源データ3.2GBかあ

934 :デフォルトの名無しさん:2015/10/27(火) 14:36:15.26 ID:qWbm94Vl.net
大元はここか
http://store.samplephonics.com/products/the-leeds-town-hall-organ
カートに入れて買うんだな、£0 だってさ

935 :デフォルトの名無しさん:2015/10/27(火) 21:20:04.37 ID:2IaUfj9s.net
ソフトシンセ作りで一番苦労するのは、パイプオルガンの音色だろうな。
他の楽器はそこそこ再現できるが、これだけは再現が難しいと思う。

936 :デフォルトの名無しさん:2015/10/28(水) 04:56:23.58 ID:2vlbbPP0.net
尺八の再現も難しいよ

937 :デフォルトの名無しさん:2015/10/28(水) 14:23:28.36 ID:0c7VcdM3.net
YAMAHAの物理音源の尺八は凄かったね

938 :デフォルトの名無しさん:2015/10/29(木) 23:19:12.54 ID:7SyTUtua.net
尺八のナマの演奏は、シビれるよな。
あれにどこまで迫れるかだ。

939 :デフォルトの名無しさん:2015/10/29(木) 23:33:45.82 ID:IDJmDfji.net
でも実際には殆どの楽器の再現が難しいよな
ピアノとかドラムは力技で再現度がすごいけどさ
良く使うであろうギターですら打ち込みは困難だし
パイプオルガンなんかはスピーカーで再現できないというだけで
シンセとしては再現しやすいほうだね

940 :デフォルトの名無しさん:2015/10/30(金) 07:10:28.86 ID:jV4eid+M.net
wavファイル(データ)の合成って加算するだけでいいってどこかで読んだんだけど、それだけでいいの?
BGMのwavファイルに声のwavファイルを重ねたりとか。
ビットレートとビット数が同じだったら加算するだけでいいの?
16ビットだったらC言語のshort型と同じだからそれを足し算すればいいの?

941 :デフォルトの名無しさん:2015/10/30(金) 10:53:25.00 ID:bGTI8z09.net
オーバーフローしないように加算すればいいよ

942 :デフォルトの名無しさん:2015/10/30(金) 19:31:27.32 ID:jV4eid+M.net
>>941
サンクス!

943 :デフォルトの名無しさん:2015/10/30(金) 22:13:49.33 ID:jV4eid+M.net
これオーバーフローするようだったら、
オーバーフローしない最大数値にしようと思うんだけど、
if ( dat > 255 ) dat = 255;
各ビットでこれやったら何かおかしなことにならないの?
今のこぎり波作って遊んでるんだけど、
例えば全く同じのこぎり波を加算しまくって上記のやり方で詰めたら谷間の長さが少なくなっていくよな。

|/ ←こんなのこぎり波が
|/~ ←こんな形になるよな

これって詰めたらマズいんじゃないか。
だからと言って詰めないわけにもいかないし、どうすんだこれ。

944 :デフォルトの名無しさん:2015/10/30(金) 23:22:44.63 ID:k5vGnOwJ.net
最大値が多くなると、人間には、波形とは聴こえなくなる

最初は素直に足して、その範囲が例えば、
30〜400になったとすると、
それを0〜255に収まるように変換する

30〜400から各々、30を引いて、0〜370にして、
それに、(255 / 370)を掛ける

945 :デフォルトの名無しさん:2015/10/30(金) 23:30:13.32 ID:jV4eid+M.net
>>944
ありがとう。
そうすると怨霊の下がるところが出てきそうだけど・・・
怪しい波形はなくなるな。
それでやってみます。

946 :デフォルトの名無しさん:2015/10/30(金) 23:53:47.25 ID:k5vGnOwJ.net
そりゃ、イコライジングを考えれば、
変換のやり方は無限にある

例えば0〜370を、0〜255にするのに、
0〜99 → 0〜99
100〜199 → 100〜149
200〜299 → 150〜199
300〜370 → 200〜255

これで、中音量の範囲が狭くなる
100〜300 → 100〜200 に変換される

947 :デフォルトの名無しさん:2015/10/31(土) 01:25:46.44 ID:1AeangT8.net
リアルタイムじゃなくてファイルなら足した最大値が255とかになるように調整すればいいだけ

948 :デフォルトの名無しさん:2015/10/31(土) 08:49:02.59 ID:9AQCVfGL.net
>>943
各ビットでやる ってのが意味分からん。 
オーバーフローして切り詰めたら音割れの状態、歪んだ音になる。

949 :デフォルトの名無しさん:2015/10/31(土) 11:22:14.92 ID:q0Cy/Du3.net
PCで音楽を聴いたり、動画を見ていると、たまに「音割れ」しているのも
あるよな。

950 :デフォルトの名無しさん:2015/10/31(土) 12:07:12.20 ID:eH4IcMDe.net
>>943
増幅器でも同じ問題は起きるよ

951 :デフォルトの名無しさん:2015/10/31(土) 12:08:48.72 ID:eH4IcMDe.net
>>947
それやるとピアニッシモの部分の音が消えてしまうからだめ

952 :デフォルトの名無しさん:2015/10/31(土) 13:32:22.97 ID:IVNTd+mA.net
floatかdoubleで計算して
後から正規化すればよいだろう
>>909-910も参考に

953 :デフォルトの名無しさん:2015/10/31(土) 15:06:27.45 ID:1AeangT8.net
>>951
じゃあどうすればいいんだよ?
小さい音が消えるか、大きい音が歪むかのどちらかじゃないの?
それとも変なAGCでもやれと?

954 :デフォルトの名無しさん:2015/10/31(土) 15:27:05.52 ID:HAtMuR9z.net
コンプレッサーを作ればいいじゃん。
gainとreleaseを変えられるようにしとけ。

955 :デフォルトの名無しさん:2015/10/31(土) 15:29:13.90 ID:eH4IcMDe.net
>>953
AGC知ってるならAGCやれよω

956 :デフォルトの名無しさん:2015/10/31(土) 16:49:57.27 ID:1AeangT8.net
>>955
AGCみたいなウザすぎるの使うくらいなら小さな音消えた方がマシ

957 :デフォルトの名無しさん:2015/10/31(土) 17:18:58.34 ID:HAtMuR9z.net
どういう結果を得たいかによるがな。
単純に全体を下げるのか、指定したレンジに圧縮するのか、ピークを超えた付近のみカーブを付けて下げるのか。
リアルタイムでやっても処理は追いつくぞ。

958 :デフォルトの名無しさん:2015/10/31(土) 17:32:41.07 ID:jgYZGk3p.net
窓関数ですねわかります

959 :デフォルトの名無しさん:2015/11/01(日) 04:35:27.28 ID:fO9ox0F9.net
波形を描画するときは、見た目を何らかの形で圧縮すると思いますが、どういった手法で圧縮するのが良いですか?
44100HzのWAVEを横軸1ピクセル1データで描画しようとすると、横の長さが1秒だけでも44100ピクセルになってしまいます
それを長さ100ピクセルで描画しようとしたとき、1ピクセルに441データずつ描画すると重なるため当然最大数値しか見えません
かといって441データおきに取得して描画すると欠落するデータが多すぎる気がします
一般的な波形を描画するソフトはその辺りどうやっているのでしょうか

960 :デフォルトの名無しさん:2015/11/01(日) 10:07:01.23 ID:KbBmWBMW.net
ベクトル形式で保存すればいいだろ

961 :デフォルトの名無しさん:2015/11/01(日) 10:55:21.63 ID:kFpSN8VR.net
>>959
>1ピクセルに441データずつ描画すると重なるため当然最大数値しか見えません
その場合は「最大値しか見えない」んじゃなくて1つのX位置に縦線が表示されるだろ
そうするか、最大値のみを表示するかしか方法ないんじゃねーのこればっかりは

962 :デフォルトの名無しさん:2015/11/01(日) 12:48:35.67 ID:YXd86LR5.net
>>959
複数のソフトを使ってみれば分かる事だが、最大値の輪郭で塗りつぶし。
ちなみに拡大表示は、TWEの方式が見やすい。

963 :デフォルトの名無しさん:2015/11/01(日) 16:40:45.57 ID:c1VvKpwM.net
単に音を扱う場合はピークだとは思うけど
波形に分布で階調を付ける方法(DPO)
圧縮するんでなく採取間隔をピクセル分に間引く方法(DSO)
ピクセル幅分の平均を取る方法(画像伸縮)
辺りが思いつく
DPO方式は見た目綺麗なのでお勧め

964 :デフォルトの名無しさん:2015/11/02(月) 12:27:45.37 ID:VpWN4MYL.net
サンプリングデータの最大値 <= 真の波形の最大値

965 :デフォルトの名無しさん:2015/11/02(月) 15:14:14.27 ID:u1DSG0Dt.net
逆フーリエして得た曲線を描画

966 :デフォルトの名無しさん:2015/11/02(月) 18:39:07.12 ID:dNpWsmPC.net
ありがとうございます
一番簡単なのは最大値みたいですね
今回は最大値で実装しますが、他の方式も一通り調べて触れておきます
ありがとうございまました

967 :デフォルトの名無しさん:2015/11/09(月) 21:59:14.51 ID:xsh7xTs1.net
Chrono Cross - Radical Dreamers / クロノ・クロス 盗めない宝石
http://aurorawave.atspace.tv/?sop:v/HIri1484iQ0&RDiEGniXc7Xtc http://i1.ytimg.com/vi/HIri1484iQ0/mqdefault.jpg #AuroraWaveTV

968 :デフォルトの名無しさん:2015/11/09(月) 23:47:47.23 ID:C/7qdMz/.net
2チャンネルあるステレオデータを1チャンネルのモノラルに統合したいのですが
どっかのサイトで片方だけ残してもう片方は捨てるみたいな方法を見ました
これって一般的な方法なんですか?
足して平均したくなるのですが

969 :デフォルトの名無しさん:2015/11/10(火) 00:41:57.11 ID:CxvDmHLR.net
よくあるのは、左から右を引くと、ボーカルなど、
左右の音量が同じもの(パンを中央にしているもの)
が消えるので、カラオケ用になる

例えば、ボーカルの音量が、左50・右50なら、
50-50=0 となり、ボーカルが消える
(ただし、片方だけにエコーがかかっていれば、
エコーは残る)
まあ、パンが中央寄りの、バスドラ・ベースも消えるけどw

Mixingするように、個々の楽器のパン・エコー想像するといい。
まあ、audacity をいじくってみる

970 :デフォルトの名無しさん:2015/11/10(火) 01:08:55.25 ID:zkRuj+Kg.net
>>968
一般的じゃないな
足して平均(LRを1/2して足すとか)がごく普通のやり方だよ
>>969
統合するのに引き算するなんて「よくある」じゃねーよw

971 :デフォルトの名無しさん:2015/11/10(火) 11:55:15.43 ID:YT7kbsA+.net
引き算して消えるのは位相がそろってるときだけ

972 :デフォルトの名無しさん:2015/11/10(火) 23:00:55.63 ID:VkEP2MCC.net
何か勘違いしたんだろう。

973 :969:2015/11/11(水) 00:18:52.74 ID:K9lyABtQ.net
なるほど
ありがとうございます

974 :デフォルトの名無しさん:2015/11/11(水) 09:14:56.61 ID:lk3rAxfM.net
次スレはよ

975 :デフォルトの名無しさん:2015/11/11(水) 20:36:51.68 ID:RY0eiki2.net
サウンドっていやまあそうなんだけどMIDIとかも扱ったりしてるしあんましっくりこないと思うスレタイ
音楽プログラミングじゃいかんの?音関係でもいいよ?

976 :デフォルトの名無しさん:2015/11/11(水) 20:40:49.70 ID:4OT5UzMf.net
サウンド&MIDIプログラミングでいいよ

977 :デフォルトの名無しさん:2015/11/11(水) 23:12:29.50 ID:AWT2g3E4.net
googleがディープラーニングシステム開放したよね
ここはひとつこのスレから自動ヒットソングメーカー、音色コード楽器楽曲DBぞ

http://tensorflow.org/

978 :デフォルトの名無しさん:2015/11/11(水) 23:40:23.13 ID:WDtG518P.net
それより
俺が思うにDeepDreamのアルゴリズムで
既存の曲から自動でチャー研MADを合成するのが良いと思う

979 :デフォルトの名無しさん:2015/11/12(木) 00:51:23.17 ID:ffXb8wC9.net
音楽は画像と違って著作権がめんどくさそう

980 :デフォルトの名無しさん:2015/11/12(木) 08:15:56.19 ID:6glYnozd.net
ディープラーニングとかいうやつには
キチガイを引き寄せる何かがあるみたいだな

981 :デフォルトの名無しさん:2015/11/12(木) 08:18:32.20 ID:6glYnozd.net
>>978はDeepDreamという言葉をそこらじゅうで連投しているキチガイな

982 :デフォルトの名無しさん:2015/11/13(金) 08:10:45.12 ID:4OOsT4lg.net
>MIDIプログラミング

これってただの打ち込みだろ
この板にはふさわしくない

SMF扱うならOK

983 :デフォルトの名無しさん:2015/11/13(金) 22:00:59.45 ID:YJHyXgNe.net
MIDIっつーかソフト音源とかそっちの方面の話がしたいなあ
VCO-VCF-VCAとADSRみたいな
まあ別に難しくないけど

984 :デフォルトの名無しさん:2015/11/13(金) 22:12:12.53 ID:YJHyXgNe.net
あとタッチパネルで快適に入力できるシーケンサー欲しいね
まあタッチパネルで快適って無理なんだけどね

985 :片山博文MZ ◆T6xkBnTXz7B0 :2015/11/13(金) 22:24:57.36 ID:0mCHO/39.net
Csound, PortAudio/PortMidi, Juce, OpenAL, DSPatch, ...
色々ありすぎて迷っちゃうよ

986 :デフォルトの名無しさん:2015/11/14(土) 01:45:53.13 ID:umA+wsSG.net
>音楽プログラミングじゃいかんの?
扱うのっていわゆるメロディ等で構成された「音楽」じゃないからさ。
楽曲になっていない音も扱うスレッドだから「音楽」は不向き。

>音関係でもいいよ?
今のスレタイの英語を日本語に変えただけじゃねーかハゲ。

987 :デフォルトの名無しさん:2015/11/14(土) 12:07:41.30 ID:kYx4kaK6.net
サウンドとオーディオの違いが判らない

988 :片山博文MZ ◆T6xkBnTXz7B0 :2015/11/14(土) 14:25:42.87 ID:WVBz5XzJ.net
色々考えてOpenALを採用した。

989 :片山博文MZ ◆T6xkBnTXz7B0 :2015/11/15(日) 17:29:30.07 ID:wup8XVMF.net
https://github.com/rpavlik/openal-svn-mirror
よし、ここから始めよう!!!

990 :デフォルトの名無しさん:2015/11/16(月) 13:54:00.78 ID:Lv7TZ3Ek.net
まぁ、帰れ。

991 :デフォルトの名無しさん:2016/06/10(金) 16:29:52.31 ID:KDSaMSwRC
sage

総レス数 991
242 KB
掲示板に戻る 全部 前100 次100 最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★