AudioStreamGenerator
Ресурс для воспроизведения PCM, создаваемого программой.
Назначьте ресурс AudioStreamPlayer, запустите плеер и получите AudioStreamGeneratorPlayback. Регулярно подавайте стереокадры через PushBuffer; генератор сам не синтезирует звук.
Задайте MixRateMode, исходную частоту и BufferLength до создания playback. Частоту синусоиды определяет ваш фазовый шаг; MixRate задаёт частоту исходных PCM-кадров только в Custom. Микшер может ресемплировать поток к частоте устройства.
Пополняйте очередь по свободному месту, сохраняйте фазу между блоками и следите за GetSkips. Размер очереди не является полной задержкой вывода. Нет основания автоматически снижать частоту только из-за использования C#: измеряйте свой генератор на целевой системе.
Рабочий пример C# и диагностика.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Конструкторы1
AudioStreamGeneratorКонструктор
public AudioStreamGenerator();Создаёт ресурс генератора: Custom, MixRate=44100 и BufferLength=0.5 секунды. Ресурс сам не синтезирует PCM и не начинает воспроизведение; используйте плеер и заполняйте полученный playback.
Свойства3
BufferLengthСвойство
public float BufferLength { get; set; }Желаемая длина очереди в секундах при создании playback. Вместимость округляется кольцевым буфером и не равна точной задержке звукового устройства. Увеличение даёт больше запаса на пополнение, но может увеличить задержку управления. Задавайте до создания playback.
MixRateСвойство
public float MixRate { get; set; }Частота исходных PCM-кадров в секунду только для режима Custom. По умолчанию 44100. Это не частота синусоиды и не принудительная смена частоты устройства. Setter хранит значение без автоматического ограничения диапазоном Inspector: проверяйте конечное положительное число до создания playback.
MixRateModeСвойство
public AudioStreamGenerator.AudioStreamGeneratorMixRate MixRateMode { get; set; }Выбирает частоту исходного PCM: Custom использует MixRate, Output — выходную частоту AudioServer, Input — его входную частоту. Input не включает микрофон и не заполняет очередь его данными. Max — служебная граница enum, не рабочий режим.
Методы6
GetBufferLengthfloat
public float GetBufferLength();Читает настройку BufferLength. Это запрошенная длительность, не фактическая заполненность очереди и не измеренная задержка.
floatНастроенная длительность BufferLength в секундах, не размер очереди в кадрах.
GetMixRatefloat
public float GetMixRate();Возвращает сохранённую пользовательскую MixRate. В режимах Output/Input фактическая исходная частота берётся из AudioServer, поэтому это значение не является универсальным запросом действующей частоты.
floatСохранённая пользовательская MixRate в кадрах/с; действует как источник частоты в Custom.
GetMixRateModeAudioStreamGenerator.AudioStreamGeneratorMixRate
public AudioStreamGenerator.AudioStreamGeneratorMixRate GetMixRateMode();Возвращает настройку MixRateMode, определяющую источник частоты для генератора.
AudioStreamGenerator.AudioStreamGeneratorMixRateТекущий режим выбора исходной частоты генератора.
SetBufferLengthvoid
public void SetBufferLength(float seconds);Устанавливает BufferLength для создания последующих playback. Setter сам не пересоздаёт очередь уже существующего playback. Проверяйте конечную положительную длительность и разумный расход памяти.
| Имя | Тип | По умолчанию |
|---|---|---|
seconds | float | — |
secondsКонечная положительная длительность в секундах. Проверьте её до создания playback; очень большая очередь требует соответствующей памяти.
SetMixRatevoid
public void SetMixRate(float hz);Сохраняет пользовательскую MixRate для режима Custom. Формула генерации должна использовать ту же частоту исходных кадров. Не меняйте её у работающего потока без согласованной остановки и повторной настройки.
| Имя | Тип | По умолчанию |
|---|---|---|
hz | float | — |
hzКонечная положительная частота исходного PCM в кадрах/с. Она действует в Custom и должна совпадать с расчётами производителя.
SetMixRateModevoid
public void SetMixRateMode(AudioStreamGenerator.AudioStreamGeneratorMixRate mode);Устанавливает MixRateMode. Выбор Output/Input не заполняет PCM-буфер автоматически; производитель всё равно должен подавать данные с согласованной частотой.
| Имя | Тип | По умолчанию |
|---|---|---|
mode | AudioStreamGenerator.AudioStreamGeneratorMixRate | — |
modeOutput, Input или Custom. Не передавайте Max и произвольные значения enum.
AudioStreamGenerator.AudioStreamGeneratorMixRate
| Значение | Описание |
|---|---|
Custom = 2 | Пользовательская скорость смешивания, указанная |
Input = 1 | Текущая скорость микширования входного сигнала |
Max = 3 | Максимальное значение для перечисления режима скорости смешивания. |
Output = 0 | Текущая скорость микширования выходного сигнала |