音声の編集について(カット編集)
LSMPM  2015/11/15(Sun) 19:58
初めまして、お世話になります。

音声データの編集について質問です。

現在音声編集ソフトのようなものを作りたいと考えており、
とりあえずカット編集(一部のみを切り出す)が出来ないかとWaveクラス内のdataをいじってみようとしたのですが、やり方が悪いのかそもそもいじれませんでした。

音声カット編集できる方法があるのかご教示頂けると幸いです。
記事編集
Reputeless  2015/11/16(Mon) 23:52
Wave::operator[index] で、連続したサンプルデータから任意の位置のサンプルを取得できるので、以下のようなコードで Wave の一部のコピーが実現できます。

# include <Siv3D.hpp>

Wave Copy(const Wave& src, size_t from, size_t length)
{
if (from + length > src.lengthSample)
{
return Wave();
}

Wave wave(length);

::memcpy(&wave[0], &src[from], sizeof(WaveSample) * length);

return wave;
}

void Main()
{
// 44100*10 サンプル目から 44100*10 サンプル分コピー
const Sound sound(Copy(Wave(L"Example/風の丘.mp3"), 44100 * 10, 44100 * 10));

sound.play();

while (System::Update())
{

}
}

Wave::resize() 等と組み合わせれば、サンプルの一部削除も可能になるでしょう。

次期バージョンでは
Wave wave(src.begin(), src.begin()+44100, src.samplingRate);
といったように、部分コピーを容易にできる API を提供したいと思います。
編集
LSMPM  2015/11/17(Tue) 00:38
なるほど、このような手順でデータ操作が可能なのですね!とても参考になります、ありがとうございました。

APIでご提供いただけるということであれば、2つのwaveから2つを1つに連結したwaveを生成出来るようなAPIもご検討頂けると非常に助かります。
編集
Reputeless  2015/11/17(Tue) 00:42
ご提案ありがとうございます。編集が便利になる API を検討いたします。
編集
件名
Re: 音声の編集について(カット編集)
名前
コメント
画像添付


投稿修正キー (投稿を修正する時に使います)
画像認証 (右画像の数字を入力) 投稿キー

- WEB PATIO -