わさっきhb

大学(教育研究)とか ,親馬鹿とか,和歌山とか,とか,とか.

座長のjsのwavファイルの作り方

  • オリジナルのwavファイルを追加しました.
座長のjs,2010年2月バージョン完成 - わさっき

作り方を残しておきます.

構想する

長いこと,座長のjsを研究室で使うときのベルには,学会たいま〜 座長の友からダウンロードできる,zacho100.lzhに収録*1のchime1.wav, chime2.wav, chime3.wavを使用してきました.github登録時には,このファイルを置かないように配慮していたものの,やがて,自分なりのベルの音を作って座長のjsに同梱したいと思うようになりました.
さてどうやって作るか…候補は3つ.

  • 音を鳴らすプログラムを書く.
  • 音を鳴らすGUIアプリケーションで作る.
  • 計算機の外で音を鳴らして録音する.

前二者は計算機上のみで行え,きれいな音ができあがると期待したのですが,いろいろ調べたものの,今の自分の技量では困難なことが分かりました.そこで「録音」することにしました.

録音する

自宅常用のデスクトップPCで行います.マイクは,買いました*2

【2006年モデル】ELECOM ノートパソコン用マイクロフォン MS-STM95

【2006年モデル】ELECOM ノートパソコン用マイクロフォン MS-STM95

録音と,調整のためのソフトウェアは,かつてよく使っていた,Audacityを採用しました.1.3.11がWindows 7の暫定サポートということで,こちらをダウンロード.インストールしたところ*3,C:\Program Files (x86)\Audacity 1.3 Beta (Unicode)というフォルダーに入りました.
あともう1つ,「音を鳴らす道具」ですね.かつて寝室に,ハンドベルを立てて状態で置いていた時期がありました.妻に尋ねると,娘が触らないようにと別のところに移動させていたようで,使わせてもらうことにしました.なかなかいい音です.「E」と書かれているので,ミの音ですか.
ここまでハードとソフトの準備をして,某日の朝4時ごろに,録音しました.1回だけ「リン!」と鳴らすのは難しく,できたとしても今度は音量が小さくなります.音量についてはあとで増幅させるとして,何回か打って記録して,ダメなものは捨てていき,まあまあ良さそうな音を録りました.

加工する

Audacityでいろいろ加工します.
まず,いらない時間帯を取り除きます.マウスのドラッグ操作で,不要な範囲を選択し,編集(E)>削除(D)とします.そのうち,Ctrk+Kのショートカットを使うようになりました.
次は増幅です.エフェクト(G)>増幅...を選ぶと,増幅率は自動計算してくれるので,OKを押すだけでした.
この状態で,Ctrl+Aで全範囲を指定してから,マウスで再生ボタンを押してみます.ふむふむ.Shiftキーを押しながら再生ボタンだと,止めるまで何度でもリピートします.ほおほお.
ひとまず保存.これをもとに,「ベル1回(1鈴)」「ベル2回(2鈴)」「ベル3回(3鈴)」のwavファイルを作りましょう.その前に少し検討.1個のwavファイルを作って,2回や3回はその回数だけ鳴らすという方式にすると,ファイルサイズを減らせますが,その一方で座長のjsに手を加える必要がありますので,見送りました.
新規にトラックを作ろうとして,ファイル(F)>新規(N),またはCtrl+Nでは,新たなウィンドウができてしまいます.そうではなく,トラック(T)>新しく追加(N)>ステレオトラック(S)とします.そして好みの位置に,先ほど作った音声データを貼り付けます.貼り付け位置の太い縦線は,クリックすると消せます.複数のトラックがあると何かと厄介なので,もともとの音声データは,トラックの左上の×印を押して消します.
各音声データは,1秒,2秒,3秒とすることにします.「ひとまず保存」の音声はおおよそ0.8秒です.残りの0.2秒程度は無音としたいのですが,トラックをいじるだけでは,時間を延ばせません.参ったな….
無音区間を追加することで,解決しました.まず先ほどと同じく,トラック(T)>新しく追加(N)>ステレオトラック(S).そして,生成(G)>無音を選びます.時間は00h00m01sにします.
これでできた無音区間をコピーし,時間を延ばしたいトラックの後ろにペーストします.無音トラックは削除します.元のトラックの結合部の縦線をクリックして取り除き,不要な区間を選択して削除します.
改めて,1回再生とリピート再生.よし,これでいいでしょう.

縮減する

あ,ダメだ.ファイルサイズが大きすぎます.3秒ものは530kバイトもあります.たしかサイズは時間のほか,周波数と,ビット数と,ステレオかモノラルかで決まるはずでしたね.
Audacityでも調整できるのでしょうが,ちょっと自信がないし,再現性も保証できません.ここでまた過去の記憶にたどります.この種の調整をしてくれるCUIコマンドがあったはず.soxだっけ.Cygwinを立ち上げてwhich soxは「sox not found」.うーん,Webで調べると*4,ありました:SoX - Sound eXchange | HomePage
「MS-Windows executable」からsox-14.3.0-win32.zipというのをダウンロードして,中身を見てみると,cygwin1.dllなんてのが入っています.どうやらCygwinのアプリケーションのようです.sox.exeとcyggomp-1.dllを/usr/local/binにコピーして,他のファイルは使わないことにしました.
変換で指定するオプションで試行錯誤したのですが,結論だけ.

sox -V -t wav chime_before.wav -t wav -r 22050 -b 8 -c 1 chime_after.wav

元のファイル(chime_before.wav)は,44100Hz,16ビット,ステレオでしたが,このコマンドでできるファイル(chime_after.wav)は,22050Hz,8bit,モノラルとなり,座長の友同梱のwavファイルと同じ質になりました.ファイルサイズは,1秒ものが22k,2秒ものは44k,3秒ものは66kです.zacho100.lzhのchime3.wavは82kで,小さくできました.

再生する

作った3つのファイルの名前をchime1.wav, chime2.wav, chime3.wavに変更し,座長のjsの開発版のディレクトリにコピー.
そして再生…うーん,ベルじゃなくて,チャイムだなあ.
ところで「ベル」と「チャイム」,どっちが正しいのでしょう? 座長の友の1.00では「ベル」,2.00では「チャイム」と表記しています.音はチャイムと言うよりはベルです.個人的な学内外の経験としては,「ベル」という表現のほうが親しみがあるのですが.
それはそれとして,作ったwavファイルを,修正版のHTMLファイルとともに,githubへpushしました.

今後は?

実は,2種類の「ベルのセット」を構想していました.一つは上述の,「1回だけ鳴らすベル」.もう一つは,「じりりりり」というタイプのベルです.
「じりりりり」タイプも,ハンドベルを掻き鳴らして録音し,1秒から3秒まで,ファイルを作りました.1サイクルは,0.6秒鳴らして0.4秒が無音です.でもリリースしたいという品質ではないし,従来からこれへの変更方法を考える必要があるのでした.
ということでこの件,今後の課題としたいと思います.

*1:zacho200.lzhを解凍してみたところ,wavファイルが見当たりません.exeファイルに含まれている,ということなのでしょうね….

*2:イヤホン延長コードも購入して,接続しました.

*3:言語は,インストール時点はEnglishです.初回起動時に「Nihongo」がデフォルトで出てきて,これを選べば日本語表示となりました.

*4:google:sox]で調べると,大失敗.[Google:sox wavで,日本語の検索でも上位に見つかりました.