5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

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

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

1 :デフォルトの名無しさん:2006/04/21(金) 07:54:35
音のプログラミング処理について語りましょう

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


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

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

2 :デフォルトの名無しさん:2006/04/21(金) 20:45:56
可哀想に。誰も2を取ろうとしない。

3 :デフォルトの名無しさん:2006/04/21(金) 20:48:18
                                 )
                            _      ノ   出席番号3番
                  _,, ---- 、_  | | />  ⌒`'⌒ヽ パイパンの
              _,,-ァ''"       ヽ、| レ'∠_,       )  神楽坂明日菜様が
            / /⌒"''ー 、  " 「 ⌒ ヽ、/)、      ⌒ヽ    3getした!
         ___/       ヽ ヽ、  {   , 勹 `、ヽ        )
       ,ン''フ  {~   ⌒ヽ、   ヽ、`ヽ\/ ノ 、、 \\      ⌒Y⌒Y⌒
     、/ /   { ヽヽ、 ヽ、 \ ヽ、 ヽ、`ヽ i i トー 、ニニニ`、_
    / \/ / i ハ ヽ、 ヽ、、ヽ、 >、>、 ヽ`ヽ、  l\ \\`ー 、二二_ー‐‐‐‐‐‐‐‐‐
   / iニニ/ i  | | ヽ ヽ`ヽミ >へ、,,_ヽ、ヽYヽヽ }  ヽ ヽ \::..  \ ̄ ̄ ̄ ̄ ̄
  ./    l イ|  ト|   \ヽ / >イ)⌒ト`l |ヽ))) |     ヽ \ \::..  \    /
  /     |.l ハ  | |、_,,,,,,__ \    ヽ、, 〉 l レノ/      \ ヽ \::::....  ヽ、/::::::::
 /      |l ~ヽ .トイ、 i个、     ///  レ 「ヽl    _,,-‐ヽ、 `ー、 ヽ、::::::..... `"''
 {      !.   トヾ、ヽヽヽ)i   , -、      》⌒>' /   ヽ、、 二二ニニニニニニニ
          | ト、!ト`ヽ  ` < ィ  )  / 〃/  / __________\_/::::::::\:::::::::::::::::::
           | ト\ヽ \,_  `ヽン ,イ// /  i |     ,,,,---ヽ :::::::;`> 、;;;;;;;;
             | ハヽ `ヽ\`二ニ='ツク ,/./   ハ l  (二"      `ヽ<
           |l ヽ_` (三三三ニア/  |   i  |     ̄"""'''''''''----`----、
         /ニニニニニニ===ー''ァ彡ソ、   ノ    i       ___,,,,-----
                 _,-ァ/'''/,イ ヽ<ー'''''""コ ヽ
              ///,, -'7 {    |彡へ .}  ヽ、::::::::::::....

4 :デフォルトの名無しさん:2006/04/21(金) 20:49:57
Haskellでは配列が使えませんけれど、音声を扱うときどうすればいいんですか?

5 :デフォルトの名無しさん:2006/04/22(土) 20:44:54
>>4
配列は使えるよ。

6 :744:2006/04/24(月) 17:09:42
早速ですがタイムストレッチ(音程を変えずに再生速度を変更)教えてください


7 :デフォルトの名無しさん:2006/04/24(月) 17:36:48
サウンドプログラミングの推薦図書を列挙してください

8 :デフォルトの名無しさん:2006/04/24(月) 17:52:49
Oh!FM TOWNS

9 :デフォルトの名無しさん:2006/04/24(月) 19:08:07
>>6
・音程を変えずに、再生速度を変更する場合と
・変更した再生速度に合わせた音程に変換する のどちらかを行う

その方法には2つある
・周波数で変換する D-FFTを使い 周波数軸で変換する事 (苦労の悪いに音質はそう良くない)
・時間軸で変換する。 過不足が起きるので、それを合わせる。

時間軸で変換する方が簡単だろう。


10 :デフォルトの名無しさん:2006/04/24(月) 19:14:35
・音程を変えずに、再生速度を変更
・時間軸で処理する方法

1、データを短時間のブロックに分割する
2、そのブロックに窓関数をかける(台形窓で十分)
   分割単位は窓をかけてる区間だけオーバーラップする事になる
3、再生速度を上げる場合、ブロックを間引く
4、再生速度を下げる場合、ブロックを2度利用する


11 :デフォルトの名無しさん:2006/04/24(月) 19:29:59
再生速度を上げたい場合
 A B C D E
  _ ↓ ↓ ↓
/A\_ ↓ ↓
   /B\_ ↓
       /C\_
          /D\

これから、B、D を間引いて
 _
/A\_
    /C\_
        /E\

A,B,C,D,Eの時間は等間隔である必要はない。
間引いた時間の比率をコントロールすればいい。

違和感を減らすには、
 1、無音期間を率先して間引く
 2、繰り返し期間を検出したら、その周期の整数倍に合わせて間引く

と言う処理を入れる 

12 :デフォルトの名無しさん:2006/04/24(月) 19:36:29
再生速度を下げたい(ゆっくり)の時も同じ
  _ 
/ A\__
   / B \__ 
       / C \
AとBがオーバラップする時間を作って切り出してやる=部分的に2度利用させる。

これも、
1、無音期間を検出したら積極的に無音を延ばす
2、繰り返しを検出したら、その周期の整数倍に合わせてオーバーラップさせる

という方法で違和感を減らせる


13 :デフォルトの名無しさん:2006/04/24(月) 19:37:50
周波数領域で処理しないピッチ変換なんて音ワルス(´・ω・`)

14 :デフォルトの名無しさん:2006/04/24(月) 20:01:13
ワルスの不思議な旅。

15 :デフォルトの名無しさん:2006/04/25(火) 19:56:51
続いてリアルタイムのピッチシフト(再生速度を変えずに音程を変更)教えてください

16 :デフォルトの名無しさん:2006/04/26(水) 01:05:31
その方法には2つある
・周波数で変換する D-FFTを使い 周波数軸で変換する事 (苦労の悪いに音質はそう良くない)>>15


17 :デフォルトの名無しさん:2006/04/26(水) 07:12:04
周波数軸で変換する方法は
・全体を一度に収まる大きなサイズのFFTで行う方法
・ブロック単位に短時間FFTで行う方法
に別けられる。 
 ピッチシフトは周波数軸での単なるシフトではなく、指数的移動なので、結構計算コストは大きい。

なお、リアルタイムという事になると短時間FFTという事になるが、
オーバーラップさせて窓関数をかけてブロックをつないでゆくと、つなぎ目で位相が合わなくなるので
違和感が発生する。 位相を合わせてつなぐと、今度はノイズが変質する。



時間軸でノイズ+サイン波を加算した場合も位相があえばサイン波は2倍になる=位相を合わせれば
按分加算出来るが、ノイズは√2倍にしかならないからノイズ音量が波打つ現象が起きるので
なかなか難しい問題だ。

18 :デフォルトの名無しさん:2006/04/26(水) 07:24:00
時間軸で処理する場合、
 「再生速度を変えずに音程を変更」するのではなく
 「再生速度を変更して音程を変更」し、それによって生じるデータの過不足を 上で書いたような
 ブロック(granul)への分割と統合で補うという事になる。

再生速度を変更するには、上げるにも下げるにも強力なLPFが必要になる。
安いキーコンではLPFを補間で代用してる為に音質が悪い

19 :デフォルトの名無しさん:2006/04/26(水) 13:20:39
リアルタイム論争の悪寒。

質問者は「リアルタイム(レイテンシ50msec以内)」みたいな書き方キボン。

20 :デフォルトの名無しさん:2006/04/26(水) 13:29:57
心配しなくても、ピッチシフトはリアルタイムに出来ない事は簡単に理解できるから、それに噛み付いたらバカだと判るから

21 :デフォルトの名無しさん:2006/04/26(水) 13:31:09
リアルタイムじゃなくてゼロレイテンシの事ね

22 :デフォルトの名無しさん:2006/04/26(水) 16:55:29
FPSとかで銃の連射音を再現するときって、単発の発射音を発砲するたびに重ね合わせていく
という方法が一般的なのかな?でもそれって発射速度が速いマシンガンとかだとものすごい
勢いでサウンドカードの同時再生音(64音ないしは128音)を消費していくような気がするんだけど・・・

23 :デフォルトの名無しさん:2006/04/26(水) 17:00:00 ?
そんな用途でFPSを使うほうがおかしい。

24 :デフォルトの名無しさん:2006/04/26(水) 17:01:38
>>22
同時発音数を制限しろよ。

それから、マシンガンは、トリガー部、ループ部、リリース部の3つのサンプルを使え!
そしたら発音数は1つ。

25 :22:2006/04/26(水) 17:08:43
>>24
バルカン砲とかだと
トリガー部、ループ部、リリース部
に分けてつなげるのが得策かもしれないけど、それよりレートが低い一般的なマシンガンだと
かえって各部の接続部分で粗が目立つような気もするんだけど・・・

> 同時発音数を制限しろよ。

これはどういうこと?

26 :デフォルトの名無しさん:2006/04/26(水) 18:01:40
>>25
単発が長くてもたくさんの発射音のうち気になるのは聞こえ始めと最後の消えゆく部分だけってこと。
どうせ秒3発位で一発最大8秒くらいの音でも連発でならしたら消音部分でいきなり消えてもあんまり気にならない。


27 :22:2006/04/26(水) 18:11:34
>>26
なるほどね。
それだったら次の発砲が生じたらその一つ前の発砲音は消してしまうのも手じゃない?
それならどんなに発射速度の速いマシンガンでも常に同時発音数は1のままでしょ。

28 :デフォルトの名無しさん:2006/04/26(水) 18:20:53
>>27
そういう風に調整することもある、要するにリソースと効果音の持っている性質とのかねあい。
PCエンジンとか古いゲーム機だと音楽用に6音+効果音用に2音で当てて垂直同期毎の発音リクエストを優先度別に取捨したあと
現在鳴っている音より優先度が高いか等しい時に新規の音を鳴らしてた。



29 :デフォルトの名無しさん:2006/04/26(水) 18:26:58
最近の次世代ゲーム機だったらあまりそういう心配しなくてもいいんでね?

30 :デフォルトの名無しさん:2006/04/26(水) 20:57:10
ドラム音源とかでも普通に考えたら同時発音数制限してるだろ
最近質問するまでもないレベルの低いのおおいな

31 :デフォルトの名無しさん:2006/04/26(水) 21:38:44
>>30
22は厳しい制限数の中でどうやりくりしていけばいいのか聞いてるんだろ。

32 :デフォルトの名無しさん:2006/04/28(金) 02:08:03
>>27
> それならどんなに発射速度の速いマシンガンでも常に同時発音数は1のままでしょ。

鳴っていた音を消音して次の音を鳴らすとして、
消音したい音をいきなり消すとノイズが発生する(可能性がある)よね。
それに対処するにはとても短い時間であってもフェードアウトさせる必要が
あるんだけど、そのフェードアウト中にはもう次の音が鳴っているので、
その瞬間だけは同時発音数は 2 になるよ。


33 :デフォルトの名無しさん:2006/05/03(水) 02:20:32
レーシングゲームとかのエンジン音ってどうやって再現しているんだろう?
どのゲームもだいたいアイドリングの時からエンジンの回転数が上がって行くにつれ
なめらかに音が高くなっていくようなんだけどどうやって実現しているのか不思議。

エンジンがある回転数の時の音を録音してその音源ファイルの再生速度を調整する
ことでアイドリングの時や高回転時のエンジン音も再現できるのかな?

34 :デフォルトの名無しさん:2006/05/03(水) 19:17:29
ピッチで上下しつつ、
低回転時から高回転時の音にクロスフェードしてるんじゃないの?
エンジン音なんか割とノイズ的でファジーな音だから複数混ぜてもそんなに気にならないと思う

しかしここ全然プログラムの話題出ないな・・・

35 :デフォルトの名無しさん:2006/05/03(水) 20:07:19
それじゃプログラムの話題を一つ。
Visual C#で特定のボタンを押したら複数のwaveファイルを同時に、ないしは多少の時間差をつけて
ならすことって可能だと思う?可能だとしたら何個くらいのwaveファイルまで同時にならせることができるだろうか?

またサウンドカード毎にプログラムをチューニングする必要ってあると思う?

36 :デフォルトの名無しさん:2006/05/04(木) 06:28:28
聞く前に試してみるといいと思うよ。
サウンドカード非依存にしたいなら、ミキサを自分で書けばいいし。


37 :デフォルトの名無しさん:2006/05/04(木) 08:30:37
ちょっと教えてほしいのですが、
フーリエでLPFを書くのはどうすればいいのでしょう。
たとえば、freq=44100Hz、M=1024でDFTして周波数領域に変換したとして、
cutoff_freq=11025HzのLPFを作る場合、単純に[0〜M / 4]の複素数配列だけ残して、
あとは0+0iで埋めればいいの?
わかる人教えてください。


38 :37:2006/05/04(木) 08:34:25
一応オーバーラップの手法とかは無視して、全量のDFTとしての答えで大丈夫です。
なんだかこのやりかただとレゾナンスが効いてる笑。

39 :デフォルトの名無しさん:2006/05/04(木) 11:55:43
>>37 のようなものでもそれらしい結果になるが、ブロック同士が繋がらない
 結果、11025/1024の整数倍の倍音が発生し 特有の変調音が発生する

フーリエ変換でLPFを作るなら

1、全部のデータ+余白が入るサイズでFFTして、 得られた結果=周波数領域に窓関数をかけて 逆FFTする
  窓関数は余白の大きさにより鋭敏にする

2、短時間FFTでリアルタイム的に処理する場合は、
  FIR−LPFを設計士、それをFFTしておき
  データにはFIR係数サイズ分の余白(ゼロで埋めておく)をつくり
  周波数軸で、掛け算して逆FFT するというのを繰り返す


40 :デフォルトの名無しさん:2006/05/04(木) 12:21:06
>>39
おお…、お詳しい方が。とりあえず試してみます。
どうもありがとうございます。

41 :デフォルトの名無しさん:2006/05/04(木) 13:02:24
短時間FFTの場合は、
 ようするに、FIR-LPFをFFTで掛け算のコストを下げてやろうという事

FIR-LPFをまともに実装すると 1サンプルあたりFIRのタップ数だけ積和が必要

FFTを使えば計算量が減らせられる。
ただし、FFTは元信号が繰り返す事を前提にしてるから
FIR−タップ数だけゼロの領域を入れてやって、その影響が無い領域を作ってやる必要がある


で、巧くタップ数とサイズと、ステレオ信号をどう巧く捌くか
設計しないと計算量が増えかねないから注意ね。

42 :35:2006/05/04(木) 15:03:25
>>36
> 聞く前に試してみるといいと思うよ。
> サウンドカード非依存にしたいなら、ミキサを自分で書けばいいし。

今まで音を再生するプログラミングって作ったことが無かったんだけど
C#で多数のwaveファイルを、かなり高精度なタイムスケジュール
(二つのwaveファイルを100msの時間差をつけて再生する等)で
管理するにはどういう手段(関数)を使ったらいいと思う?

ちょっとググッてみたら
PlaySound(もしくはsndPlaySound)関数
というのがあるらしいけどこれで複数のwaveファイルを同時再生させること
って可能かな?

43 :デフォルトの名無しさん:2006/05/04(木) 15:58:07
最近のwaveデバイスは複数同時に開けられるしDirectXとかも内部で加算処理はしてくれるけど
自前で加算するのが楽だと思うけどなあ・・・・

まあどうしてもC#の場合は、どんなライブラリがあるかなんて探し物的な
所で悩んでしまうんだろうけど・・・・あんまり書くと荒れるから止めとくわ

44 :35:2006/05/04(木) 16:01:46
DirectSound使わずに、自前で加算していった方が楽ということか( ゚д゚)・・・

45 :デフォルトの名無しさん:2006/05/04(木) 16:16:20
自前で加算すれば、タイミングもオーバフローの処理(AGCを入れたり)も好きなようにコントロール出来るからさ
いちいちライブラリの都合に合わせて悩むより、そこらへん楽だよ

46 :35:2006/05/04(木) 17:10:24
>>45
waveデータを自分で加算して再生する方法を探してみたんだけど、
 
 Wave音源で音を鳴らす
 http://www.sm.rim.or.jp/~shishido/wavtest.html

 Wave音源の処理
  Wave音源で音を鳴らす手順は、以下のようになります。

 バッファを確保し、波形データを作成
 音声形式を指定するWAVEFORMATEX構造体を作成
 waveOutOpen()でWaveデバイスをオープン
 データバッファの情報をWAVEHDR構造体で設定
 waveOutPrepareHeader()で再生準備
 waveOutWrite()でバッファの波形データを再生
 再生が終了したらwaveOutClose()でデバイスを閉じる
 waveOutUnprepareHeader()した後バッファを解放

あらかじめならす音をwaveデータとして作っておかないと対応できないのかな?
音の再生を開始した後に急遽新しい音を追加で再生させたり、いらなくなった音
の再生を途中で停止させる場合には向いていないかな?

47 :デフォルトの名無しさん:2006/05/04(木) 18:38:46
低レベルオーディオを使っても
ある程度のブロック転送となるので、
急遽音を止めたいというような場合にはその用意してるブロックサイズ*ブロック数 分だけ遅延する事になります

それはしょうがないと我慢出来ないなら
ハード依存の高い方法になるんじゃないの?


48 :デフォルトの名無しさん:2006/05/04(木) 22:21:15
>>46
致命的なミスしている。
もっとマシなとこを参考にした方がいいよ。

49 :35:2006/05/05(金) 00:48:50
>>47
う〜ん、ダイナミックに音の再生を制御したいのであれば
DirectSoundを使うしかないかな(´・ω・`)

