Skip to content

Instantly share code, notes, and snippets.

@lewiji
Created January 21, 2023 23:19
Show Gist options
  • Save lewiji/405e9bcc7bf13fbe1b151bca49c1f555 to your computer and use it in GitHub Desktop.
Save lewiji/405e9bcc7bf13fbe1b151bca49c1f555 to your computer and use it in GitHub Desktop.
public partial class Main : Control
{
AudioStreamPlayer _audioStreamPlayer = default!;
AudioStreamGenerator _streamGenerator = default!;
AudioStreamPlayback _streamPlayback = default!;
SineWave _sineWave = new SineWave();
int _sampleHz = 22050;
int _pulseHz = 440;
public override void _Ready()
{
_audioStreamPlayer = GetNode<AudioStreamPlayer>("AudioStreamPlayer");
_streamGenerator = (AudioStreamGenerator) _audioStreamPlayer.Stream;
_streamGenerator.MixRate = 22050f;
_audioStreamPlayer.Play();
_streamPlayback = _audioStreamPlayer.GetStreamPlayback();
FillBuffer();
}
void FillBuffer()
{
var toFill = ((AudioStreamGeneratorPlayback)_streamPlayback).GetFramesAvailable();
((AudioStreamGeneratorPlayback)_streamPlayback).PushBuffer(_sineWave.GetBuffer(toFill));
}
// Called every frame. 'delta' is the elapsed time since the previous frame.
public override void _Process(double delta)
{
FillBuffer();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment