FC2ブログ

--

--

コメント

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

3gatudo

mciコマンドにてステレオ録音をしようと研究していまして、こちらのサイトは大変に参考になりました。お礼かたがた、ちょっとご報告を。

当方のPCの環境におきましては、ご記載の様なmci"set なにがし"設定なしのディフォルト状態での録音でも
44.1kHz・16ビット
になりました。ただしモノラルでした。ですからmciのバージョンによって結果が違う様子です。

さてそこで、こちらのお智恵を借りまして、ステレオの設定をしてみました。するとご記載のスクリプトでは1文字足りない事に気づきました。
Channelの後にsが必要です。

これを踏まえまして、お書きのスクリプトに修正を加えてみました。僭越ですがここにアップします。

;Rec 録音
mci "open new alias rec type waveaudio" ;mci のオープン
mci "set rec channels 2":chn=2 ;録音チャンネル数の設定 (ステレオ)
mci "set rec bitspersample 16":SmBt=16 ;サンプルのビット数を設定 (16 bit)
mci "set rec samplespersec 44100":SmLt=44100;録音チャンネル数の設定
DtSp=44100*2*2 ;データ速度の算出
mci "record rec" ;録音開始
wait 1000 ;10 秒間待って……
mci "stop rec" ;録音停止
mci "save rec "rec.wav"" ;ファイル "rec.wav" に録音結果を出力
mci "close rec" ;mci のクローズ
;Correct ファイル内容の修正。ファイルに上書き。bsaveは変数が必須。
bsave "rec.wav" ,chn,2,22 ;チャンネル数
bsave "rec.wav" ,SmLt,4,24 ;サンプリングレート
bsave "rec.wav" ,DtSp,4,28 ;データ速度
bsave "rec.wav" ,SmBt,2,34 ;サンプルビット数
end

一応、必要なヘッダー情報をすべてbsaveで書き込んでみました。もちろん、バージョンによって不要となるものはコメントアウトしていただければ、と思います。
それでは拍手をクリックさせていただきつつ去ります。
お世話様です。

12

18

02:14

須良

> 3gatudo さま
テストもなしにコードをUpしてしまい、
挙句間違っていたとか、お恥ずかしい限りです……。
本文中の該当する箇所、こっそり修正いたしました。
ご指摘ありがとうございました。

12

18

10:19

このコメントは管理人のみ閲覧できます

02

15

09:26

管理者にだけ表示を許可する

この記事のトラックバックURL

http://s243k.blog65.fc2.com/tb.php/353-e4246ad5

07

15

コメント

mci その3

 さてさて、忘れないうちに記事を上げてしまいましょう。 mci で高音質録音の第3回目。 前回は wav ファイルのどこを変更するかについて述べました。 今回は、実際にファイル内容を変更するためのソースを書いてみたいと思います。

前回までのまとめ

  • CDと同じ音質 (ステレオ16bit、サンプリング周波数 44.1kHz) で録音するには、 mci に set コマンドを送信する必要がある。 (参照)
  • しかし上記で出力される wav ファイルはヘッダに誤った情報が書き込まれているため、Windows Media Player (以下 WMP) などで正しく再生されない。
  • WMP で再生するためには、ファイル先頭から 28 Byte 進んだところの値を 176400 (CD の音質の場合) に書き換える必要がある。 (参照)

データ再生速度の修正

 今回は 「ファイルの先頭から 28 Byte 進んだところの値を変更する」 部分を記述していきます。

 音声を録音した wav ファイルを "rec.wav" とします。 このファイルを開いて、ファイル先頭から 28 - 31 Byte の位置の値を書き換えるソースコードを以下に示します。

*Correct
	datSpeed = 44100 * 2 * 2	 ;データ速度 (前回参照)
	bsave "rec.wav", datSpeed, 4, 28 ;ファイルに上書き
	end

 以上。 意外と簡単に変更できることがお分かりいただけると思います。 念のため解説を加えておきますと、変数 datSpeed はデータ再生速度の値を格納するバッファで、その値は 44100 (1秒あたりのサンプル数) * 2 (サンプル 1 つあたりのバイト数 (16 bit = 2 Byte)) * 2 (録音チャンネル数 (ステレオなので左右計 2 チャンネル))、すなわち 176400 となります。 で、この値を HSP 3.0 標準命令の bsave を用いて "rec.wav" の該当箇所 (先頭から 28 Byte の位置を起点とする 4 Byte のフィールド) に上書きしています。

 これで WMP などで正しく再生できるファイルに修正することができました。 せっかくなので、前々回のコードとあわせて、「mci を用いて CD の音質で録音する」 ソースコードを掲載しておきます。

