From a38e29c59d5c7c1e2a38e57d8dadddd369ca0a3d Mon Sep 17 00:00:00 2001 From: Bananymous Date: Mon, 24 Aug 2026 01:44:37 +0300 Subject: [PATCH] audio: Passing number to audio now generates a sinwave at that freq --- userspace/programs/audio/main.cpp | 38 ++++++++++++++++++++++++------- 1 file changed, 30 insertions(+), 8 deletions(-) diff --git a/userspace/programs/audio/main.cpp b/userspace/programs/audio/main.cpp index f8bf29ec..c89649ef 100644 --- a/userspace/programs/audio/main.cpp +++ b/userspace/programs/audio/main.cpp @@ -1,4 +1,5 @@ #include +#include #include #include @@ -7,18 +8,39 @@ int main(int argc, char** argv) { if (argc != 2) { - fprintf(stderr, "usage: %s FILE\n", argv[0]); + fprintf(stderr, "usage: %s FREQ|FILE\n", argv[0]); return 1; } - auto audio_or_error = LibAudio::Audio::load(argv[1]); - if (audio_or_error.is_error()) - { - fprintf(stderr, "failed to load %s: %s\n", argv[1], audio_or_error.error().get_message()); - return 1; - } + auto audio = [argv]() -> LibAudio::Audio { + char* endp; + float freq = strtof(argv[1], &endp); - auto audio = audio_or_error.release_value(); + if (*endp != '\0') + { + auto audio_or_error = LibAudio::Audio::load(argv[1]); + if (!audio_or_error.is_error()) + return audio_or_error.release_value(); + fprintf(stderr, "failed to load %s: %s\n", argv[1], audio_or_error.error().get_message()); + exit(1); + } + + auto sine_stream = LibAudio::SineWaveAudioStream::create(2, 48000, freq); + if (sine_stream.is_error()) + { + fprintf(stderr, "failed to create sine wave stream: %s\n", sine_stream.error().get_message()); + exit(1); + } + + auto audio_or_error = LibAudio::Audio::create(sine_stream.release_value()); + if (audio_or_error.is_error()) + { + fprintf(stderr, "failed to create sine wave stream: %s\n", audio_or_error.error().get_message()); + exit(1); + } + + return audio_or_error.release_value(); + }(); if (auto ret = audio.start(); ret.is_error()) {