Как я могу избежать Raylib (привязки С#) AudioStream, искажающего выходной сигнал канала шума при воспроизведенииC#

Место общения программистов C#
Ответить
Anonymous
 Как я могу избежать Raylib (привязки С#) AudioStream, искажающего выходной сигнал канала шума при воспроизведении

Сообщение Anonymous »

Я пытаюсь создать и воспроизвести звук в эмуляторе, используя API AudioStream от Raylib и его функцию обратного вызова. Мой эмулятор создает квадрат, треугольник, пилу и шум. Все формы сигналов звучат корректно, за исключением шума, который звучит как жужжание, жуткая статика, стрекотание и сбитый вместе счетчик Гейгера — ничего похожего на старый добрый шум, который использовался для перкуссии, пламени, взрывов и всего, что между ними. Это соответствующие методы из класса блока обработки звука моего эмулятора:

Код: Выделить всё


private float GenerateSample(int channel)

{

var baseAddr = Memory.AudioRamStart + (channel * 4);

var freq = _mobo.ReadWord(baseAddr);

var control = _mobo.ReadByte(baseAddr + 3);

if (freq == 0)

return 0f;

var volume = ProcessEnvelope(channel, control);

if (volume = 6)

{

_noisePeriod[channel] = Math.Max(1, (int)(44100f / Math.Max(1, (int)freq)));

}

var delta = freq / 44100f;

_phases[channel] += delta;

if (_phases[channel] >= 1f)

{

_phases[channel] -= 1f;

}

var wave = channel switch

{

0 or 1 => Square(_phases[channel], delta),

2 or 3 => Triangle(_phases[channel]),

4 or 5 => Sawtooth(_phases[channel], delta),

_ => Noise(channel),

};

return wave * volume;

}

private float Noise(int channel)

{

if (--_noiseTimer[channel] > 1)) & 1);

_noiseLfsr[channel] = (ushort)((_noiseLfsr[channel] >> 1) | (bit 

Подробнее здесь: [url]https://stackoverflow.com/questions/79860223/how-can-i-avoid-raylib-c-bindings-audiostream-distorting-noise-channel-output[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»