Как я могу избежать 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

Подробнее здесь: https://stackoverflow.com/questions/798 ... nel-output
Ответить

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

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

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

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

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