*Rec	;録音
	mci "open new alias rec type waveaudio"	;mci のオープン
	mci "set rec channel 2"			;録音チャンネル数の設定 (ステレオ)
	mci "set rec channels 2"		;録音チャンネル数の設定 (ステレオ)
	mci "set rec bitspersample 16"		;サンプルのビット数を設定 (16 bit)
	mci "set rec samplespersec 44100"	;サンプリング周波数を設定 (44.1 kHz)
	mci "record rec"			;録音開始
	wait 1000				;10 秒間待って……
	mci "stop rec"				;録音停止
	mci "save rec \"rec.wav\""		;ファイル "rec.wav" に録音結果を出力
	mci "close rec"				;mci のクローズ
*Correct;ファイル内容の修正
	datSpeed = 44100 * 2 * 2		;データ速度の算出
	bsave "rec.wav", datSpeed, 4, 28	;ファイルに上書き
	end

 実はテストしてなかったりするので、間違ってたりしたらこっそり教えてあげてください……。


09.12.18 追記

 3gatudo 様からご指摘。ホントに間違ってました……。 コード 3 行目、mci "rec channel 2" となっていたところ、正しくは mci "set rec channels 2" です。 channels の最後の s が抜けていました……。 ソースコードは修正しました。 いやはや、お恥ずかしい限りです><

スポンサーサイト

3gatudo

mciコマンドにてステレオ録音をしようと研究していまして、こちらのサイトは大変に参考になりました。お礼かたがた、ちょっとご報告を。

当方のPCの環境におきましては、ご記載の様なmci"set なにがし"設定なしのディフォルト状態での録音でも
44.1kHz・16ビット
になりました。ただしモノラルでした。ですからmciのバージョンによって結果が違う様子です。

さてそこで、こちらのお智恵を借りまして、ステレオの設定をしてみました。するとご記載のスクリプトでは1文字足りない事に気づきました。
Channelの後にsが必要です。

これを踏まえまして、お書きのスクリプトに修正を加えてみました。僭越ですがここにアップします。

;Rec 録音
mci "open new alias rec type waveaudio" ;mci のオープン
mci "set rec channels 2":chn=2 ;録音チャンネル数の設定 (ステレオ)
mci "set rec bitspersample 16":SmBt=16 ;サンプルのビット数を設定 (16 bit)
mci "set rec samplespersec 44100":SmLt=44100;録音チャンネル数の設定
DtSp=44100*2*2 ;データ速度の算出
mci "record rec" ;録音開始
wait 1000 ;10 秒間待って……
mci "stop rec" ;録音停止
mci "save rec "rec.wav"" ;ファイル "rec.wav" に録音結果を出力
mci "close rec" ;mci のクローズ
;Correct ファイル内容の修正。ファイルに上書き。bsaveは変数が必須。
bsave "rec.wav" ,chn,2,22 ;チャンネル数
bsave "rec.wav" ,SmLt,4,24 ;サンプリングレート
bsave "rec.wav" ,DtSp,4,28 ;データ速度
bsave "rec.wav" ,SmBt,2,34 ;サンプルビット数
end

一応、必要なヘッダー情報をすべてbsaveで書き込んでみました。もちろん、バージョンによって不要となるものはコメントアウトしていただければ、と思います。
それでは拍手をクリックさせていただきつつ去ります。
お世話様です。

12

18

02:14

須良

> 3gatudo さま
テストもなしにコードをUpしてしまい、
挙句間違っていたとか、お恥ずかしい限りです……。
本文中の該当する箇所、こっそり修正いたしました。
ご指摘ありがとうございました。

12

18

10:19

このコメントは管理人のみ閲覧できます

02

15

09:26

管理者にだけ表示を許可する

この記事のトラックバックURL

http://s243k.blog65.fc2.com/tb.php/353-e4246ad5

ブログ内検索

プロフィール

須良

Author:須良
落ちてるネタを見つけては無駄に実践し、自己満足に浸る暇人。
いい加減、真っ当な生活をすることを考えないといけないと思い始めて久しい今日この頃。しかし、その兆しは一向に訪れる気配なし。
横文字のハンドルネームから漢字文字のそれに変わった様だが、いまだに自分の名前を間違えることが少なくない模様。

ブロとも申請フォーム

Designed by

Ad

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。