foo_input_wave_loop (foobar2000 用コンポーネント)


 Latest Release : Ver 1.0 (2 May 2014)

  Download Component

  Download Source Code

  (Free, Distributed under BSD 3-clause License)


 本ソフトウェアは、foobar2000 でループポイント情報を持った WAV ファイルをループ再生するためのコンポーネントです。WAV ファイルの正式な仕様であるループポイント情報のほか、ID3 タグ情報 "LOOPSTART","LOOPLENGTH" にも対応します。

【 注意 】
 foobar2000 本体の WAV ファイル再生用コンポーネントとの衝突を避けるため、本コンポーネントは拡張子が ".wavloop" のファイル(".wav" ではない)に適用される仕様にしています。そのため、ループ再生したい WAV ファイルがあれば、拡張子を ".wavloop" に変更した上でご利用ください。


This software is foobar200 component to play WAV file that has loop point information. This component supports regular loop point and also ID3 tag ("LOOPSTART" and "LOOPLENGTH").

【 Caution ! 】
To avoid the conflict with foobar2000 standard input component, this component is applied to ".wavloop" file, not to ".wav" file. So you need to change the extension of WAV file to ".wavloop" for loop playback.


 動作環境  Recommended system requirements

 本コンポーネントは、foobar2000 v1.3.1 で動作することを確認しています。


This component works correctly in foobar2000 v1.3.1.


 サポートする WAV ファイル  Supported WAV file


 CUE シートによる再生  Playback using CUE sheet

 CUE シートを使って再生するには、次のような書式で CUE シートを作成してください。

================================================================================
PERFORMER "Performer"
TITLE "Title"
FILE "Test01.wavloop" WAVE
TRACK 01 AUDIO
TITLE "Test01"
PERFORMER "Performer"
INDEX 01 00:00:00
FILE "Test02.wavloop" WAVE
TRACK 01 AUDIO
TITLE "Test02"
PERFORMER "Performer"
INDEX 01 00:00:00
================================================================================


 WAV ファイルにループポイントを付加する方法  How to append the loop point to WAV file

(1) "smpl" チャンクをサポートする音声編集ソフトを使用する
    Use the sound editor which support "smpl" chunk

 音声編集ソフト Wavosaur で "smpl" チャンクのループポイントを編集することが可能です。
Wavosaur はこのサイトからダウンロードできます。
  http://www.wavosaur.com


(2) ID3 タグをサポートする音声編集ソフトを使用する
    Use the sound editor which support ID3 tags

 音声編集ソフト Audacity で ID3 タグを編集することが可能です。
Audacity はこのサイトからダウンロードできます。
  http://audacity.sourceforge.net


 (ループポイントの作成手順)
  How to append the loop point by using Audacity


 (1) Audacity を起動後、メニューの「編集(E)」→「設定(F)...」を選択し、「品質」カテゴリーの
   「高音質変換 - ディザリング(h)」を「無し」に設定します。

  ※ ディザリングの設定を「無し」にしなかった場合、WAV ファイルを読み込んだ際にディザリング処理が
   実行されてしまい、音声データが WAV ファイルの編集前後でバイナリ一致しなくなります。

 (2) WAV ファイルを開きます。

 (3) メニューの「ファイル(F)」→「書き出し(E)...」を選択し、ファイル名を入力して「保存(S)」をクリックします。

 (4) 「メタデータを編集」ウィンドウが表示されるので、タグの欄に "LOOPSTART" および
   "LOOPLENGTH" を追加し、それぞれのループポイントの値を入力して「OK(O)」をクリックします。

   "LOOPSTART" にはループ開始位置を、"LOOPLENGTH" にはループする範囲の長さをサンプル単位で入力します。
   例えば 44.1kHz の WAV ファイルにおいて、"LOOPSTART" の値を 441000、"LOOPLENGTH" の値を 882000 に
   設定すると、ループする範囲は 00:10.000 ~ 00:30.000 になります。

 (5) 保存した WAV ファイルの拡張子を ".wavloop" に変更して、foobar2000 のメディアライブラリで指定された
   フォルダに置きます。


 (1) Start Audacity, and Select menu "Edit(E)" -> "Preferences(F)...".
   Select "Quality " category, and set "High-quality Conversion - Dither" to "None".

   ( for guaranteeing the binary consistency of audio data )

 (2) Open WAV file.

 (3) Select menu "File(F)" -> "Export(E)...". Input file name and click "Save(S)" button.

 (4) Window "Edit Metadata" is shown. Then Add Tag "LOOPSTART" and "LOOPLENGTH".
   Input each value (loop point) and click "OK" button.

 (5) Change the the extension of WAV file to ".wavloop" and put it to
   the media library folder of foobar2000.


 著作権,ライセンス条項  Copyright, License terms

 本ソフトウェアの著作権は、諏訪﨑 龍(Suwasaki Ryu)が保有します。