>>48
ここはどう?C++だけど参考になるかな?
http://dencha.ojaru.jp/programs/pg_wave_01.html

50 :デフォルトの名無しさん:2006/05/05(金) 06:05:45
>>49
Javaでもサウンド扱える位だからC#なら速度がそれほど問題にならんと思うと考えてがんばってみそ。


51 :デフォルトの名無しさん:2006/05/05(金) 10:41:33
そんなミリ秒のタイミング考えているシステムでゴミ集めが始まったら台無しというのは・・・・

52 :デフォルトの名無しさん:2006/05/05(金) 13:04:34
>>51
それをいったらWindowsは使うなということになる(w

53 :デフォルトの名無しさん:2006/05/05(金) 13:09:34
なになに? Windows批判? あは

54 :デフォルトの名無しさん:2006/05/05(金) 13:21:20
そうか、DOSに回帰汁!ってとことか!

55 :35:2006/05/05(金) 17:45:02
C#でのwaveファイルの再生方法、ようやく見つけてきた(;^ω^)・・・

http://msdn2.microsoft.com/ja-jp/library/ms173187.aspx

ただ問題はこの方法で再生中のwaveファイルを任意の時間に停止させたり
複数(あるいは同一)のwaveファイルを時間差をつけて多重再生できるかなんだよな・・・

先は長い(´・ω・`)・・・

56 :デフォルトの名無しさん:2006/05/05(金) 18:20:29
それは無理だろ
DirectSound使うか自前で低レベルオーディオを使うかだな

57 :デフォルトの名無しさん:2006/05/05(金) 18:21:22
いや、無理じゃないか。 PlaySoundを実行するだけのタスクを複数作ってコッソリ起動してやればいけるな

58 :35:2006/05/05(金) 18:27:02
やはりDirectSoundは避けては通れぬか。
こりゃぁ大変だ、GW中に勉強しきれるかな(´・ω・`)・・・

59 :デフォルトの名無しさん:2006/05/07(日) 01:23:40
FFT解析後に周波枢軸に置き換えられたデータをさらにFFTしたらどうなるかな
意味は分からんがなんかおもしろそう

60 :35:2006/05/07(日) 01:29:01
ケプトスラスムとかいう手法だっけ?
意味はようわからんけど。

61 :デフォルトの名無しさん:2006/05/07(日) 08:19:54
再度FFTすれば逆FFT結果と同じだよ
ケプストラムは対数化してるから、ゼロ点が思いっきり強調されるってだけ

62 :デフォルトの名無しさん:2006/05/07(日) 08:25:19
DirectSound でも、液晶テレビでテレビゲームするようなもんで

63 :デフォルトの名無しさん:2006/05/07(日) 12:04:25
>>61
FFT→FFT→FFT = IFFT ?

64 :デフォルトの名無しさん:2006/05/07(日) 12:11:47
>>63
FFT→FFT = 逆FFT*係数調整
FFT→FFT→FFT = FFT *係数調整


65 :デフォルトの名無しさん:2006/05/10(水) 08:54:50
シームレスに複数の曲を再生させるには、どうしたらいいでしょうか?

66 :デフォルトの名無しさん:2006/05/10(水) 10:10:15
>>65
うまいDJの演奏を参考にする

67 :デフォルトの名無しさん:2006/05/10(水) 19:22:02
波形データをバッファリングするようにして、ケツとアタマをつなげればよいだけの話

68 :デフォルトの名無しさん:2006/05/19(金) 12:12:00
クロスフェードさせる

69 :デフォルトの名無しさん:2006/05/25(木) 07:11:07
waveからデータを取り出してスペクトルを出すような
処理をかけようと思っているのですが、そういう場合どんな
言語とライブラリの組合せがおすすめ、または使用されているでしょうか?
 C + spLibs  でやろうとしたのですがコンパイルがうまくいかなかったため
Javaに変えようと思っているのですが。。

70 :デフォルトの名無しさん:2006/05/25(木) 07:25:35
C++でええやん

71 :デフォルトの名無しさん:2006/05/25(木) 07:37:24
好きな道具でやればいいじゃない。
データを取るのも
スペクトルを出すのも、
ライブラリが必要なほど複雑な事じゃない。
というかライブラリの使い方を読む時間で作れてしまう

自分はこういうのはDelphiでやるけどね

72 :デフォルトの名無しさん:2006/05/25(木) 14:49:40
できればC++がいいかなと思っているのですが
その場合waveを読むにはどんなライブラリを使うのがいいのでしょうか?

73 :デフォルトの名無しさん:2006/05/25(木) 14:52:08
C++でもfopen して freadが一番いいんじゃない? 

74 :デフォルトの名無しさん:2006/05/25(木) 15:00:05
istream使えよ

75 :デフォルトの名無しさん:2006/05/25(木) 16:00:18
コンパイルできなかった原因ちゃんと調べた?

76 :デフォルトの名無しさん:2006/05/25(木) 16:17:20
>>71
そういえば、Delphiでよさげなライブラリてある?

77 :デフォルトの名無しさん:2006/05/25(木) 16:23:06
C + libsndfile

78 :デフォルトの名無しさん:2006/06/07(水) 05:21:50
>77
LGPLってことは作者に報告義務無しで商用OKってこと?
サイト翻訳したんだけどチョトわかりません。

BASSとかFMODはどういうものでしょう。安定してますか?

79 :デフォルトの名無しさん:2006/06/07(水) 05:50:13
LGPLなら報告義務は無い。

ただし、LGPLなライブラリから静的リンクするコードは全てLGPLかGPLにして公開しないといけない。
LGPLなライブラリでDLLを作ってそのDLLはLGPLにしてソースを公開した上で、
DLLとリンクする本体はソースを公開しなくてもいい。
ただしその場合でもLGPLなライブラリについてちゃんとLGPLだということの説明と、
確かLGPLなライブラリのソースの入手できる場所を説明しとかなくちゃいけない。

LGPLはいちいち理解するのがめんどいよな。

80 :デフォルトの名無しさん:2006/06/20(火) 10:41:28
ゲームで使う効果音の.wavファイルがズラーっ載ってるサイトを探してるんだけど
キーワード「ゲーム .wav ライブラリ」で検索しても売りもんのCDやらなんやらしか引っ掛からん。
どこか良いところ教えてくれんじゃろうか。英語で書かれててもいいから。頼む。

81 :デフォルトの名無しさん:2006/06/20(火) 10:55:10
スレ違いどころかむしろ板違い

82 :デフォルトの名無しさん:2006/06/20(火) 12:10:07
CK_GAME_FACTORY
TAM_MusicFactory
Vector
■WEB WAVE LIB■〜 音と声のOnLine素材集
ザ・マッチメイカァズ
Area MIDI素材集

83 :80:2006/06/20(火) 13:47:42
>>82
おお、ありがd!

あ、それと…







>>81
こっちはサウンドプログラミングの一環としてやっとんじゃ、野垂れ氏ね、ヴォケ!

84 :デフォルトの名無しさん:2006/06/20(火) 13:51:16
>>83
このスレの住民は結構高尚なことが好きなんだよ。
試しにウェーブレット変換とか離散コサイン変換とか言ってみ。
面白いように話に乗ってきてくれるから(´・ω・`)

85 :デフォルトの名無しさん:2006/06/20(火) 14:09:05
>>83
そんなに顔を真っ赤にするなってwww

あ、それと…




>>83 は、やねうらお説

86 :デフォルトの名無しさん:2006/06/20(火) 14:39:03
うらおは今度からゲ製でやれや、な?

87 :デフォルトの名無しさん:2006/06/20(火) 15:38:55
ゲ製作技術板かDTM板向きの質問だったな

88 :デフォルトの名無しさん:2006/06/20(火) 15:53:36
>83
お前にふさわしいスレは↓だから、サウンドプログラミングの意味が解るまで二度と来るな。
【ゲ製作技術】ゲームを作るための素材を集めよう! Part2
http://pc8.2ch.net/test/read.cgi/gamedev/1113207836/

89 :デフォルトの名無しさん:2006/06/20(火) 19:58:04
うわ。
今までちょっと尊敬してたのに、
>>83はねえな。軽蔑した。

90 :デフォルトの名無しさん:2006/06/20(火) 22:48:21
>83
「サウンドプログラミングの一環」でやってる奴が素材すらマトモに見つけられないてwww
しかもスレ違いどころか板違いの質問、挙句逆切れ・・・

お前、センス無いからプログラマやめろ。

91 :デフォルトの名無しさん:2006/06/21(水) 01:14:57
音ネタがパクりならソースもコピペだろ

92 :デフォルトの名無しさん:2006/06/21(水) 19:24:31
もうそのくらいにしといてやれよw

93 :デフォルトの名無しさん:2006/07/04(火) 00:58:30
ホルマント周波数を求めて母音の判定を行おうと思っているのですが、
まずホルマント周波数をどこから求めていいのかわかりません。

/a/の波形をFFTした結果のスペクトルに対してピークを求めれば
それがホルマント周波数になるのでしょうか?
それともスペクトル包絡を求めた結果の曲線のピークが
ホルマント周波数になるのでしょうか?

やりたいことのために情報を集めていると短時間スペクトル解析というのも
出てきたり、振幅スペクトルを使えばいいのかパワースペクトルを使えばいいのか
周波数スペクトルを使えばいいのか混乱しています。

94 :デフォルトの名無しさん:2006/07/04(火) 07:25:10
他にケプストラムとか、PARCORや線形予測係数から求める方法とか、
色んな方法があるわけで、演算能力が足りる範囲で好きな方法を使えばいいとおもうよ

95 :デフォルトの名無しさん:2006/07/06(木) 07:06:00
まったくの初心者です。
サウンドプログラミングするには音響学のクラスも取る必要がありますか?
物理の音に関する部分だけで十分ですか?
数学は微分積分のI,II(多変数のは取ってないです)と線形代数と統計学は取ったんですけど
他に数学で必要なクラスはありますか?
他に何か取っておいた方がいいクラスはありますか?

質問多くてすみません。

96 :デフォルトの名無しさん:2006/07/06(木) 10:59:10

フーリエ変換を習っ(た|てる)?


97 :デフォルトの名無しさん:2006/07/06(木) 23:16:45
>>95
まずは体力だな。その次は腕力と暴力。学力は一番最後でヨシ。

98 :95:2006/07/07(金) 05:02:44
>>96
>フーリエ変換を習っ(た|てる)?

微分積分のIIでやりましたよ。軽くですけど。
あれをソラで(教科書見ずに)スラスラっと解けるようでないとダメですか?

>>97
工工エエエエエエェェェェェェ(゚Д゚) ェェェェェェエエエエエエ工工

でも、体力には自信あり。
ベンチプレスで100kg挙げられます。\(^o^)/

99 :デフォルトの名無しさん:2006/07/07(金) 05:47:05
>>98
スラスラと解く、というよりは、フーリエ変換が使えると
何がうれしいのかってことがわかる方が重要と思われ

100 :デフォルトの名無しさん:2006/07/07(金) 06:17:48
“メイドさん”が「Firefox」グッズを配るイベントが秋葉原で今週土日に開催
ttp://www.forest.impress.co.jp/article/2006/07/06/spreadfirefox.html

もじら組メーリングリストより
-----
spreadfirefox in AKIHABARA
1、7/8(土)、7/9(日)10:00-17:00 東京・秋葉原/秋葉原路上において、ステッ
カーとポストカード、特製CD-ROMの入った袋を配布します。配布するのは、イベント・
コンパニオンさんとメイドさん、もじら組。メイドさんにネコ耳としっぽをつけても
らい配布をしますので、要チェック!場所としては、1、ラジオ会館側駅前、2、ヨド
バシ向かい道路、3、中央通り(大きな通り)の3箇所です。人の多そうなところへ、
移動しながら配布していきます。コンパニオンさんもメイドさんも写真撮影可です。
-----


101 :95:2006/07/07(金) 06:57:23
>>99
フーリエ変換の概念は一応理解してると思います。
スラスラとは解けないですけど。

音響学や物理などは取らなくてもいいですか?
というより、このスレの住人で取った人はいますか?
何か詳しい方が多いようなのでいるような気がしてなりません。

102 :デフォルトの名無しさん:2006/07/07(金) 07:20:57
うるせえな

103 :デフォルトの名無しさん:2006/07/07(金) 07:25:35
自分で本買うなり調べるなりして勉強しようっつー考えは浮かばないのかね?
受身ならどのみち身につかんと思うよ。

104 :デフォルトの名無しさん:2006/07/07(金) 07:39:09
フーリエ変換とラプラス変換の相似性と Z変換の扱いが普通に出来れば問題ないよ
授業を取るのと勉強するのとは別の問題だろう

105 :95:2006/07/07(金) 07:43:17
>>104
なるほど。
ではそれらに集中して勉強しますね。

106 :デフォルトの名無しさん:2006/07/07(金) 07:49:18
教養としては音の波と光の波がどう似ていてどう違うのかとか語れるくらいには勉強してもいいと思うよ

107 :デフォルトの名無しさん:2006/07/07(金) 07:54:17
フーリエ変換やZ変換だけだと
音は3次元の空間を伝わってくるのだという事を忘れがちだよね

108 :デフォルトの名無しさん:2006/07/07(金) 15:00:05

スリットを通した干渉だけ習っても3次元空間の音の干渉って説明できますか?


109 :デフォルトの名無しさん:2006/07/07(金) 15:23:49
光は干渉すると完全に消えるけど音はそうじゃないよ。
音だと運動量か圧力のどっちかが小さくなるだけ。

110 :デフォルトの名無しさん:2006/07/07(金) 15:46:57
んなぁ〜こったない

111 :デフォルトの名無しさん:2006/07/07(金) 16:47:06
簡単に違いを言うと

電磁波は進行方向を軸にした回転が伝わってくる(偏波は2つの回転が組み合わさったもの)
音は、進行方向の振動


112 :デフォルトの名無しさん:2006/07/07(金) 17:06:12
>>110
光のように空間上のスリットで干渉して音がホントに消える事はない。
ただし、検出器は圧力か運動量のどちらかを検出するので、片方だけを捉えれば消えたという事になる。

だからスリットではなく管として、管から外に音が出るかどうかのようにすれば 消すことは出来る


たとえば、クインケ管で実験すればいい、
左右が同じ長さの時に運動量変化は最小になるが圧力変化が最大だから外に音が出る
左右が半波長だけズレると、圧力変化が最小になる為に管から外に音は出ない。
しかし、その繋ぎ目では運動量変化は最大の点で
管の中に運動量変化を取る検出器を入れればそこでは最大音量となっているだろう


113 :デフォルトの名無しさん:2006/07/07(金) 19:31:32
光だってEとBの両方を考えれば干渉したって完全に消える地点は無いんだがな。

114 :デフォルトの名無しさん:2006/07/07(金) 20:30:36
>>113 電磁波の場合、>>111のイメージの通り、
 電場、磁場の両方を交換しながら伝わってくるわけで、
 その方向は進行方向に垂直だから、位相=回転角なわけで、位相が合えば両方消えるよ

115 :デフォルトの名無しさん:2006/07/07(金) 20:46:32
>>114
電場と磁場の両方が打ち消すためには2本のビームが平行に交わらないと
(つまり一致しないと)完全には消えないよ。2本のビームに角度差があれば
どちらかは残る。

116 :デフォルトの名無しさん:2006/07/07(金) 22:20:28
んなぁ〜こったない

117 :デフォルトの名無しさん:2006/07/07(金) 22:35:22
>>115
どっちかが残るという事は、電場だけで振動する波がありえることになるよ。
電場が振動するならその垂直方向に自動的に磁場が発生するわけで、単独振動は無理さ。


118 :デフォルトの名無しさん:2006/07/07(金) 22:49:41
線形システムにおけるベクトルの合成的にそんなことはあり得ない

119 :デフォルトの名無しさん:2006/07/07(金) 23:34:59
干渉が起きるのはそこで観測するからだけど、
観測しないなら消えるだの消えないだのの議論にそもそも意味がないわけで、
と考えると、なかなか難しい話だな

120 :デフォルトの名無しさん:2006/07/08(土) 00:36:50
ヘッドホンで再生する音の上下方向の位置制御ってどうやるのですか?


121 :デフォルトの名無しさん:2006/07/08(土) 00:51:45
つ頭部伝達関数

122 :デフォルトの名無しさん:2006/07/08(土) 02:55:15
(´-`).。oO(やっぱりしっかり物理を勉強した人達なんだ、ここの住人は…)

123 :デフォルトの名無しさん:2006/07/08(土) 03:17:31
他人の事なんてどうでもいいだろ?

124 :デフォルトの名無しさん:2006/07/08(土) 04:10:53
>>123
つ「人の振り見て我が身を直せ」

125 :デフォルトの名無しさん:2006/07/08(土) 04:30:26
>>124
流れからすると、それは的外れだ。

126 :デフォルトの名無しさん:2006/07/08(土) 04:34:50
>>125
んなぁ〜こったない

127 :デフォルトの名無しさん:2006/07/08(土) 04:39:14
空気の読めない奴は困る。

128 :デフォルトの名無しさん:2006/07/08(土) 04:40:45
>>127
んなぁ〜こった(ry

129 :デフォルトの名無しさん:2006/07/08(土) 10:16:55
>>121
バイノーラルの測定文献って3つ位あるけどホロフォニックみたいな臨場感のある再生
のデータってないんだよね。


130 :デフォルトの名無しさん:2006/07/21(金) 04:50:47
質問なのですが、C#でVSTプラグインを作ることは可能なのでしょうか。
もし出来る場合、実行時の速度以外に何か問題が発生する可能性はあるのでしょうか。

131 :デフォルトの名無しさん:2006/07/21(金) 10:02:43
>>130
可能。問題点は、SDKを自力で修正する必要があること。

132 :デフォルトの名無しさん:2006/07/21(金) 13:11:01
>131 ご返答ありがとうございます。
さらに質問で申し訳ないのですが、SDKを自分で修正するというのは、どういった箇所になるのでしょうか。
SDKのAPIクラス自体を.NETに対応させる必要があるということでしょうか?
VSTホストに対するインタフェースを変更しなければ、
ネイティブで書かれたVSTホストから.NETで作ったVSTプラグインを呼び出すことは加納なのですよね?

133 :デフォルトの名無しさん:2006/07/27(木) 01:17:43
age

134 :デフォルトの名無しさん:2006/08/05(土) 17:27:47
Directサウンドバッファに読み込んだWAVを合成して書き込もうとしてるんですけど、
うまくいきません。ずっと前にこのスレで話題になっていたときは
「ほんとうに加算するだけ」ということだったのですが・・・
8ビットステレオデータです。
単音では鳴るのですが二つを合成すると×。

135 :デフォルトの名無しさん:2006/08/05(土) 17:31:26
ソースさらせ

136 :デフォルトの名無しさん:2006/08/05(土) 17:47:11
単なる桁溢れ

137 :デフォルトの名無しさん:2006/08/05(土) 17:51:11
>>134
変な音がするなら>>136に一票
音がしないなら>>135に一票


138 :デフォルトの名無しさん:2006/08/05(土) 17:51:25
>134
8bit wavは0基点ではなく、0x80基点。
char in1, in2; // 入力
char out; // 出力
out = ( ( in1 ^ 0x80 ) + ( in2 ^ 0x80 ) ) ^ 0x80;
こんなんだったかな? 間違ってたらすまそ。
後は加算後にクリッピング処理入れる程度で鳴るはず。

139 :デフォルトの名無しさん:2006/08/05(土) 18:08:04
話題になったのは本当にこのスレかい?
ゲーム製作技術板でそんなことを書いたような覚えはあるが>「ほんとうに加算するだけ」

140 :デフォルトの名無しさん:2006/08/05(土) 18:55:09
int tmp = in1 - 128 + in2 - 128;
tmp = max(tmp,-128);
tmp = min(tmp,127);
out = tmp + 128;

141 :デフォルトの名無しさん:2006/08/06(日) 01:17:37
int tmp = in1 + in2 - 256;
out = (tmp / 2) + 128;


out = (in1 + in2) / 2;

142 :デフォルトの名無しさん:2006/08/06(日) 04:15:53
>>141
一行目からバグってんじゃん。

143 :デフォルトの名無しさん:2006/08/06(日) 18:34:19
マイクから入力された音声と逆位相の
音波をスピーカから出して、音を消すシステムを
作りたいのですが(もう誰かが作ってるらしいですが)、
こういったリアルタイム性が求められるものは
プログラムだけでは無理でしょうか。


144 :デフォルトの名無しさん:2006/08/06(日) 18:57:58
モーターアシストつきのじてんしゃを もっていたら
SP1 カンマ キュークイック  キュークイック 200PS がここで 230PSに
まわりのクルマが なってるが キュークイック キュークイック 250PS キュークイック 245PS キュークイック
キュークイック 350PS キュークイック 450PS に なってる はっずうだ。 250PSとか 245PS 350PS 450PSとかぬかして
SP1 とはどういうのかと いうと Specialぱわーすてーじ だが
あと
4p pppp
と いう そうすると クルマは てんかは ふるぱわー状態だ
あと なまえをいうじぶんのなまえだ
じぶんのモーターアシストじてんしゃは モ−ターアシストが はたらいていなくても
つまり きってあっても かなりかるくなってるだろう。
あと SATEP 4SUTEPPU 2 という そうすると 4パー というと 4秒 ないし 40秒モードは どうしますかと
なると 4ぷれいという わかりましたと なると では てんかじき せいぎょがどうか
きいてきますというが きんきゅうじ うんてんしゃ ののっぞむままの パワーをひきだしてほしいとなる
4びょう というと にげている180の パワーが 4びょうだけ 4500PSになる。
どうしてかというと まいくろぷろせっさーゆにっと ふるもーど
こんぴゅうたーというのはそういうものなんだといえる。
モーター かいせい型 つまり モーターをこいで じゅうでんする モーターアシストじてんしゃの
になるだろう。 

145 :デフォルトの名無しさん:2006/08/06(日) 18:59:55
あと なまえをいうアニメなど ゴリラ というなまえをいう

146 :デフォルトの名無しさん:2006/08/06(日) 19:01:48
あと プレイ 2プレイ と 4プレイ と 4びょうたつと じどうてきに
もどる

147 :デフォルトの名無しさん:2006/08/06(日) 19:03:07
ゴリラではわかりませんので ゴリラ ツー つまり ゴリラ2といっておく

148 :デフォルトの名無しさん:2006/08/06(日) 19:04:08
4pは フォーピー というはつおん

149 :デフォルトの名無しさん:2006/08/06(日) 19:08:28
4p pppppppppp pのあとにppをうったちょっといみはわかるとおもうがまあpといういみではなくて
まいくろぷろせっさー ふるもーど のほうがいいかな

150 :デフォルトの名無しさん:2006/08/06(日) 19:09:04
>>143
リアルタイム性も何も、対象の音を得た時点でその音はもう通り過ぎているわけだから消せるわけない。
周期性のある音に対してなら有効だろうがな。

プログラムだけじゃ無理かといわれればそのとおり。
どんなに精度高く作っても、それが使える条件は限られてくる。

151 :デフォルトの名無しさん:2006/08/06(日) 20:22:36
なんでも さくじょしちゃうんだよな
180ってなに せいれき2000ねん ころかなあ r18 というところで
4km くらいてまえから policeカーとの ばとるが はじまたんだ ただr18を しっそうするだけだけど
そのくらいのきょりで ついせきされる くるまがじこるのは おかしいんだ じつは ぶつかったのは Policeカーなんだ
なんでも ちがうにんげんを たいほして あだうちとか やるんだ

にほんの ぐんしんのじんじゃが くびらい はんふる をまつったとしたらどうする
1267ねん の うみをうめつくしていた ちゅうごくの ぐんせ”い 
じつは 首都がかんらくしていたら
ちゅうごくちほうが ちゅうごくちほうと いうのがちゅうごくの やくしょがあったからんだって
へいけものがたりが にほんにおける てんぷるとん てんぷるとんくびらい さま てんぷるとん てんぷるとん くびらいさま
つまり せんそうに さんかした へいしは しょばつだが 
こっかこうむいんは せんそうへの さんかを もとめられる だが じたくで
テレビなどをきいていて しょくむを ほうきする のなら それはのがれているとみなされる。
ながのけんの ひっとてみな よそからきたひとたちなんだよな 

152 :デフォルトの名無しさん:2006/08/06(日) 20:25:00
せんそうって ひとたび きまりがあると かんらくした あと
おんなは ちぶさを こしのあたりから かたまで りょうてでさするように
なるけど けっこんも あいての こっかの なるけど
おとことか やんなっちゃうな やんなっちゃうな やあんなんちゃうな なんてね

153 :デフォルトの名無しさん:2006/08/06(日) 20:43:50
ロード オブ リング ハカ の 楽園 くらんくいん
ブリトンぞくの ちがながれてる ブリュウターニちほうに あった 
あいつは かわってすまったんだよ せんそうに いって
かんぱあい じゆうの めがみのような かっぷを もって
ぶどうしゅを おんなも きれいなのはいっぱいある せんりひんも ある
せんそうに さんかした うばいたかった うめえうめえ じゆうのめがみの かっぷのようにつがれた ぶどうしゅを
えんかいだ さあ せんそうの うばいとった つまり さんかしたかった わけね    
ながのけんの っぜんこうじたいらの じんこうは せいれき1900ねんから 500ねんまえは
13せいきだと おもうが
じつは 15せいきからは は にほん のよそからきた ながのけんの っぜんこうじたいらのじんこう15にん から はじまった とつたえられている。
てんぷるとん てんぷるとん くびらいさま すくいをあたえてください
クンパルベル さま すくいをすくってください はーんこくの みなまなさまに はーんさまから つたえが あるそうです。
うまって ものすごく はやいんだもん 1900ねんからの カーね かざりたてるのは   

154 :デフォルトの名無しさん:2006/08/06(日) 20:54:18
ロード オブ リング ハッカ の 楽園 くらんくいん
まんがの しっずかなるっどううううは げんだいの かいしゃのことをかいてる
つまり しゅじんこうが かいしゃいんね そうして あんなもん げんだいには ないよ
ビジネスというのは なんだよね
ほうりつの しょうyもん を たてに びじねすを する つまり かいしゃね
ながのけんの きぎょうに ぴたりこの さいごだとおもう
つまり いくっら やっても だもん
いつのまにか なかまに なっちゃたんだよね けいさつしゅたいの げーむなんてやらに
ひやあ てつどうの れーるの しなりつけたのも
かきこんだ おれと はなせるにんげんが いないんだよな つまり だれも わかんないって
ぼくは うんこから はんばあがあ に はさむ にくに そっくりな うんこかこうひんを つくってみせる 
けっきょく ねえ わりきれないのが よのなか だから なんとも してないの
つまり どうでもいいの、 いくっらやっても なのが しょうばい しょうばい なのよ
だから ぴったりの さいごなわけ せまいちいきの さんかがた なかまの きぎょうぐんには

155 :デフォルトの名無しさん:2006/08/06(日) 21:49:35
じんるいの そせんは 3じゅうれんさのいでんてきこうそ”う が 5分の2 か 5分の3
をしめていた くろーんかぎじゅつを もちいて くろーにんぐ つまり てんしゃとか いうのだが
もちいて うまれた
3じゅうれんさの せんしょくたいの いくつあるかは っずのうかつどうとは かんけいが ない 
3じゅうれんさの いでんてきこうっぞう つまり 3じゅうれんさのせんしょくたいこうっぞう
は ただ そうだ つまり だけだ
2じゅうれんさの せんしょくたいの こうっぞうは 3じゅうれんさの せんしょくたいの こうっぞうよりは
ふくっざつだ。

 


156 :デフォルトの名無しさん:2006/08/06(日) 21:52:29
3じゅうれんさの いでんてきこうっぞう つまり 3じゅうれんさの せんしょくたいの
こうっぞうを もっていた じんるいの そせんから くーろんかぎじゅつ つまり くろーにんぐ てんしゃ
ぎじゅつを もちいて じんるいの そせんが うまれた

157 :デフォルトの名無しさん:2006/08/06(日) 21:58:00
もーたーあしすとしきの じてんしゃが なにかに つかわれるかのうせいが ある
べとなむで げんちでは つまり じてんしゃさ のってたんだが グラスファイバー製の
ぼうだんそうち

158 :デフォルトの名無しさん:2006/08/06(日) 22:03:01
ケブラー  グラスファイバー製 =

159 :デフォルトの名無しさん:2006/08/06(日) 22:15:10
まるこぽーろの とうほうけんぶんろく なるぶんしょに うしなわれた ぶんしょが ある。
あるひとに よると だが

ようろっぱのたいりくには はくしょくけい3じゅうれんさ

うわさによると ちゅうごくから にげてきた えいこくじんは にほんじんが きらいで
えいこくじんは ちゅうごくよりらしい。

こーかさすちほう 500まんにんの きゅうじんを ついそう きじゅつも ある つかわれたうまの ちくさんえきとうほう きげんせ”んには
もうあった

160 :デフォルトの名無しさん:2006/08/06(日) 22:23:05
まるこぽーろが ちゅうごくに ちゅうごくじんは あたまがいいと おもったらしい。
はくじんが ゆうごくから きた きゅうじんから しんかしたというせつも ある らしい。

にほんの とっきょに みくだすというのが ある つまり2じゅうれんさこうっぞう が えらいというのだ
くるまを うんてんするには えらいんだというのを すてるのだが なかなか
くるまを つくるのは くらいでないと くるまのうんてんは むっずかしい。    

161 :デフォルトの名無しさん:2006/08/06(日) 22:33:07
じんるい 人類が かつやくしたのは 地球に わずかな きかんだった
りゆうは 人類が かつやくしたのは わずかなきかんだったという ふれーっずが しっくりくるからだ。
人類のれき終にしゅう止符を うつんじゃ ないだろうかなあ 2じゅうれんさのかんじをかんがえる 

162 :デフォルトの名無しさん:2006/08/06(日) 22:40:12
せーぶでーた が できないのは かそうでーたーくうかんを つくってる かのうせいも ある

163 :デフォルトの名無しさん:2006/08/06(日) 23:37:46
月配列の亜流でも作ってんのか?よそでやれよ

164 :デフォルトの名無しさん:2006/08/07(月) 00:14:05
>>150
とはいえ、環境音を抑えるヘッドフォンもあるぐらいだから、十分早く打ち消す音を発生させればある程度音量を抑える事はできるんじゃないだろうか?

165 :デフォルトの名無しさん:2006/08/07(月) 08:11:44
>>164

周期性がないとかえって五月蝿くなるだけのような

166 :デフォルトの名無しさん:2006/08/07(月) 08:47:14
>>165
逆位相波を重ねて雑音を消す技術は既に色々応用されていますが何か。

167 :デフォルトの名無しさん:2006/08/07(月) 10:49:05
音はね、エネルギーなんだよ。
だからスピーカーで音を消すにはスピーカーがエネルギーを吸収しなければいけない。
だったら吸音剤をおいた方がいいよね。

ただね、
ダクト内部のような場合は、出口で丁度圧力変化がゼロになるようにしてやれば
外に出ないというのはあるよね。 でもダクトの中のエネルギーは増えている。当然だよね。
高速道路なんかの壁のスピーカーも同じ理屈だね。


168 :デフォルトの名無しさん:2006/08/07(月) 11:38:05
>>167
吸収しなくても逆方向のエネルギーをぶつけりゃいいじゃん。
吸音材ができることなんてタカがしれてる。

169 :デフォルトの名無しさん:2006/08/07(月) 12:05:03
運動量や圧力はマイナスになれますが
エネルギーはその2乗項なので、物理量が虚数にならなければエネルギーは消滅しません。
つまりマイナスのエネルギーというのは無いのです。

もしかして、マイナスのエネルギーという意味を、
エネルギーを閉じ込めて、その閉じ込めた空間で吸音=熱エネルギーへの変換を行うとい
う意味に使っているのかもしれませんが


170 :デフォルトの名無しさん:2006/08/07(月) 12:13:35
おしえてぇ♪ くだぁさい♪
この世の引力と反発力に♪
符号の違いに意味があるのならば
あなたは浮きますか?

171 :デフォルトの名無しさん:2006/08/07(月) 12:14:48
>>169
音は波なので逆相を重ねりゃ弱くなる。つりあいとって合力0にすりゃいいだけ。
あんた、頭悪いね。

172 :デフォルトの名無しさん:2006/08/07(月) 12:25:39
有限の大きさの面で音場の逆相を作る事は出来ない。

音は圧力と運動量が交換しながら伝わってゆく
でも圧力はスカラーだけど、運動量は方向成分を持った(つまりベクトル)
で圧力も場の上にあるから、
逆相を重ねるには3次元上に圧力コントロールを行える装置を配置しなければならないわけだ。

ダクトの中や、ヘッドホンのようにその一点に絞ればその点だけをコントロールする事は可能だが
音に音をぶつけてエネルギーを吸収する事は出来ない。

173 :デフォルトの名無しさん:2006/08/07(月) 12:36:33
生半可な知識で頭の悪い屁理屈捏ねている香具師がいると聞いて来ました。

174 :デフォルトの名無しさん:2006/08/07(月) 12:39:37
まったくだ。
任意の3次元空間で音が消せるというなら、
ハイファイ対応のハウリングキャンセラーなんて簡単に作れると思ってるんだろうな

175 :デフォルトの名無しさん:2006/08/07(月) 12:46:04
音の振動を伝える者をなくせばいいんじゃないの?

176 :デフォルトの名無しさん:2006/08/07(月) 12:47:05
つ[真空ポンプ]

177 :デフォルトの名無しさん:2006/08/07(月) 13:05:17
共鳴させてエネルギーを集中させてから回収するというアイデアはどう?

178 :デフォルトの名無しさん:2006/08/07(月) 13:34:10
クインケ管のように穴が開いてるのに音が外に出ない現象を 【消す】 と呼んでるという事でいいのでは?

179 :デフォルトの名無しさん:2006/08/07(月) 13:40:07
>>178
クインケ管
ttp://www.geocities.co.jp/Technopolis-Mars/8494/NEWS/ypc147/ypc147.htm



180 :デフォルトの名無しさん:2006/08/07(月) 16:21:53
そこの実験発表、いちいち面白いよな

181 :デフォルトの名無しさん:2006/08/07(月) 17:39:23
消音の原理
http://www.cepstrum.co.jp/products/anckit/ancbasic.html

まさしくクインケ管の原理で
上流下流と書いてるように、左からの音を消すというより
左からの音を反射している。 つまり仮想の壁を作る技術にすぎない。


182 :デフォルトの名無しさん:2006/08/07(月) 17:47:19
でも 反射するという事は、>>177のいうように 左からの音についてダクトを
ヘルムホルツ共鳴器に換えてしまっているのかもしれない。

183 :デフォルトの名無しさん:2006/08/07(月) 17:55:33
つまり進行方向⇒
A ----++++----++++----++++----++++----++++
B ++++----++++----++++----++++----++++----

A+B なら完全に消えるけど、
スピーカーからの音は左右に反対位相(反対進行方向)で伝わる
++++----++++----++++----++++----++++----
+++----++++----++--++----++++----++++---
++----++++----++----++----++++----++++--
+----++++----++------++----++++----++++-
----++++----++---++---++----++++----++++
この進行波を加算すると、スピーカーの所で反射されているのと同じ

184 :デフォルトの名無しさん:2006/08/07(月) 18:08:53
反射以外の吸音原理:

 ダクトを2又にすれば、片方の通路の音は当然1/2になる。
 つまりそこで反対位相で振幅1/2になるようにスピーカーをコントロール出来れば
 スピーカーがエネルギーを1/2吸収した事になる

185 :デフォルトの名無しさん:2006/08/07(月) 18:34:22
床天井壁が均質な部屋に明かりが灯っている。
明かりを壁が αだけ吸収し (1-α) 反射するとする。

反射した光は再度反射するから  (1-α)+ (1-α)^2+ (1-α)^3 .... と無限に反射する
部屋の明るさは 真っ黒な壁の部屋にくらべて Σ(1-α)^n 倍明るくなる。
αが小さくなると、この倍率はとても大きくなる。
白い壁、明るい色の床の狭い部屋は蛍光灯1灯でも十分明るい。
しかし、壁に黒い学生服をかけるだけで突然暗くなる。
学生服が光を吸収してしまうからだ。

同じ事は音についても言える。 部屋の中で音は壁で何度も反射される故に音は大きくなる。
この原理で増幅された音は、一箇所で吸音するだけで一瞬で小さくなる。
これを電気的に起こせば

186 :デフォルトの名無しさん:2006/08/07(月) 18:38:13
光のように音を吸収できる素材なんてない。

187 :デフォルトの名無しさん:2006/08/07(月) 21:08:44
音のように光を吸収できる素材なんてない。

188 :デフォルトの名無しさん:2006/08/07(月) 22:52:23
観測者の位置でだけ消音状態にしたいんじゃないのか?


189 :デフォルトの名無しさん:2006/08/07(月) 23:27:28
・耳から入る音以外(体が感じる音)をどう消すのか
・既に届いてる音に対して、プログラムで対処するなら>>150の言うように周期性から予測して打ち消すしかない
・上記方法の場合でも環境依存をどう対処するか(マイクとヘッドホンの配置と特性、PCの構成等)

>>143
汎用的な物は限りなく無理に近いと思うけど、
環境依存覚悟で実験してみる価値はあるんじゃね?

190 :デフォルトの名無しさん:2006/08/08(火) 01:49:16
音消してくれるエアーカーテンほしいよね。

それとどんなに大声でしゃべっても通話相手にしか聞こえないマイクもほしい。
超音波ですんごいピンポイントの指向性もったスピーカー作ったのあったじゃない。
あの技術とか使ってできないかな。

191 :デフォルトの名無しさん:2006/08/08(火) 03:00:21
>>190

>音消してくれるエアーカーテンほしいよね。

音波レンズというものがあるので、焦点が自分の方に来ないようにしてしまえば
エアカーテンに相当するものは可能だと思う

3次元に広がる音をピンポイントで消すには
上で何度か言われている(言ってるひとは勘違いしてるみたいだけど)
逆位相の部分での干渉を利用すれば出来なくはない
ただしピンポイントなので他の場所は静かにならないし
3次元的にはエネルギーも決して無くなる訳ではない


>それとどんなに大声でしゃべっても通話相手にしか聞こえないマイクもほしい。
>超音波ですんごいピンポイントの指向性もったスピーカー作ったのあったじゃない。
>あの技術とか使ってできないかな。

すこしずらした非可聴周波数音を二つのスピーカーから発生させて
その二つのベクトルの交わる部分のみずれからくるうなりで
可聴周波数を再現するという話が出たことがあると思う




192 :デフォルトの名無しさん:2006/08/08(火) 07:50:58
>>188
その位置だけ消音といっても、3次元空間内でそういう点を作るのは難しい
もし可能だとしても、そこで定在波を作ってるようなものなので、
節と腹が生じる。 節で音量がゼロなら、腹では音量は2倍になるという事になる。

耳が2つあり音速は330メートル/秒程度なので、300Hz以上では
両方の耳に節が来るような定在波を作る事は出来ない

193 :デフォルトの名無しさん:2006/08/08(火) 08:03:12
右耳と左耳の間隔が〜1m近くあるデカ頭の人キター

194 :デフォルトの名無しさん:2006/08/08(火) 08:06:10
頭の直径が1mもあるわけねぇ〜だろ

  330 [m] / ( 300 [Hz] × 2 ) = 0.505 [m]

>>192の頭の直径は 50cmしかないんだよ。


195 :デフォルトの名無しさん:2006/08/08(火) 08:06:44
↑ 0.55 [m] orz

196 :デフォルトの名無しさん:2006/08/08(火) 08:49:17
>>194
>>192の頭の直径は 50cmしかないんだよ。
充分でかいよ。漏れの肩幅でさえそんなにないよ。

197 :デフォルトの名無しさん:2006/08/08(火) 09:04:39
だから実際実用化されてるらしいでないの。
ただソフトウェアでとなると遅延時間がでかくなるから(一番でかいのはA/D/Aレイテンシー)、
そうとう条件は厳しくなるだろうね。

198 :デフォルトの名無しさん:2006/08/08(火) 09:48:32
-6dB sin(30度)=0.5 だから  330 [m] / ( 300 [Hz] × 12 )  約9cm 
子供の頭?

199 :デフォルトの名無しさん:2006/08/08(火) 09:50:18
そういや180度の場所も節だな

200 :デフォルトの名無しさん:2006/08/08(火) 09:58:03
>>193-194 いいか、お前ら、

0  90 180 270 360

---______---~~~~~~---______---

節  腹 節 腹 節


波長が 1メートルなら 腹はその1/4と3/4のところだ

201 :デフォルトの名無しさん:2006/08/08(火) 10:07:07
そうか、電話なんかは300Hz以下カットしてて、耳の感度が悪いのは 頭の大きさから来てるのか!

202 :デフォルトの名無しさん:2006/08/08(火) 10:07:26
>>197
逆相で音を弱くするので実用化されてる例は、
踏み切り、病院、救急車、消音ヘッドフォン、高速道路、新幹線の線路などなど。

203 :デフォルトの名無しさん:2006/08/08(火) 10:24:50
でも音を単に反射してるのだとすれば、高速道路なんかは高いマンションなんかは逆にうるさくなってるのかも

204 :デフォルトの名無しさん:2006/08/08(火) 11:07:10
>>198
丁度頭の中央を狙えばそんなものじゃないの

頭の幅のデータ
ttp://homepage3.nifty.com/orangejuice/head2.html
平均 
男 16.2cm
女 15.6cm

205 :デフォルトの名無しさん:2006/08/08(火) 14:09:44
定在波と進行波で検索したリンクで初めて勘違いに気が付いた。
圧力と|速度| って 90度位相差が出るのは定在波の時だけで 進行波は同相だったのか


206 :デフォルトの名無しさん:2006/08/08(火) 14:23:47
ダクトの中に細いフィラメントを沢山配線して通電する事で加熱
熱膨張で進行波を打ち消してしまうというのはどうだ?

207 :デフォルトの名無しさん:2006/08/08(火) 14:55:09
プログラミングの話が全然出てこないのは何故?

208 :デフォルトの名無しさん:2006/08/08(火) 15:47:21
>>207 何か質問があるならどうぞ

209 :デフォルトの名無しさん:2006/08/08(火) 21:19:28
DPCMのいいエディタご存じないですか?
それとも、無きゃ作っちまえ、なスレですか?

210 :デフォルトの名無しさん:2006/08/08(火) 22:43:58
>>209
それがローカルルールの範囲内の質問なんですか?

211 :デフォルトの名無しさん:2006/08/09(水) 08:00:56
エディタといっても、波形を表示してそれをカットペースト+エフェクトするくらいだからなあ
波形をマウスで作ったりしたってまともな音にならない


212 :デフォルトの名無しさん:2006/08/12(土) 08:12:36
http://www.miraikan.jst.go.jp/idea/head_01.html

213 :デフォルトの名無しさん:2006/08/14(月) 02:21:43
MP3のエンコーダのライブラリでライセンスフリーのものってありますか?
ご存知でしたらどなたか教えていただけませんか。デコーダはあるんだけど。

214 :デフォルトの名無しさん:2006/08/14(月) 03:06:13
>>213
ない

つか、もし配布元が問題ないといっても、F社やらT社は絶対それを認めないだろ

215 :デフォルトの名無しさん:2006/08/14(月) 17:50:08
>>214
ではMP3のエンコーダ自体を自ら実装すれば問題のでしょうか?


216 :デフォルトの名無しさん:2006/08/14(月) 18:15:24
>>215
フォーマット自体には特許の及ぶところではないというのは当たり前になっているわけで、
それゆえに、LZWの特許が有効だったときも無圧縮GIFは問題無いという考えが主流だった

そう考えると、確かmp3も圧縮アルゴリズムの特許は例の2社が持っていたはずで、
それなら無圧縮mp3は問題ないことになる。

だが、それってmp3の意味無いじゃん。

217 :デフォルトの名無しさん:2006/08/16(水) 13:41:26
午後みたいに、インストーラーでコンパイルするという荒技もあるけどな。

しかし、あれは酷いやり方だな。
賛同はできん。
素直にソースだけ公開しとけば問題ないのに。

218 :デフォルトの名無しさん:2006/08/16(水) 23:44:51
音ゲーで使えるようなくらいの遅延の少ないエフェクトの掛け方を探してます。

C#.NETで、DirectSoundのSecondaryBufferのエフェクトを使ってみたんだけど、
バッファに書き込んでから音が鳴るまでの時間が200msecくらいもあって、結構使えない。
そこで腹をくくってその辺りの処理を自前でやろうかと。

複数のwaveを鳴らして、その合成音にリアルタイムにリバーブエフェクトをかけるのって、

再生用バッファにwaveを加算(サンプル毎足し算)
その波形に対して随時インパルス応答を適用する

こんな感じで合ってますか?

219 :デフォルトの名無しさん:2006/08/17(木) 07:05:55
あってるよ。 問題は飽和に対しての処理だけさ

220 :デフォルトの名無しさん:2006/08/17(木) 08:37:15
午後でいくつかまとめて処理すると
ファイル名が入れ替わったりするバグありますよね?

221 :デフォルトの名無しさん:2006/08/17(木) 08:54:04
>>220知らん。 つーか板違い

222 :デフォルトの名無しさん:2006/08/17(木) 10:07:16
>>218
ASIOとかWDMとかに最適化しないとめちゃめちゃ遅れるよ。

223 :デフォルトの名無しさん:2006/08/17(木) 16:09:30
>>220
翌日の朝やればいいじゃん


224 :218:2006/08/17(木) 17:29:50
試しに2秒のwaveに100kbくらいのインパルス応答をFIRフィルタで適用してみたら
処理に糞時間かかった。。ノイズもいっぱい。

このやり方じゃダメですか?

ちなみに使ったインパルス応答
ttp://noisevault.com/nv/index.php?option=com_remository&Itemid=29&func=fileinfo&filecatid=55&parent=category
これのm1_44.wav

>>222
うちのオンボードじゃASIO4ALL入れても無理でした。

225 :218:2006/08/17(木) 17:52:43
録音して波形を見てみたら、ノイズは>>219の忠告通り飽和が原因っぽかった。
飛び出したサンプルだけとりあえず範囲内に凹ましてみたけどノイズは和らいだだけ。
やっぱりその周辺も同じ比率でなだめないといけない?
処理に時間かかって仕方なす

226 :デフォルトの名無しさん:2006/08/17(木) 18:04:28
インパルス応答をそのまま掛け算したら遅いのが当然
といってFFTで掛け算回数を減らす高速化をするとブロック処理になって、希望じゃないでしょ。

だからリバーブなら思い切って一定時間の遅延にしてしまうのがいいんじゃないの?
その遅延にIIR2時のLPFかければそれらしくなるさ。

227 :デフォルトの名無しさん:2006/08/17(木) 18:59:33
デジタルリバーブの基礎から勉強したら?

リアルタイム性を重視してリバーブをかけるなら、
ディレイ時間の違うIIRフィルタの結果をさらにIIRフィルタに通すのが基本。

今のCPU速度だとゲームでコンボリューション・リバーブは非常識。

228 :デフォルトの名無しさん:2006/08/17(木) 19:13:01
EAXのリバーブとか使えないか?
幾分ハードウェア処理だから軽いだろ

229 :218:2006/08/17(木) 21:29:11
IIRで何とかなるならそれに決めたいんだけど、探してきた↓のサンプルだと音が曇ってしまった。
ttp://www.morikita.co.jp/soft/7832/iir2.c
フィルタが悪いだけ?良いフィルタのサンプルは無いだろうか。

>>227
フィルタ1の出力をフィルタ2の入力にして、その出力を適用という作業をサンプル毎に行う
と解釈してみた。

>>228
SDKが見つからないよう

230 :デフォルトの名無しさん:2006/08/17(木) 22:34:37
遅延が…遅延がぁぁっ!

231 :デフォルトの名無しさん:2006/08/17(木) 22:43:59
係数が…係数がぁぁっ!

232 :デフォルトの名無しさん:2006/08/18(金) 06:37:49
>>229
2次のIIRフィルターは LPFならf0とQで係数が決まるけど、それぞれいくらにしてるの?
Q=0.7程度にして f0を変化させてみたら?

それから、あくまでも遅延した方にだけIIRをかけて、元の信号と加算するんだよ。
加算した結果飽和するなら音量を下げるAGCを使うか
飽和しないように a , (1-a) の比率で加算するか

233 :デフォルトの名無しさん:2006/08/18(金) 12:05:06
ああ、まさか>>229のソースで係数そのまま使ったって事?
そのレベルならとりあえず1次のLPFでやってみたら?

過去ログ のレス14より
http://www.2chdat.net/data/html/01111704/996171508.html

1次のLPFは
w =2*π*f0/22050.0;
r =tan(w/2);
b =(1-r)/(1+r)

・・・・・略・・・・

y:=b*(x-y)+y と計算します


xが入力で yが出力だよ そしてyはグローバルに取るんだよ。
でbを可変してみて感じのいい所を探してみるといいよ

高域をもう少し減衰させたいなら2段するといいよ

234 :218:2006/08/18(金) 19:48:30
フィルタ係数の算出方法があったのか( ゚д゚)…今見見返してみると過去ログが宝の山に見える。

そういえばさっきから全然残響音が出ないなぁと思って考えてみたんだけど、
1サンプル前じゃなくてもっと前のサンプルをフィードバックすれば良かったのか!?
っと気づいてから今更>>226の意味を理解した。ぁーぁー

それから1次なり2次のIIRを掛けて高音減衰させれば良い感じになるのか。
一応これでそれっぽいのは聞こえるようになったよう。みんなありがとうヽ(゚∀゚)ノ

後はこれとミキシングがどのくらいのレスポンスで出来るかどうかー

235 :デフォルトの名無しさん:2006/08/18(金) 19:52:51
IIRは発振しないようにパラメータ選びは慎重にしてね( ´∀`)b

236 :デフォルトの名無しさん:2006/08/19(土) 01:44:34
>>9-11を参考にして、ブロックのサイズを凡そ0.1秒にして、
音程変化の内速度調整を実装したところ、
再生速度を0.5倍にするところまでは非常にスムーズな音でこれを実現できました。

しかし、0.5を下回る倍率(〜x0.4)になった途端、音声が毒電波状態です。

現時点での実装は
・ブロックの間引き(重複)
・ブロックの窓関数処理
のみで、
・空白を優先
・繰り返しを配慮
という二点は実装していません。
自分の作っているプログラムでは効率が悪すぎて、
この二点を実装しようとすると処理時間が不足するおそれがあり、
何よりこの二点の効率の良い実装方法が思いつかなかったので。

よくよく考えてみると、この機能を実装しているプレイヤの内のいくつかは、
やはり0.5倍を下限に置いている様なのですが・・・。


何か良い解決方法はありますでしょうか?
また、それはどのような方法か教えてください。

237 :デフォルトの名無しさん:2006/08/19(土) 03:24:13
ァ・・・もしかしてサンプリング定理と関係があるのか・・・?0.5倍ってのが2の逆数であることから考えても・・

238 :デフォルトの名無しさん:2006/08/19(土) 05:11:04
やっぱ厳密にはオーバーサンプリング+アンチエイリアスを
かけてから処理すべきとこなんじゃないの

239 :デフォルトの名無しさん:2006/08/19(土) 07:28:47
音程が変っているのなら、サンプリング速度が変化しているからどこかの段階でLPFを入れておく必要があるよ。
そうじゃないと折り返し雑音が問題になる。
綺麗な音にしたいなら、最低2倍のオーバーサンプリングしておいた方がいいかもね。

音程が変らずに再生速度だけ変化させてるならサンプリング定理の問題じゃない
0.5を下回る場合に問題が出るという事は
0.5を下回ると同じ音を3度以上繰り返し利用しなければならなくなるけど
その処理がはいってないんじゃないの

240 :デフォルトの名無しさん:2006/08/19(土) 09:10:42
>>238-239
書き方が悪くてすみません。
「音程を変化させずに速度変化をした」
処理です。
>>239
いいえ、3度以上の繰り返しについても問題なく実装しているはずです。
DirectSound+C#なので、部分抜き出しが難しいですが・・、
0.5以上1倍以下ではどれだけ細かい指定をしても平気なので、
ここにバグがあるわけでは無い・・・とは思うのですが。

 decimal readCount = 0;
 decimal readSpeed = 0.4;

 for(writePoint=0;writePoint<(一秒分のバッファ長);writePoint+=(0.1秒分のバッファ長))
 {
  readCount += (double)readSpeed;
  for(i=0;i<readCount;i++)
  {
   /* [readBufferに0.1秒分読み込み] */
  }
  /* [readBufferから書き込み用バッファにwritePoint位置でコピー] */
  readCount -= (int)readCount;
 }
 /* [書き込み用バッファを再生バッファにコピー] */

という感じでの実装です。
なんだっけ、グラフィックとかで良く使う「斜めの直線を整数型のみで計算するアルゴリズム」を応用した感じなのですが。

241 :デフォルトの名無しさん:2006/08/19(土) 09:12:30
あ、Shift+Enter間違えて押してしまった・・・。
改行と書き込みがメッセとは逆だから間違えるなぁ・・・

とりあえず、お二人のご意見から
オーバーサンプリング+アンチエイリアスについても実装を検討してみます。

242 :デフォルトの名無しさん:2006/08/19(土) 09:16:02
あともう一点追記です。
240で示したソースの中で、i以外の変数はすべて
クラススコープです。iのみがメソッドスコープになっております。
readCountがメソッド呼び出し毎にリセット、というわけではありません。

おまけに分かりづらくてすみません・・・。

243 :デフォルトの名無しさん:2006/08/19(土) 09:24:22
音程が変化していないという事は、サンプリングレートが変化してないわけでしょ?
だったら オーバサンプリングとかLPFは必要ないよ。

で、やっぱり3度利用する部分に単純にバグがあるのだと思うよ
もっとも3度も利用すると違和感があるという事なら当然そうだろうけどね

あまり2倍以上遅くする場合は、やっぱり無音期間を検出して、そこを出来るだけ引き延ばす方がいいと思うよ


たとえば0.1秒のブロックを0.05くらいに小さくして、そのブロックの音量が今までの音量より一定比率より小さいなら、
その部分の繰り返し回数を出来るだけ多くするとか


244 :デフォルトの名無しさん:2006/08/19(土) 09:31:35
まてよ >>240の定数だと、引き伸ばしではなくて短縮なんだよね?

短縮で0.1秒単位に2ブロック以上連続してすてるようになると、音声だと何を言ってるのか判らないようになってしまう。

そこまで強力に短縮するなら、
まず周期性を検出して周期の整数倍の
もっと小さいブロック (1/30)〜1/60のような(ブロックというよりgranul) サイズにして
それを捨てるようにする。必要があるよ。

245 :デフォルトの名無しさん:2006/08/19(土) 09:35:11
サウンドプログラムの本ってあんまりないよね

246 :デフォルトの名無しさん:2006/08/19(土) 09:40:53
!バグ見つけた!

>>243
バッファを注意深く見たところ、きちんと三度利用されるところは三度利用されていました。
ですが、読み込み時に窓関数をかけるのではなく、書き込み時に窓関数をかけていたため、
 一回目の利用>二回目の利用>三回目の利用
と、窓関数により一気に減衰していました。
これをなおしましたが、やはり違和感は酷いです。
どうやらご提案の通り、きちんと無音期間や繰り返し周期の懸念を行わないといけないようです。

>>244
いいえ、短縮ではなく延長です。
なぜならreadCountは
一回目のループで0.4→読み込まない(readBufferはデフォルト0配列)
  →書き込みバッファには0が書き込まれる
二回目のループで0.8→読み込まない
  →書き込みバッファには0が書き込まれる
三回目のループで1.2→読み込む(readBufferには0〜0.1秒分の)
  →書き込みバッファには0〜0.1秒分のデータが書き込まれる
四回目のループで0.6→読み込まない
  →書き込みバッファには0〜0.1秒分のデータが書き込まれる
五回目のループで1.0→読み込む
  →書き込みバッファには0.1〜0.2秒分のデータが書き込まれる
という感じに機能するので・・・。

247 :デフォルトの名無しさん:2006/08/19(土) 09:48:58
出来るだけ無音期間を検出して無音期間を引き延ばすのが第一
次善は、周期を検出してその周期の整数倍にgranulを切り出して
それを並べる

音声の場合は周期の揺らぎが音声らしさを作ってるから
母音の部分の極端な引き伸ばしは巧くゆかないけどね(周期性が増すと声が変ってしまうから)
やらないよりはマシ

248 :236:2006/08/19(土) 09:52:20
うん、どうやらその方法をとるしか無い様ですね。
・・・分かり切ったことを聞いたようで、すみませんでした。

しかしそうすると演算量が極端にあがるなぁ・・・
全量ノルムチェックと倍速調整か・・・うは、頭いてえ

249 :デフォルトの名無しさん:2006/08/19(土) 10:07:55
Σx^2はそんなコストはかららないでしょ
周期検出の方が計算コストの低いのを探すのは大変でしょ

250 :236:2006/08/19(土) 10:22:12
>>249
やぁ、せっかくあちこちダイエットしたのになぁ、ってボヤキです。
再生に関係しない他のところが処理コスト食い過ぎで、
再生するとCPU利用率が3%くらい跳ね上がるもんですから。

実質的な問題はただ単に面倒くさいだけです、本当にすみません。

251 :デフォルトの名無しさん:2006/08/19(土) 10:23:57
急に内容が難しすぎ。

252 :236:2006/08/19(土) 10:32:11
・・・確率論的に乱数で処理の是非を決定して無音部分の処理確率をあげt

いや、やめておこう

253 :デフォルトの名無しさん:2006/08/19(土) 10:40:30
>>234
毎サンプルデータ毎に
Xを入力 Yを出力 配列をM, rwp,

Y = X*(1-g) + LPF( M[ (rwp +T) % SIZE] ) *g

M[rwp] = Y

rwp=rwp % SIZE;

てな計算になるだけだから、別に遅延などそう必要ないでしょ

254 :デフォルトの名無しさん:2006/08/27(日) 18:27:58
QuickTimeSDKつかいづらい・・・・・・・

255 :デフォルトの名無しさん:2006/08/30(水) 15:08:42
波形を合成する機能をもったライブラリって例えば
どのようなのがありますか?

256 :デフォルトの名無しさん:2006/08/30(水) 16:11:14
DirectSound

257 :デフォルトの名無しさん:2006/08/30(水) 23:33:24
8000Hz,8bitで取り込んだ音の中に、1KHzの音が混じってるかどうかだけをリアルタイムに調べたいんですが、低スペックマシンで処理するのにおすすめの方法はありますか?

258 :デフォルトの名無しさん:2006/08/30(水) 23:36:44
FFTを応用すればどうとでも出来るとおも

259 :デフォルトの名無しさん:2006/08/31(木) 10:30:18
>>257
フィルタ使うのが軽い。

260 :デフォルトの名無しさん:2006/08/31(木) 10:31:42
バンドパスフィルタを使って音量レベルを計ればいいんだ

261 :デフォルトの名無しさん:2006/08/31(木) 13:25:22
音程を変えるのに FFT を使ってるソフトがあるらしいのだが、
どういう風に使ってるんだろう。
単純に区間に区切って FFT かけて周波数を n 倍して戻すのって、
時間軸で重複させるのと等価だよなぁ。
位相をうまく合わせればちっとは良くなる気もするが、窓関数かけてたら
ほとんど影響なさそうだし。

262 :デフォルトの名無しさん:2006/08/31(木) 14:44:40
>>261
ヒント:フォルマント

263 :デフォルトの名無しさん:2006/09/01(金) 07:53:32
>>17 を参照。

264 :デフォルトの名無しさん:2006/09/01(金) 15:20:35
> 全体を一度に収まる大きなサイズのFFTで行う方法
これ試したことあるけど、まともな音にならない。
長い区間をフーリエ変換しても、意味のある情報は得られないと思う。

> ピッチシフトは周波数軸での単なるシフトではなく、指数的移動なので
これの意味が良くわからん。定数倍すりゃいいだけじゃないの?

265 :デフォルトの名無しさん:2006/09/01(金) 19:12:02
>>264
恐らく「音程」に対して周波数係数が「指数」になるって言いたいんじゃないかな。

 音程   周波数
  -12   *2^(-12/12)
  -11   *2^(-11/12)
  ・・・   ・・・
  -1   *2^(-1/12)
  ±0    *2^(±0)
  +1   *2^(+1/12)
  ・・・   ・・・
  +11   *2^(11/12)
  +12   *2^(12/12

だから・・・

まあ何かを勘違いしている恐れがあるけど

266 :デフォルトの名無しさん:2006/09/01(金) 20:15:03
その周波数軸の定数倍をどう実現してるの?
たとえば 2^(+1/12) = 1.05946309435929526 となって綺麗な比率にはならない
特に低周波は目が荒くなるわけで

これを旨く処理するには exp(2πki)という指数=三角関数が必要にならない?

267 :デフォルトの名無しさん:2006/09/01(金) 22:00:18
>>266
指数的な補完が必要ってことか。なるほど。そこまで考えてなかった。

でも、上にも書いてあるけど、周波数軸を a 倍するのって
時間軸を 1/a 倍するのと同じだよね。(音量は a 倍違うけども)
FFT 使う意味がいまいち分からないなぁ。

268 :デフォルトの名無しさん:2006/09/01(金) 23:23:01
DARU/PITCH-SHIFTER!だと音程+1で1.05946314って表示されるよ。
綺麗な比率では無いけど考え方はあってるんじゃないの。

周波数軸上でスペクトルを上下させるのがピッチシフトだっけ?

269 :デフォルトの名無しさん:2006/09/02(土) 11:50:35
>>267
たしかに。
下限周波数 f_low [Hz]で周波数スペクトルを測定するには、
有限の時間1/f_low [sec.]かかるので、
結局のところグレイン・サイズ 1/f_low [sec.]で
グレイン操作して、ピッチシフトを表現することしかできないね

270 :デフォルトの名無しさん:2006/10/05(木) 00:10:57

ttp://pc.watch.impress.co.jp/docs/2004/0204/nishikawa.htm




ttp://www.drk7.jp/MT/archives/000120.html



271 :デフォルトの名無しさん:2006/10/11(水) 18:43:00
今、ASIO2.0のSDKのサンプルをいじってるんだが、どこで再生しているのかわからない。
誰か教えてくれません?

272 :デフォルトの名無しさん:2006/10/11(水) 22:35:32
ASIO_Init()の中をループしている最中にbufferSwitchTimeInfo()がcallbackで呼ばれる
と思った

273 :デフォルトの名無しさん:2006/10/11(水) 22:37:45
いやbufferSwitch()か・・・まぁその辺

274 :デフォルトの名無しさん:2006/10/12(木) 00:30:37
確かにここらへんが怪しいとは思うんだけど、どういじくったら音を出せるのかがわからない。

asioCallbacks.bufferSwitch = &bufferSwitch;
asioCallbacks.sampleRateDidChange = &sampleRateChanged;
asioCallbacks.asioMessage = &asioMessages;
asioCallbacks.bufferSwitchTimeInfo = &bufferSwitchTimeInfo;

誰か音を出す方法を教えてくださいな。

275 :デフォルトの名無しさん:2006/10/12(木) 00:57:17
あ、ごめんinit()は自作関数だったかもw 昔書いたのを適当に眺めて書き込んだんで・・・
再生するサンプルソースがあると思うけど要するにその辺のcallback定義して開始すると
ASIOのsystemからbufferSwitchTimeInfo()が呼ばれる。
その中で要求された形式に応じてbuffを充填して戻る

無音だかを再生するサンプルがあると思うんで〜Info()にbreakpoint貼って
要求されたcaseのmemsetを適当な波形を返すようにしてみるとか、その辺からやってみては。

276 :デフォルトの名無しさん:2006/10/25(水) 23:43:20
bufferSwitchTimeInfo()をいじくったら音が出るようになったよ!
さんくす!
でもなんか音が途切れ途切れ。。。ブツブツだわ。

どうしたらスムースになるんだ?
誰かわかる人助けてください。

277 :デフォルトの名無しさん:2006/10/28(土) 04:28:22
まだキャプチャーした音を再生するところまでしか作ってない「ヘボな段階」なので、
ファイル書き出し機能を作ってから聞けばいいのかもしれないのですが、
書き出し機能を作るときからおおまかな部分について知っておいた方がいいかなと
思いましたので、質問です。

キャプチャして録音しながら
DVDレコーダなんかでよくあるタイムシフトの機能を扱いたいと思っているのですが、

どういった手順になるのでしょうか?おおまかな流れについて教えて下さい。
waveもしくはmp3をストリームして録音しているときに単純にそのファイルを
開いて再生するだけなのでしょうか?
それとも、何かあらかじめ準備しなければならいことがあったり
特別な手順を踏んでタイムシフト用のファイルを作ったりしないといけないのでしょうか?

mp3でタイムシフトやるときとwaveでタイムシフトやるときのファイル形式による懸念点などありましたら、
それも教えて欲しいです。mp3でやってもwaveでやっても一緒なのでしょうか?

278 :デフォルトの名無しさん:2006/10/28(土) 09:19:09
Adudacity でタイムシフト再生なんか出来たか?

279 :デフォルトの名無しさん:2006/10/28(土) 09:20:00
あ、Audacityスレとまちがえてかいてしまったごめんよ。

280 :デフォルトの名無しさん:2006/10/28(土) 12:41:11
>>277
FILE_SHARE_READでCreateFile()してやればいいんじゃね?
録音用のHANDLEと再生用のHANDLEで別にCreateFile()すればseek位置で干渉しないし。

wavはLR&チャンネルのバウンダリさえ気をつければどっから再生しても問題無いけど、
mp3は[4バイトのヘッダ+データ]のブロック単位でシークする必要がある。

てかmp3使うならエンコード/デコードのライブラリが必要。
フリーで転がってるソースはエンコはgogo、デコードはmpg123辺りかなぁ。

281 :277:2006/10/28(土) 18:54:05
>>280
どうも、ありがとうございます。
それほど複雑な処理を必要としないさそうで、ちょっと安心しました。
waveとmp3でやり方が大きく違いそうだということもわかりました。特にmp3は敷居が高そうですね。
とりあえずwaveでタイムシフトを実現させることを目指そうと思います。

こんなプログラムは探せばに既にあるんでしょうけど、勉強を兼ねて自分でやってみようと思います。
ありがとうございました。

282 :デフォルトの名無しさん:2006/11/02(木) 18:55:56
ADPCMの詳しい資料ってありませんか?

283 :デフォルトの名無しさん:2006/11/02(木) 20:40:10
CCITTの規格書とかお金出せば買えるよ

284 :デフォルトの名無しさん:2006/11/03(金) 01:30:14
>> 282
何が知りたいの?

285 :デフォルトの名無しさん:2006/11/04(土) 15:55:44
OpenALでサウンドプログラムを組んでみたいんだけど入門的なサイトって無いだろうか?

286 :デフォルトの名無しさん:2006/11/05(日) 00:01:03
linuxでC言語使ってサウンドプログラミングやってます。
録音したデータにFFTをかけたいんですが、
データの渡し方が分かりません。

http://adlib.rsch.tuis.ac.jp/~akira/unix/ossprog/src/short/parrot.c
録音は↑のプログラムをベースにしています。
どなたかアドバイスをお願いします。
説明不足だったらすみません。


287 :デフォルトの名無しさん:2006/11/05(日) 00:14:45
>>286
> linuxでC言語使ってサウンドプログラミングやってます。
> 録音したデータにFFTをかけたいんですが、
> データの渡し方が分かりません。

ここで聞くような内容じゃないだろ。
プログラム初心者板にでも行った方が幸せになれる。

288 :デフォルトの名無しさん:2006/11/05(日) 00:25:33
read したとき bufに指定のフォーマット、サイズで
データが納まってるのでそれを処理すればよい。

289 :デフォルトの名無しさん:2006/11/05(日) 01:01:41
>>287
すいません。

>>288
ありがとうございます。
解決しました。


290 :デフォルトの名無しさん:2006/11/05(日) 02:00:31
あるmp3のファイルの波形データをサンプリングするフリーソフトってありますか?
time WavAmp
1   1.235
2   -0.256
3   8.242
4   -0.319


みたいな感じで、テキストデータに保存できるソフトです

291 :デフォルトの名無しさん:2006/11/05(日) 02:12:00
>>290
質問する板が違います
二度と来るな

292 :デフォルトの名無しさん:2006/11/05(日) 02:13:06
またきちゃいました(>_<)
質問する板ってどこ?

293 :デフォルトの名無しさん:2006/11/05(日) 02:41:50
>>292
自分で作ればこの板でおk

294 :デフォルトの名無しさん:2006/11/05(日) 03:12:10
>>293
実は自分でもジャンルがよく分かってないんです。
フーリェ変換や波形分析するのはここのスレの人なのかなって
スレ一覧見て思ったので聞いてみたのです。
完全体セルの「笑えよベジータ」って声があるんだけど、それをフーリェ変換したら
どうなるのかなと思ったもので。

フーリェ変換のプログラムは持っているので、
あとは時間きざみごとの波形データが数値として取れれば…

295 :デフォルトの名無しさん:2006/11/05(日) 03:18:53
>>294
wavか何かに変換すればいいんじゃね?

296 :デフォルトの名無しさん:2006/11/05(日) 03:51:06
>>295
wavに変換すれば解析可能なソフトがあるってことですかね?
何しろ、サウンドプログラミングはズブの素人なのです。

確か、数秒のファイルでもwavにすると500KBくらいになりますよね。
プログラムのソースで500KBって結構なデータ量になります。

音楽データにどのような情報が入っているのかは分からないのですが、
ただ、欲しい情報は「波のきざみ幅」と「きざみ幅ごとの振幅」の
二つのデータなのです。

単純に波の振幅と刻幅を抽出するソフトがあれば紹介してもらいたいのです。
プログラム板一覧を見て、このスレの人なら知ってる人がいるのかなと思って質問しました。

297 :デフォルトの名無しさん:2006/11/05(日) 03:59:53
ソフトウェア板辺りで質問スレ探すかLinux板で同系列のスレ探しなさい。


298 :デフォルトの名無しさん:2006/11/05(日) 04:02:59
了解しますた。

299 :デフォルトの名無しさん:2006/11/05(日) 19:18:27
フリーソフトを使う事をプログラミングだと思ってるのか

300 :デフォルトの名無しさん:2006/11/05(日) 22:32:01
>>299
バイナリから直に数値データって取れんの?

301 :デフォルトの名無しさん:2006/11/05(日) 22:59:31
>>300
普通に取れるけど、取れても取れなくても、
フリーソフトを使う事をプログラミングとは言わない。

302 :デフォルトの名無しさん:2006/11/06(月) 12:40:47
>>301
普通ってどうやるの?

303 :デフォルトの名無しさん:2006/11/06(月) 13:06:21
>>302
普通にバイナリファイルを読み込めばいい。
バイナリファイルの読み込み方はスレ違い。初心者スレにでも池。
音声ファイルのフォーマットが知りたければぐぐれ。

304 :デフォルトの名無しさん:2006/11/06(月) 13:20:44
>>303
どの言語がお勧め?

305 :デフォルトの名無しさん:2006/11/06(月) 13:45:23
>>304
日本語でおk

306 :デフォルトの名無しさん:2006/11/06(月) 14:00:48
>>304-305
吹いたw


307 :デフォルトの名無しさん:2006/11/06(月) 14:28:46
>>303
ほんとに知ってて言ってるのこの人?

308 :デフォルトの名無しさん:2006/11/06(月) 14:39:36
>>294
ソフトを自分で作ってやるなら
1、とりあえずMP3ファイルを 16bitWAV形式に変換して保存しよう(ツールは探してね)
2、WAV形式のファイルをバイナリでオープンして、(RIFF+チャンク)で検索してデータを取り出そう
3、かけたいFFTのサイズ以下になるように窓関数をかける -->判らなければ検索してね
4、FFTをかける(ステレオなら2変数を複素FFTでやる方法を使うといいよ)
5、周波数成分毎に絶対値を出しそう
  FFTは周波数は比例軸で出るので、大抵は対数軸にしたいと思うので、ココがまあキモになるね

309 :デフォルトの名無しさん:2006/11/06(月) 14:51:08
で、たぶん >>294のやりたいのは
短時間FFTを使って ソノグラム表示もどきをやりたいのだと思う

310 :デフォルトの名無しさん:2006/11/06(月) 15:12:33
>>309
短時間FFTはなにかまずい?

311 :デフォルトの名無しさん:2006/11/06(月) 15:26:54
>>308
あ、ありがとうございます。
これで作業の方針をきめられそうです。

御迷惑お掛けしました。
ありがとうございました。

312 :デフォルトの名無しさん:2006/11/06(月) 16:03:51
>>310
まずくはないよ。
等Qの特性で分割して表示したいとか言い出すと、短時間FFTだと逆にメンドクサイだけで

313 :デフォルトの名無しさん:2006/11/06(月) 17:24:35
OpenALのプログラムを勉強したいのですが初心者にも参考になるサイトはありませんか?
環境はOSがWindows2000,IDEはVisualStudio2003です。
まだOpenALのSDKは入れていないのでそのあたりから解説してくれているサイトであると助かります。

314 :デフォルトの名無しさん:2006/11/06(月) 17:26:21
ググレカス

315 :デフォルトの名無しさん:2006/11/06(月) 17:31:40
オープンソースだからソース見ればいいよ

316 :デフォルトの名無しさん:2006/11/10(金) 16:31:33
WindowsVISTAに移行することを考え、今までのDirectSoundベースで組んできた
プログラムを全てOpenALに以降することを考えています。そこでお聞きしたいのですが、
DirectSoundベースのプログラムはクライアントPCにDirectXがインストールされていれば
ハードウェアだろうかソフトウェアだろうが問題なく音を再生することが出来ました。
これがOpenALに移行するとクライアント側のPCには最低限何をインストールしておく
必要があるでしょうか?またクリエイティブのサウンドカード(EAXをサポートしたもの)、
その他のサウンドカード、オンボードサウンド、で違いというのは生じますか?

317 :デフォルトの名無しさん:2006/11/10(金) 22:49:27
http://www.openal.org/lists.html
公式のメーリングリストで聞けば?

318 :デフォルトの名無しさん:2006/11/28(火) 01:48:49
a.midとb.midを同時再生するプログラムを書きたいのですが、
変数を二つ用意しても、二つ目を再生するところで
「指定したMIDIデバイスは既に使用されています。開放されるのをまってください」
という警告が出てしまいます。

mmsystem.hを使う方法で解決策はないでしょうか。

319 :デフォルトの名無しさん:2006/11/28(火) 02:11:07
>>318
MIDIデバイスを二つ用意したら?

320 :デフォルトの名無しさん:2006/11/28(火) 02:16:24
>>319
MIDIデバイスを二つ用意とはどのようにすればよいのでしょうか?
ハード面でということですか?
環境としては、PCにMIDIインターフェースをつなぎMIDI音源で音を鳴らしてます。


321 :デフォルトの名無しさん:2006/11/28(火) 03:51:29
>>320
まず環境を書け。
使ってる言語、OS、再生に使用してるライブラリ、最低このくらいは質問時に書いとけ。
それとデバイスの意味がわからないならそこから調べ直せ。

MIDIはWAVEと違って同一デバイスに複数ストリームを流せないから、
MIDIOUTが2ポートあるデバイスで、例えばSC88なりに別々に流すしかない。

322 :デフォルトの名無しさん:2006/11/30(木) 23:47:20
実験音楽的に、二つのmidiをマージしたいって事では…?

323 :デフォルトの名無しさん:2006/12/01(金) 00:35:28
まぁそれだったら流す前に自分でトラックをマージしちゃえばいいだけのことだけどね

324 :デフォルトの名無しさん:2006/12/13(水) 02:15:53
windows系ですけど、
MM_WOM_DONEなどのメッセージ処理中はwaveOutWriteとか使えないって記述をたまに見るんですけど実際どうなんですか。

325 :デフォルトの名無しさん:2006/12/13(水) 07:45:02
windows系といっても色々。
昔は割り込み=コールバックだったり
タスクスイッチされてなかったりと

326 :324:2006/12/14(木) 03:35:29
とりあえず95以降。
95で大丈夫ならその後でも大丈夫な気がするんですけど。

327 :デフォルトの名無しさん:2006/12/14(木) 10:05:40
>>326
95は2000やXPとは根本的に別モノ。

328 :デフォルトの名無しさん:2006/12/14(木) 13:05:50
95, 98, Me は MS-DOS だと思った方がいいぞ。馬糞にホイップクリーム。

329 :デフォルトの名無しさん:2006/12/14(木) 18:00:56
アルゴリズムの質問なんですがここでいいですかね?
オーディオストリームのピークホールド処理(過去nサンプル中の最大値を出力)を作っているのですが、
一番安直と思われる方法=過去nサンプルをバッファしといて毎フレームでバッファ内を全サーチ
という方法で作ったところ、ちょっと重いです。高速な方法はないでしょうか。

330 :デフォルトの名無しさん:2006/12/14(木) 18:26:50
>>329
1.過去の最高値と今の値を比較し、今の値が高ければ最高値を更新し、カウンタを0に
2.カウンタをインクリメント
3.カウンタが一定値を超えたら、過去nサンプル中の最高値を検出し、カウンタをそこからの値に

ってやりかたはどう? nの値によっては比較回数が減るよ。

331 :デフォルトの名無しさん:2006/12/14(木) 18:53:14
>>330
おー、なるほど、すばらしいです。
聞いてよかった。早速試してみますー

332 :デフォルトの名無しさん:2006/12/14(木) 22:04:56
>>330
ご報告、
入力波形の傾向によっても負荷の具合が変動するってことになりますが
平均して初めの方法よりかなり速いです。まじありがとうございます。

333 :デフォルトの名無しさん:2006/12/14(木) 23:09:33
>>330-332
それならば「最高値」を2つ持つようにすればどうだ?
それぞれA値・B値と呼ぶことにする。

1.A値と今の値を比較し、今の値が高ければA値を更新し、カウンタを0、B値を0に
2.カウンタをインクリメント
3.B値と今の値を比較し、今の値が高ければB値を更新、カウンタの値を記憶
4.カウンタが一定値を超えたら、記憶しておいた値に更新、A値にB値を代入し、B値を0に

334 :デフォルトの名無しさん:2006/12/14(木) 23:10:48
すまん間違えた。
4. を修正

4.カウンタがnを超えたら、(n-記憶しておいた値)に更新、A値にB値を代入し、B値を0に

335 :デフォルトの名無しさん:2006/12/14(木) 23:12:00
ん、なんか微妙に違うかもしれない。
ともかく、1位だけじゃなく2位も記憶しておけばいいんじゃないかってことだ。

336 :デフォルトの名無しさん:2006/12/14(木) 23:54:00
>>333
試してみるまでもなくダメっぽいな・・・

337 :329:2006/12/15(金) 00:04:49
1位の期限が切れたとき、途中で保存しておいた2位を新しい1位とするみたいな感じですよね?
実はじぶんもそうゆうの考えたんですがね、ややこしくてあきらめちゃったんですよね。
そう簡単にはいかなかったような・・・

これって一見とても単純な処理なのに、速いアルゴリズム考えようとすると、
思いのほかアレ?て感じゃありません?
だから330の即レスはけっこう目からうろこですた

338 :デフォルトの名無しさん:2006/12/15(金) 01:17:37
2位なんているの?
ビデオのメーター見てても2秒毎にリセットしてるだけだよ。

339 :デフォルトの名無しさん:2006/12/15(金) 02:15:13
本人が満足するのが一番の解でYO

340 :329:2006/12/15(金) 02:17:36
メーターだったらそんな感じで十分なんでしょうけど、リミッター作ってるとこでして。

341 :デフォルトの名無しさん:2006/12/15(金) 10:36:30
WAVデータのサンプリング変換って、どーやりますか?
例えば、11025で8ビットのものは、1バイトの音声データの羅列で、
22050で16ビットのものは、2バイトの音声データの羅列で、
22050は、11025の2倍だから、22050を11025にするには、
out[0] = in[1];
out[2] = in[5];
out[3] = in[9];

とやってくだけでOKだと思った。
が、音がザーザーです。


342 :デフォルトの名無しさん:2006/12/15(金) 10:49:48
>>340
メーターだとこんなやり方もある。
あなろぐ VU メーターっぽい動き。リミッターにも使えるんじゃない?
過去のpeakを減衰させて現在値と比べる方法。
peak = peak * 0.999; // peak = max(peak-k, 0) でもなんでもいい。減衰するように。
peak = max( peak, current_sample);



343 :デフォルトの名無しさん:2006/12/15(金) 10:52:44
>>341
8bit PCM は、ふつー符号無しデータで、0x00が負の最大、0x80が無音、
0xffが正の最大。


344 :デフォルトの名無しさん:2006/12/15(金) 10:52:52
>>341
リサンプリング LPF とかでググってみて。
手を抜く場合には単純に out[0] = (in[0] + in[2]) / 2 とか。

345 :デフォルトの名無しさん:2006/12/15(金) 12:30:44
>>343
いまく行きました。ありがとうございました。
>>344
2バイト値を1バイト値に変換する場合、単に上位バイトを格納すれば良いだけです。
これで、256で除算したことになります。

346 :デフォルトの名無しさん:2006/12/15(金) 12:32:37
>>345
サンプリング周波数 22050Hz のデータから 11025Hz への変換かとオモタ

347 :デフォルトの名無しさん:2006/12/15(金) 12:38:08
>>343
16bitPCMは符合有りなんだっけ?

348 :デフォルトの名無しさん:2006/12/15(金) 12:52:55
22050Hz から 11025Hz にする場合、たんに間引けばいいだけじゃん?
平均取ると何か良くなる?

349 :デフォルトの名無しさん:2006/12/15(金) 13:10:50
>>347
WAVのPCMに関しては、そう。
それ以外の文脈だと、符号有り8bitや符号無し16bitのPCMももちろん使
われることがある。


350 :デフォルトの名無しさん:2006/12/15(金) 16:48:16
>348
それだとエイリアシングノイズ乗るでそ。
344のでも1/2以上のリサンプリングで乗るけど。
詳しくはFIRとかIIRとかで調べてみて。

351 :デフォルトの名無しさん:2006/12/15(金) 17:18:03
>>348
サンプリングレート変換の時はLPFを通して先に高域をカットしなきゃダメ。
中途半端な周波数落としをするときはウェーブレットなんかで補間したほうがノイズが減る。

352 :デフォルトの名無しさん:2006/12/20(水) 14:26:55
FIRフィルタ(ローパス/ハイパス)のインパルスを
カットオフ周波数をパラメタとしてリアルタイムで生成したいんですが、
どこかにcコードサンプルとかないでしょうかね?
数学を理解して自分で書くのは無理そうでして・・・

353 :デフォルトの名無しさん:2006/12/20(水) 21:48:52
>>341
幾何学的な手法なら、三次曲線で補完とか、ガウシアンフィルタかける方法もあるぞ。

354 :デフォルトの名無しさん:2006/12/21(木) 00:15:30
>>352
sinc関数  sinc(x)=sin(x)/(x) にあなたの好みの肩特性の窓関数をかけるだけ
だが、あなたの好みが判りません。

355 :デフォルトの名無しさん:2006/12/21(木) 00:16:19
>>353
結局全て LPFなのさ

356 :デフォルトの名無しさん:2006/12/21(木) 01:54:43
>>354
そんなにシンプルな感じなんですか?
でもすいません、sincだけでは意味がわからないです・・・
xはなんでしょう?どこでフィルターの種類やカットオフはどこで決まるのでしょう。
窓はhammingでよいかと思います。

357 :デフォルトの名無しさん:2006/12/21(木) 07:05:28
判ったよ。手取り足取り教えてくれというわけだ。
sincは検索用のキーワード これで検索しろって意味だ

w:=2*π*f0/fs として
xが0でなければ sin( x * w) /x xが0の時 w
xを整数で±の窓関数の範囲で、窓関数を掛け算

で,ゲインがπあるから、それは除算するし、窓関数のゲイン分も掛け算すると

358 :デフォルトの名無しさん:2006/12/21(木) 07:14:27
フィルターの種類は、実際に係数を設定してどんな特性になるか見てみりゃいいだろ
理想LPFと理想HPFは 足せばフラット = 1 になるから 中央値以外は符号が反転するだけだ

359 :デフォルトの名無しさん:2006/12/21(木) 10:34:01
>>355
そうなんだけど、フーリエ変換しないでいいからとっつきやすいかな、と。

360 :352:2006/12/21(木) 15:28:35
>>357-358
おしえていただいた内容と、徹夜でネットをしらべまくった結果、
数学はさておき、無事うまく動作するコードが書けました。
思ってたよりシンプルなコードになったので驚きです。
ハイパスはローパス用のインパルス応答の振幅が反転された形になるんですね。
プログラムが生成したインパルス応答からフィルタ特性を解析したところ、特性も良好でした。
どうもありがとうございました。

361 :352:2006/12/21(木) 21:24:16
すいません、ハイパスについては間違えてたみたいですね・・・

362 :デフォルトの名無しさん:2006/12/21(木) 23:33:28
サンプリングレートが44100/1secだとすると、この場合の1sec/44100の単位はなんて呼称すれば良いんでしょうか

363 :デフォルトの名無しさん:2006/12/21(木) 23:55:15
1sec/44100 → (1/44100)秒

364 :デフォルトの名無しさん:2006/12/22(金) 01:01:27
sec per samplingrate?

365 :デフォルトの名無しさん:2006/12/22(金) 01:48:01
いちサンプル

366 :デフォルトの名無しさん:2006/12/22(金) 03:34:30
sample per rate

367 :デフォルトの名無しさん:2006/12/22(金) 07:19:21
>>361
もう判ったと思うけど 中央の係数のみ 1-a の関係になって、他の係数は負数にすればいいだけ

368 :デフォルトの名無しさん:2006/12/22(金) 13:42:29
ASIO SDKのhostサンプルがシンプル過ぎるのもどうかと思う今日この頃。
やっと音が出た…orz

369 :369:2006/12/23(土) 22:12:57
なんかディスクI/Oが少しでも集中すると再生が途切れる…。
やっぱりスレッド使って処理を分けないとダメか。

370 :368:2006/12/25(月) 10:56:31
なんか適当にスレッド作って
読込処理を非同期にして
少し多くバッファリングしたら
飛ばなくなった。

出来たプログラムはwavの非圧縮PCMしか
再生できないけどなんだか嬉しい。

371 :デフォルトの名無しさん:2006/12/25(月) 22:03:51
ゲームに関して何だけどPCにマイクを接続して喋ってるんだけど
EAXを使ったゲームを起動するととたんに俺のヴォイスにエコーが
かかるようになる。どうもそのPCゲームがEAXを使っているとそれに
つられてマイク入力の音声にもエコーみたいな効果が強制的に
かけられてしまうらしい。これって現状仕方がないことなん(´・ω・`)?

372 :デフォルトの名無しさん:2006/12/26(火) 00:08:53
>>371
板違い。

373 :デフォルトの名無しさん:2006/12/26(火) 02:36:50
>>372
ゲーム系のサウンドプログラムもこのスレの範疇かと。

374 :デフォルトの名無しさん:2006/12/26(火) 05:49:50
サウンドプログラム? どこが?
ゲームの設定かOSの設定だろ?

375 :デフォルトの名無しさん:2006/12/26(火) 07:49:50
>>371
ゲーム作ってるの?

376 :デフォルトの名無しさん:2006/12/26(火) 10:06:05
>>371
非サラウンド環境でEAXを使ったら、そらエコーがかかっただけみたいになるがな。

377 :デフォルトの名無しさん:2006/12/26(火) 15:12:35
>>371
クリエイティブのサウンドカードだろ?
仕様だ。

市場を一社独占させるとどうなるかの好例だな。

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

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)