• 締切済み

WAVEファイルが音飛びする?

純音の WAVE ファイルを作りたいのですが、 作った WAVE ファイルを Win2000 + Windows media player ver 7.01 で 再生すると、純音は聞こえるのですが音飛びします。 視覚エフェクト->スモークライン では音飛びしている間も 波形が出ているように見えます。 原因はなんなのでしょうか? 波形データは、↓のプログラムで作りました。 周波数やボリューム、時間を変えても音飛びする間隔が変わるだけです。 ------------------------- rate = 48000; freq = 1000; time = 48000; volume = 64; for(i=0;i<time;i++){ value[i] = (short)(sin((double)freq*2*M_PI*i/rate)*volume); }

みんなの回答

noname#30727
noname#30727
回答No.1

式は間違っていないように見えます。 このプログラムのように1秒などの短いデータを作成して、ループ再生させているのですか?メディアプレイヤー7のループ再生はキレイに繋がらないから、他のツールで試してみると良いかもしれません。

cherry_moon
質問者

お礼

ご確認ありがとうございます。 違うところに問題があるようでした。 お騒がせしてすいませんでした。 確かにループのつながりは悪いですよね。 かと言ってフェードインフェードアウトさせると、 ローパスフィルタ通さなきゃいけなくて面倒ですよね。 そのへんは我慢します。

