У меня есть 10-секундный волновой файл звукового эффекта. Я бы хотел взять этот файл и повторить его n раз, а затем сохранить более длинный WAV-файл на диск. Таким образом, я могу создать гораздо более длительный фоновый эффект, а не автоповтор на медиаплеере, который немного заикается между повторами. Я пытаюсь сделать это на C#.





Это довольно легко сделать, учитывая Формат файла WAV - при условии, что это несжатый звук (большинство файлов WAV - или, по крайней мере, они были в последний раз, когда я имел с ними какое-либо отношение).
Вполне могут быть аудио API, которые вы можете использовать для этого, не застревая в двоичном формате, но я подозреваю, что им потребуется столько же времени, чтобы научиться, как просто делать это самостоятельно, поскольку вы не делаете ничего особенно сложного.
Если вам нужно сделать это только с небольшим количеством файлов, вы можете сделать это вручную с помощью Мужество.
Если вы используете .Net 2.0 или выше, вы можете использовать класс System.Media.SoundPlayer и, в частности, его метод Играть, чтобы добиться желаемого без задержек. Это предпочтительнее создания нового файла wav - это означает меньше места на диске для файла и меньше памяти, необходимой для рендеринга звука. В общем, вы всегда должны использовать такие методы буферизации для воспроизведения звука, если звук будет зацикливаться или длится более нескольких секунд.
Вы можете легко сделать это на C#, используя звуковую библиотеку NAudio .NET. Вам нужно будет использовать классы WaveFileReader и WaveFileWriter. Вы также можете использовать его для создания собственного WaveStream, который будет зацикливать ваш звук столько раз, сколько вы хотите, без необходимости создавать длинный файл WAV.