また、本ソフトウェアのライセンスは BSD 3-clause License に基づくものとします。

 * 本ソフトウェアの使用によって発生したいかなる損害についても、作者は一切その責任を負いません。
  (無償 かつ 無保証です)

 * 本ソフトウェアを再頒布する場合には、頒布物に付属する資料に、本ソフトウェアの著作権表示,
  ライセンスの条件一覧,および無保証であることを明記してください。
  本ソフトウェアを改変して再頒布する場合についても同様です。

 ……と難しそうなことを書きましたが、要は著作権表示と foo_input_wave_loop がフリーソフトで
あることを明記して頂ければ、改造も再配布も一切自由で、作者への連絡も不要ということですね (^^)

================================================================================
Copyright (C) 2014, Suwasaki Ryu (slemanique.com)
All rights reserved.

Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:

* Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.

* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.

* Neither the name of the "Slemanique" nor the names of its contributors
may be used to endorse or promote products derived from this software
without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
OF THE POSSIBILITY OF SUCH DAMAGE.
================================================================================


 連絡先 Contact

 作者への連絡先はこちらです。


 変更履歴 Changes


 製作メモ

 foo_input_wave_loop は、WAV ファイルのループポイントに対応した再生用コンポーネントです。1トラックをリピート再生するのではなく、曲の途中の部分だけを繰り返し再生することができます。(用途としては、サウンドトラックの BGM を切れ目なし・エンドレスに再生することを想定しています)その特殊な用途ゆえに、このプラグインを製作するに当たっては、foobar2000 の仕様(?)に泣かされた箇所がいくつか存在します。

 1つは、拡張子が ".wav" のファイルを本コンポーネントで対応できないことです。foobar2000 には、初期状態で WAV ファイル再生用コンポーネント(foo_input_std.dll)がいます。本体の機能と衝突を起こす訳にはいきません。
 foobar2000 本体のソースコードが公開されていないのでアプリの動作からの推測になりますが、ある拡張子のファイルに対応したコンポーネントが複数存在する場合に、どのコンポーネントが再生に使われるかは foobar2000 本体起動時にランダムで決まるようです。どの拡張子に対して どのコンポーネントを適用するのか foobar2000 本体から選択できればよかったのですが、あいにく そのような設定はありませんでしたので、本コンポーネントで対応するファイルを ".wav" 以外にせざるを得ませんでした。
 ということで、本コンポーネントでループ再生したい WAV ファイルがあれば、面倒ですがファイルの拡張子を ".wavloop" に変更して foobar2000 のメディアライブラリのフォルダに置いてください。

 もう1つは、コンポーネントからは再生時間やシークバーの動作を変えられないことです。個人的には、ループ再生する場合であっても再生時間の表示は通常の仕様のままにして、ループポイントに引っ掛かったところで再生時刻やシークバーの表示をループ先頭の状態に戻して …… ということをやってみたかったのですが、foobar2000 SDK の API にはそこまでの機能はないようです。
 ループありの WAV ファイルの再生時間を "1d 0:00:00" と表示しているのは、CUE シートからファイルを再生したときに再生時刻がそのファイルの再生時間を超えてしまうと、そのトラックの再生が foobar2000 本体によって強制的に打ち切られてしまうためです。その問題を回避するために、ループポイントを持った WAV ファイルの再生時間は 24 時間であると foobar2000 に通知するようにしています。丸一日ループ再生したところで切れたら困る、という人は流石に誰もいないでしょう (^-^;

 もし、後日 foobar2000 の仕様が改訂されて そのようなことが可能となる見込みが立ったら、対応したいと思います。もっとも、特殊な要望ゆえに foobar2000 本体が対応してくれるとは思えませんが (^^;

 さて、WAV ファイルのループポイントですが、これも WAV ファイルの仕様としてはあまりにもマイナーすぎるために 対応しているソフトはほどんどありません。Wavosaur がループポイントの編集に対応しているくらいでしょうか。
 そういう現状を見ますと、正式なループポイントの仕様だけに対応するのはあまりにも不親切ですので、本コンポーネントでは ID3 タグによるループポイントにも対応するようにしました。いわゆる「RPGツクール形式」、"LOOPSTART" タグと "LOOPLENGTH" タグによりループポイントを指定する方法です。これなら、Audacity という有名どころのサウンド編集ソフトでループポイントの情報を編集することが可能です。ただし、Audacity の初期設定ではオーディオファイルを読み込んだ時点でデータがディザリング処理されてしまうため、ファイルの編集前後でデータのバイナリが一致しなくなることにはご注意ください。(ディザリング処理を無効にするには、foobar2000 の設定画面で「品質」カテゴリーの「高音質変換 - ディザリング(h)」を「無し」に設定します)

 これで、作者としてはループポイント編集用のソフトを別に作る手間が省けるというものです ( ̄ー ̄;


| Slemanique | Software | foo_input_wave_loop (foobar2000 用コンポーネント) |