関連するQ&A

  • WAVEファイルの編集について

    動画の音ずれを補正する便利なソフトとして、「Wave Replace」や「Wave Time Control」というソフトがありますが、先日、動画の音ずれ補正のために動画から音声をWAVEファイルとして吸い出して、「Wave Replace」と「Wave Time Control」で読み込んだら、どちらもなぜか読み込めません。 OSはVistaです。互換モードで実行してみても無理でした。 WAVEファイルの情報です。 「完全名称」 フォーマット:WAVE サイズ:18.6MB 長さ:46分28秒 ビットレート:56.0kbps 「オーディオ」 フォーマット:MPEG Audio バージョン:version2 プロファイル:Layer 3 ビットレートモード:Constant ビットレート:56.0Kbps チャンネル:2 サンプルレート:24.0KHz 以上です。 詳しい方、アドバイスよろしくお願いします。

  • LTspiceの変数の定義

    LTspiceでトランジェント解析を行っており、終了時間を指定する時に、波形二つ分のシミュレーションを行いたいと考えています。通常であれば周波数の逆数を自分で計算して値をstop timeに打つと思うのですが、周波数を振ってシミュレーションを行う為、いちいち打ち直すのが面倒です。 Hspiceでは .tran '1/freq' .param freq=100k と変数で定義していたのですが、LTspiceでは上手くいきません。 LTspiceでも正弦波を定義するところでは SINE(1 0.1 '{freq}*2') で認識してくれたのは確認しました。 stop timeで、変数の計算をする方法は何かありませんか?

  • ●MP3ファイルを編集したい!!

    flashで、音を入れたいのですが、自分が持っているMP3ファイルを編集して、 利用したいのです。 WAVEファイルのボリュームレベル調節や音質補正など ができる音声波形編集ソフト「Sound Engine」は持っているんですが、 MP3ファイルの編集ソフトか、MP3ファイルをWAVEファイルに変換する ソフトが欲しい(できればフリーのもの)のですが、教えて戴けませんか? 宜しくお願いします!!!!!

  • Matlabでsinカーブを作成の方法(合成して)

    毎度お世話になります。 sin波形の描き方について、教えてください。 最初の1サイクルの波形はsin(2*pi*f*t)で描き次のサイクルの 波形はsin(2*pi*2*f*t)と言う様に、サイクルごとに周波数が 増加する関数をつくり、plot(t,y)で描画したいのですが、 その技法がわかりません。 下記は、途中のプログラムですが、考え方が まったく間違っている様です(無視してください) ーーーーーーーーーーーーーーーーーーーーーーー %draw sweep wave t1=0:pi/16:2*pi;  y1=sin(t1); ;----- t2=2*pi:pi/16:4*pi; y2=sin(t2); ;----- t=t1::t2;  ;t2をt1の後に連結したし y=y1::y2; ;y2をy1の後に連結したし plot(t,y);

  • javaで三角波を合成

    javaでbyte配列を使って for(int i=0;i<triangle_wave.length;i++){ double s=0; for(int j=0;j<=2;j++){ double a = (2*j+1)*i*F0*Math.PI*2/Fs;(Math.sin((2*j+1)*i*F0*Math.PI*2/Fs)/(Math.pow((2*j+1),2)))); s += (double)(Math.pow((-1),j)*(Math.sin(a)/(Math.pow((2*j+1),2)))); } triangle_wave[i]= (byte)(110*8*s/(Math.pow(Math.PI,2))); } AudioFormat format = new AudioFormat((float)Fs,16,1,true,false); InputStream bytefile = new ByteArrayInputStream(triangle_wave); File file = new File("test.wav"); AudioInputStream inputstreem = new AudioInputStream(bytefile,format,wave.length); AudioSystem.write(inputstreem,AudioFileFormat.Type.WAVE,file); のような感じで三角波を作ったのですが、これをwavファイルに出力してSonicVisualiserでスペクトルを見ると基本周波数が出てきません。これはどうしてでしょうか? また、量子化ビット数を16から8にするとスペクトルに基本周波数が出てきます。量子化ビット数を2倍にすると周波数も2倍になるということなのでしょうか?

  • C#の動的配列について

    こんにちは。今C#でMIDIファイルを解析するプログラムを開発しているのですが、 ファイルからトラック別の音符情報を読み取ってソートするのに結構な時間がかかるのです。 データをソートするのにいちいち別のクラスに全部コピーしてるせいだと思うのですが、データをコピーせずにソートする方法はあるのでしょうか。(もしくは、もっと早い方法) //絶対時間、周波数、フラグ:1=発音 0=消音 ArrayList _time = new ArrayList(); ArrayList _freq = new ArrayList(); ArrayList _flag = new ArrayList(); ~中略~ ~↓本体の一部~ switch (lastStates & 0xF0) { case 0x80: // 音を消す case 0x90: // 音を鳴らす double hz = base_frq * Math.Pow(2.0, (d[addr + 1] - 69) / 12.0); //音の周波数 _freq.Add(hz); _time.Add((long)time);//time=算出した絶対時間 if (d[addr + 1] != 0x0 && (lastStates & 0xF0) == 0x90) _flag.Add(1); else _flag.Add(0); break; ~中略~ musicData[] list = new musicData[_time.Count]; for (int i = 0; i < _time.Count; i++) { list[i] = new musicData((long)_time[i], (int)_freq[i], (int)_flag[i]); } Array.Sort(list);//時間で並べ替え ~中略~ class musicData : IComparable<musicData> { public long time; public int frq; public int flag; public musicData(long time, int frq, int flag) { this.time = time; this.frq = frq; this.flag = flag; } int IComparable<musicData>.CompareTo(musicData other) { return this.time.CompareTo(other.time); } } ソースは以上です。よろしくお願いします。

  • 周波数応答関数の計算

    打撃実験を行って解析するのですが下記のプログラムが分かりません。 [IIw,Mag,Phi,Q,Q]=textread(fnm,'%f %f %f %f %f','headerlines',3); IIxf(:,n)=complex(Mag.*cos(Phi*pi/180),Mag.*sin(Phi*pi/180)); 読み込んだファイルの内容が Np Nc / Freq Hm Ha Coh XPwr 6401 5 0 11.8941 0 0.938239 1.78076E-006 1 27.7519 130.402 0.915975 2.26936E-008 2 3.95322 -38.8943 0.973454 1.64854E-008 . . 一列目が周波数と思います。2列と3列が何か分かりません。 また、IIxfは周波数応答関数だと思うのですがどの公式を用いているのでしょうか?

  • WAVE形式からMPEG-2用MP2にするフリーのソフト?

    DVDvideoをmpeg2形式にしたいと思っています(四苦八苦してます^^;)。 今参考にしている説明によると、DVDvideoから動画と、音声のwaveファイルを別々に抜き出して(ドルビーデジタル(AC3)をWAVに変換しながら分離)、waveファイルをTMPGEnc Plus(有償板)をつかって、MPEG-2用MP2に変換、それから動画と再結合という流れだということなのですが、この音声wave→mp2の作業の部分をTMPGEnc Plus以外でできるフリーソフトって存在するのでしょうか? また、MPEG-2用MP2はサンプル周波数48kHz,ビットレート384kbps、とありますが、このとおりに変換できれば、どんなソフトで変換したものであれ、動画と再結合して問題ないでしょうか(結合したファイルはちゃんとmpeg2標準?になっているでしょうか?) 詳しいかたおられましたらご教授お願いいたします。

  • オーディオインターフェース入力時のクリップについて

    EDIROL UA-20という少し古いオーディオインターフェースを使用しています。 他のI/Oと比べたわけではないのですが、気になっている事があります。 外部音源などの音を取り込む時、かなり音源側のボリュームを絞っておかないと、I/Oでクリップしてしまうのです。 I/OからPCに取り込んだ音も非常に小さい波形なので、波形編集ソフトについているコンプレッサーやボリュームを上げるエフェクトなどで、PC側でボリュームをその都度上げています。 外部音源で音を作っている時はそれなりに音圧を感じられるのですが、 この録り方でI/Oを通してPCでレベルを上げると、音源で作った音の雰囲気や音圧が大分違う印象に聴こえ、困っております。 無知で申し訳ないのですが、I/Oによって、入力時のクリップするレベルの限界(分かりづらくてすいません)が違ったりするのでしょうか? モバイル出来る小ぶりなもので、そういう条件に合った製品があれば、買い替えも検討しております。

  • .mldファイルの音が出ない

    .mldファイルの音が出ない .flv動画から音声を抽出して携帯の着メロを作りたいんですが音が出ないので教えて下さい。携帯はD905iを使用しております。 まず.flv動画を.aviに変換し、音声(.wav)を抽出しました。 Wave to .mldコンバータというソフトで.wavファイルを.mldに変換するため、下記のように.wavファイルをサンプリング周波数16000Hz、モノラル16bitに変換しました。変換された.mldファイルをPsmPlayerで再生してみましたが音が出ません。試しにネットに.mldファイルをアップして携帯でダウンロードしてみましたが、やはり再生はされますが音が何も出ません。何が原因なのでしょうか? ■Wave to .mld コンバータ (WMC-MA3-N) Waveファイル(.wav)を.mldファイルに変換するツールです。 ※WMC-MA3-Nで利用可能なWaveファイル(.wav)の条件は下記のものとなります。 フォーマット :PCM(.wav) サンプリング周波数:4kHz ≦ Fs ≦ 16kHz ビット数:16bit チャンネル数:1(モノラル) http://smaf-yamaha.com/jp/tools/nec/tools.html

専門家に質問してみよう