オーディオ サンプルは、特定の時点でのオーディオ カーブの高さを定義する単一の数値です。あなたのコード関数では、「沈黙」はオーディオ曲線をファイルからデータ構造(配列)「サンプル」にロードします
sampNum ループは、インデックス値のセグメントをトラバースし、各サンプル インデックスのサンプル値を取得します (getSampleObjectAt) ... 次に、サンプル値を 0 に設定します (setSampleValue) ... サイレンスは正規に値 0 として定義されます
オーディオは通常、1 秒あたり 44100 回サンプリングされます... したがって、getSampleObjectAt によって処理されると私が想定しているマルチチャンネルとビット深度は無視します ... このループは からサンプルを取得します:
(44100*2, 44100 * 4)
これは、2 秒から 4 秒までのサンプル インデックスのリストを生成することを意味します。
目標を達成するには、沈黙の開始点と終了点を指定して、必要な範囲を計算するだけです
goal A - start at second 2 silence for 50 millisec
- start at 2000 millisec until 2050 millisec
- from 2000 millisec to 2500 millisec
start_sample_index = sample_rate * 2000 / 1000
start_sample_index = 44100 * 2000 / 1000
start_sample_index = 88200
end_sample_index = sample_rate * 2050 / 1000
end_sample_index = 44100 * 2050 / 1000
end_sample_index = 90405
疑似コードで(テストされていません)
set_silence_from_to_in_millisec(start_time, end_time, sample_rate, sound_obj) :
start_index = sample_rate * start_time / 1000
end_index = sample_rate * end_time / 1000
for sampNum in range(start_index, end_index):
sample = getSampleObjectAt(sound_obj, sampNum)
setSampleValue(sample,0);
したがって、ゴール A のコールは次のようになります。
set_silence_from_to_in_millisec(2000, 2050, 44100, my_sound_obj)