diff --git a/CMakeLists.txt b/CMakeLists.txt index 2b4cc16..6d0b5fe 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,5 +1,5 @@ cmake_minimum_required(VERSION 3.16) -project(baudline VERSION 1.0.0 LANGUAGES C CXX) +project(baudmine VERSION 1.0.0 LANGUAGES C CXX) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) @@ -145,12 +145,12 @@ if(EMSCRIPTEN) target_compile_options(imgui PUBLIC -sUSE_SDL=2) target_link_options(imgui PUBLIC -sUSE_SDL=2) - add_executable(baudline ${SOURCES}) - target_include_directories(baudline PRIVATE src) - target_link_libraries(baudline PRIVATE imgui fftw3f_wasm) + add_executable(baudmine ${SOURCES}) + target_include_directories(baudmine PRIVATE src) + target_link_libraries(baudmine PRIVATE imgui fftw3f_wasm) # Emscripten linker flags - target_link_options(baudline PRIVATE + target_link_options(baudmine PRIVATE -sUSE_SDL=2 -sALLOW_MEMORY_GROWTH=1 -sINITIAL_MEMORY=67108864 @@ -161,8 +161,8 @@ if(EMSCRIPTEN) --shell-file=${CMAKE_SOURCE_DIR}/web/shell.html ) - # Output baudline.html + .js + .wasm - set_target_properties(baudline PROPERTIES + # Output baudmine.html + .js + .wasm + set_target_properties(baudmine PROPERTIES SUFFIX ".html" RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/web" ) @@ -185,9 +185,9 @@ else() target_link_libraries(imgui PUBLIC PkgConfig::SDL2 OpenGL::GL) - add_executable(baudline ${SOURCES}) - target_include_directories(baudline PRIVATE src) - target_link_libraries(baudline PRIVATE + add_executable(baudmine ${SOURCES}) + target_include_directories(baudmine PRIVATE src) + target_link_libraries(baudmine PRIVATE imgui PkgConfig::SDL2 PkgConfig::FFTW3F @@ -198,7 +198,7 @@ else() # Link math library and dl on Unix (dl needed by miniaudio for backend loading) if(UNIX) - target_link_libraries(baudline PRIVATE m dl) + target_link_libraries(baudmine PRIVATE m dl) endif() endif() diff --git a/CMakeLists_wasm.cmake b/CMakeLists_wasm.cmake index 36ef902..a3cf45b 100644 --- a/CMakeLists_wasm.cmake +++ b/CMakeLists_wasm.cmake @@ -1,4 +1,4 @@ -# Emscripten/WASM build for Baudline +# Emscripten/WASM build for Baudmine # Usage: # source ~/emsdk/emsdk_env.sh # emcmake cmake -B build_wasm -C CMakeLists_wasm.cmake diff --git a/build_wasm.sh b/build_wasm.sh index 030129a..80534e6 100755 --- a/build_wasm.sh +++ b/build_wasm.sh @@ -1,5 +1,5 @@ #!/bin/bash -# Build Baudline for WebAssembly +# Build Baudmine for WebAssembly # Prerequisites: Emscripten SDK installed at ~/emsdk set -e @@ -13,6 +13,6 @@ echo "=== Building ===" cmake --build build_wasm -j$(nproc) echo "=== Done ===" -echo "Output: build_wasm/web/baudline.html" +echo "Output: build_wasm/web/baudmine.html" echo "To test: cd build_wasm/web && python3 -m http.server 8080" -echo "Then open http://localhost:8080/baudline.html" +echo "Then open http://localhost:8080/baudmine.html" diff --git a/src/audio/AudioSource.h b/src/audio/AudioSource.h index 4b8312c..e933c89 100644 --- a/src/audio/AudioSource.h +++ b/src/audio/AudioSource.h @@ -2,7 +2,7 @@ #include -namespace baudline { +namespace baudmine { // Abstract audio source. All sources deliver interleaved float samples. // For I/Q data channels()==2: [I0, Q0, I1, Q1, ...]. @@ -24,4 +24,4 @@ public: virtual bool isEOF() const = 0; }; -} // namespace baudline +} // namespace baudmine diff --git a/src/audio/FileSource.cpp b/src/audio/FileSource.cpp index 5c72283..ddc26fb 100644 --- a/src/audio/FileSource.cpp +++ b/src/audio/FileSource.cpp @@ -2,7 +2,7 @@ #include #include -namespace baudline { +namespace baudmine { FileSource::FileSource(const std::string& path, InputFormat format, double sampleRate, bool loop) @@ -178,4 +178,4 @@ size_t FileSource::readRawUint8(float* buffer, size_t frames) { return samplesRead / 2; } -} // namespace baudline +} // namespace baudmine diff --git a/src/audio/FileSource.h b/src/audio/FileSource.h index 8e42ae8..142cfa8 100644 --- a/src/audio/FileSource.h +++ b/src/audio/FileSource.h @@ -11,7 +11,7 @@ #include #include -namespace baudline { +namespace baudmine { // Reads WAV files and raw I/Q files (float32, int16, uint8). // Native builds use libsndfile; WASM builds use a built-in WAV reader. @@ -65,4 +65,4 @@ private: size_t rawFileSize_ = 0; }; -} // namespace baudline +} // namespace baudmine diff --git a/src/audio/MiniAudioSource.cpp b/src/audio/MiniAudioSource.cpp index 9752261..155ddc2 100644 --- a/src/audio/MiniAudioSource.cpp +++ b/src/audio/MiniAudioSource.cpp @@ -4,7 +4,7 @@ #include #include -namespace baudline { +namespace baudmine { // ── Shared context (lazy-initialized) ──────────────────────────────────────── @@ -166,4 +166,4 @@ size_t MiniAudioSource::read(float* buffer, size_t frames) { return ringBuf_->read(buffer, frames * channels_) / channels_; } -} // namespace baudline +} // namespace baudmine diff --git a/src/audio/MiniAudioSource.h b/src/audio/MiniAudioSource.h index 6a00006..90801f1 100644 --- a/src/audio/MiniAudioSource.h +++ b/src/audio/MiniAudioSource.h @@ -10,7 +10,7 @@ struct ma_device; struct ma_context; -namespace baudline { +namespace baudmine { class MiniAudioSource : public AudioSource { public: @@ -50,4 +50,4 @@ private: std::unique_ptr> ringBuf_; }; -} // namespace baudline +} // namespace baudmine diff --git a/src/audio/PortAudioSource.cpp b/src/audio/PortAudioSource.cpp index 71e620a..1e1a818 100644 --- a/src/audio/PortAudioSource.cpp +++ b/src/audio/PortAudioSource.cpp @@ -2,7 +2,7 @@ #include #include -namespace baudline { +namespace baudmine { static bool sPaInitialized = false; @@ -111,4 +111,4 @@ std::vector PortAudioSource::listInputDevices() { return devices; } -} // namespace baudline +} // namespace baudmine diff --git a/src/audio/PortAudioSource.h b/src/audio/PortAudioSource.h index d4f75cf..a2a939f 100644 --- a/src/audio/PortAudioSource.h +++ b/src/audio/PortAudioSource.h @@ -6,7 +6,7 @@ #include #include -namespace baudline { +namespace baudmine { class PortAudioSource : public AudioSource { public: @@ -51,4 +51,4 @@ private: std::unique_ptr> ringBuf_; }; -} // namespace baudline +} // namespace baudmine diff --git a/src/audio/WavReader.cpp b/src/audio/WavReader.cpp index 737ee0b..052a7e1 100644 --- a/src/audio/WavReader.cpp +++ b/src/audio/WavReader.cpp @@ -2,7 +2,7 @@ #include #include -namespace baudline { +namespace baudmine { // Read a little-endian uint16/uint32 from raw bytes. static uint16_t readU16(const uint8_t* p) { return p[0] | (p[1] << 8); } @@ -138,4 +138,4 @@ void WavReader::seekFrame(size_t frame) { file_.seekg(static_cast(byteOffset)); } -} // namespace baudline +} // namespace baudmine diff --git a/src/audio/WavReader.h b/src/audio/WavReader.h index b4438e5..7179720 100644 --- a/src/audio/WavReader.h +++ b/src/audio/WavReader.h @@ -8,7 +8,7 @@ #include #include -namespace baudline { +namespace baudmine { class WavReader { public: @@ -38,4 +38,4 @@ private: std::vector readBuf_; // scratch for format conversion }; -} // namespace baudline +} // namespace baudmine diff --git a/src/core/Config.cpp b/src/core/Config.cpp index e5513f7..be8f154 100644 --- a/src/core/Config.cpp +++ b/src/core/Config.cpp @@ -9,7 +9,7 @@ // ── WASM: persist settings via browser localStorage ───────────────────────── EM_JS(char*, js_loadSettings, (), { - var s = localStorage.getItem("baudline_settings"); + var s = localStorage.getItem("baudmine_settings"); if (!s) return 0; var len = lengthBytesUTF8(s) + 1; var buf = _malloc(len); @@ -18,14 +18,14 @@ EM_JS(char*, js_loadSettings, (), { }); EM_JS(void, js_saveSettings, (const char* data), { - localStorage.setItem("baudline_settings", UTF8ToString(data)); + localStorage.setItem("baudmine_settings", UTF8ToString(data)); }); #else #include #endif -namespace baudline { +namespace baudmine { std::string Config::defaultPath() { #ifdef __EMSCRIPTEN__ @@ -39,7 +39,7 @@ std::string Config::defaultPath() { const char* home = std::getenv("HOME"); base = home ? std::string(home) + "/.config" : "."; } - return base + "/baudline/settings.ini"; + return base + "/baudmine/settings.ini"; #endif } @@ -96,7 +96,7 @@ static void ensureDir(const std::string& path) { bool Config::save(const std::string& path) const { #ifdef __EMSCRIPTEN__ std::ostringstream f; - f << "# Baudline settings\n"; + f << "# Baudmine settings\n"; for (const auto& [k, v] : data_) f << k << " = " << v << "\n"; js_saveSettings(f.str().c_str()); @@ -107,7 +107,7 @@ bool Config::save(const std::string& path) const { std::ofstream f(p); if (!f.is_open()) return false; - f << "# Baudline settings\n"; + f << "# Baudmine settings\n"; for (const auto& [k, v] : data_) f << k << " = " << v << "\n"; return true; @@ -146,4 +146,4 @@ bool Config::getBool(const std::string& key, bool def) const { return it->second == "1" || it->second == "true"; } -} // namespace baudline +} // namespace baudmine diff --git a/src/core/Config.h b/src/core/Config.h index 10fb47a..88bbc8f 100644 --- a/src/core/Config.h +++ b/src/core/Config.h @@ -3,10 +3,10 @@ #include #include -namespace baudline { +namespace baudmine { // Simple INI-style config: key = value, one per line. Lines starting with # are -// comments. No sections. Stored at ~/.config/baudline/settings.ini. +// comments. No sections. Stored at ~/.config/baudmine/settings.ini. class Config { public: static std::string defaultPath(); @@ -29,4 +29,4 @@ private: std::string resolvedPath(const std::string& path) const; }; -} // namespace baudline +} // namespace baudmine diff --git a/src/core/RingBuffer.h b/src/core/RingBuffer.h index 4d15cad..b34ca90 100644 --- a/src/core/RingBuffer.h +++ b/src/core/RingBuffer.h @@ -5,7 +5,7 @@ #include #include -namespace baudline { +namespace baudmine { // Single-producer single-consumer lock-free ring buffer for audio data. // Producer: audio callback thread. Consumer: main/render thread. @@ -97,4 +97,4 @@ private: alignas(64) std::atomic readPos_{0}; }; -} // namespace baudline +} // namespace baudmine diff --git a/src/core/Types.h b/src/core/Types.h index 4d3f6a7..2bad431 100644 --- a/src/core/Types.h +++ b/src/core/Types.h @@ -8,7 +8,7 @@ #include #include -namespace baudline { +namespace baudmine { // ── FFT configuration ──────────────────────────────────────────────────────── @@ -157,4 +157,4 @@ struct Color3 { uint8_t r, g, b; }; -} // namespace baudline +} // namespace baudmine diff --git a/src/dsp/FFTProcessor.cpp b/src/dsp/FFTProcessor.cpp index 65b55f6..76309ca 100644 --- a/src/dsp/FFTProcessor.cpp +++ b/src/dsp/FFTProcessor.cpp @@ -2,7 +2,7 @@ #include #include -namespace baudline { +namespace baudmine { FFTProcessor::FFTProcessor() = default; @@ -94,4 +94,4 @@ void FFTProcessor::processComplex(const float* inputIQ, std::vector& outp processComplex(inputIQ, outputDB, scratchCplx_); } -} // namespace baudline +} // namespace baudmine diff --git a/src/dsp/FFTProcessor.h b/src/dsp/FFTProcessor.h index fb787d3..d2214d7 100644 --- a/src/dsp/FFTProcessor.h +++ b/src/dsp/FFTProcessor.h @@ -5,7 +5,7 @@ #include #include -namespace baudline { +namespace baudmine { // Wraps FFTW for real->complex and complex->complex transforms. // Produces magnitude output in dB and optionally retains the complex spectrum. @@ -55,4 +55,4 @@ private: std::vector> scratchCplx_; }; -} // namespace baudline +} // namespace baudmine diff --git a/src/dsp/SpectrumAnalyzer.cpp b/src/dsp/SpectrumAnalyzer.cpp index 5941810..f4f43e0 100644 --- a/src/dsp/SpectrumAnalyzer.cpp +++ b/src/dsp/SpectrumAnalyzer.cpp @@ -3,7 +3,7 @@ #include #include -namespace baudline { +namespace baudmine { SpectrumAnalyzer::SpectrumAnalyzer() { settings_.fftSize = 0; @@ -137,4 +137,4 @@ void SpectrumAnalyzer::clearHistory() { newSpectrumReady_ = false; } -} // namespace baudline +} // namespace baudmine diff --git a/src/dsp/SpectrumAnalyzer.h b/src/dsp/SpectrumAnalyzer.h index 1bfae58..f39bc57 100644 --- a/src/dsp/SpectrumAnalyzer.h +++ b/src/dsp/SpectrumAnalyzer.h @@ -7,7 +7,7 @@ #include #include -namespace baudline { +namespace baudmine { class SpectrumAnalyzer { public: @@ -70,4 +70,4 @@ private: float windowCorrection_ = 0.0f; }; -} // namespace baudline +} // namespace baudmine diff --git a/src/dsp/WindowFunctions.cpp b/src/dsp/WindowFunctions.cpp index 38bd571..f7cb61f 100644 --- a/src/dsp/WindowFunctions.cpp +++ b/src/dsp/WindowFunctions.cpp @@ -2,7 +2,7 @@ #include #include -namespace baudline { +namespace baudmine { static constexpr double kPi = 3.14159265358979323846; @@ -97,4 +97,4 @@ double WindowFunctions::besselI0(double x) { return sum; } -} // namespace baudline +} // namespace baudmine diff --git a/src/dsp/WindowFunctions.h b/src/dsp/WindowFunctions.h index 8286191..a7dd346 100644 --- a/src/dsp/WindowFunctions.h +++ b/src/dsp/WindowFunctions.h @@ -3,7 +3,7 @@ #include "core/Types.h" #include -namespace baudline { +namespace baudmine { class WindowFunctions { public: @@ -29,4 +29,4 @@ private: static double besselI0(double x); }; -} // namespace baudline +} // namespace baudmine diff --git a/src/main.cpp b/src/main.cpp index b23a804..762c67a 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -3,11 +3,11 @@ #ifdef __EMSCRIPTEN__ // Keep app alive for the Emscripten main loop. -static baudline::Application* g_app = nullptr; +static baudmine::Application* g_app = nullptr; #endif int main(int argc, char** argv) { - static baudline::Application app; + static baudmine::Application app; if (!app.init(argc, argv)) { std::fprintf(stderr, "Failed to initialize application\n"); diff --git a/src/ui/Application.cpp b/src/ui/Application.cpp index a5cc8aa..27093cd 100644 --- a/src/ui/Application.cpp +++ b/src/ui/Application.cpp @@ -16,7 +16,7 @@ #include #include -namespace baudline { +namespace baudmine { Application::Application() = default; @@ -25,7 +25,7 @@ Application::~Application() { } bool Application::init(int argc, char** argv) { - // Parse command line: baudline [file] [--format fmt] [--rate sr] + // Parse command line: baudmine [file] [--format fmt] [--rate sr] for (int i = 1; i < argc; ++i) { std::string arg = argv[i]; if (arg == "--format" && i + 1 < argc) { @@ -59,7 +59,7 @@ bool Application::init(int argc, char** argv) { #endif SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1); - window_ = SDL_CreateWindow("Baudline Spectrum Analyzer", + window_ = SDL_CreateWindow("Baudmine Spectrum Analyzer", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 1400, 900, SDL_WINDOW_OPENGL | SDL_WINDOW_RESIZABLE | @@ -1503,4 +1503,4 @@ void Application::saveConfig() const { cfg.save(); } -} // namespace baudline +} // namespace baudmine diff --git a/src/ui/Application.h b/src/ui/Application.h index 28ebe31..424cea9 100644 --- a/src/ui/Application.h +++ b/src/ui/Application.h @@ -17,7 +17,7 @@ #include #include -namespace baudline { +namespace baudmine { // ── Channel math operations ────────────────────────────────────────────────── @@ -203,4 +203,4 @@ private: std::vector stylesScratch_; }; -} // namespace baudline +} // namespace baudmine diff --git a/src/ui/ColorMap.cpp b/src/ui/ColorMap.cpp index 0091268..4853dbf 100644 --- a/src/ui/ColorMap.cpp +++ b/src/ui/ColorMap.cpp @@ -2,7 +2,7 @@ #include #include -namespace baudline { +namespace baudmine { // Interpolation helper for colormaps defined as control points. struct ColorStop { @@ -105,4 +105,4 @@ void ColorMap::buildLUT() { } } -} // namespace baudline +} // namespace baudmine diff --git a/src/ui/ColorMap.h b/src/ui/ColorMap.h index a1bea28..cf050e7 100644 --- a/src/ui/ColorMap.h +++ b/src/ui/ColorMap.h @@ -3,7 +3,7 @@ #include "core/Types.h" #include -namespace baudline { +namespace baudmine { class ColorMap { public: @@ -28,4 +28,4 @@ private: std::vector lut_; // 256 entries }; -} // namespace baudline +} // namespace baudmine diff --git a/src/ui/Cursors.cpp b/src/ui/Cursors.cpp index 95bfbeb..e855fa8 100644 --- a/src/ui/Cursors.cpp +++ b/src/ui/Cursors.cpp @@ -3,7 +3,7 @@ #include #include -namespace baudline { +namespace baudmine { static double binToFreqHelper(int bin, double sampleRate, bool isIQ, int fftSize) { if (isIQ) { @@ -194,4 +194,4 @@ int Cursors::findLocalPeak(const std::vector& spectrumDB, return best; } -} // namespace baudline +} // namespace baudmine diff --git a/src/ui/Cursors.h b/src/ui/Cursors.h index eb0f473..b8bc864 100644 --- a/src/ui/Cursors.h +++ b/src/ui/Cursors.h @@ -5,7 +5,7 @@ #include #include -namespace baudline { +namespace baudmine { struct CursorInfo { bool active = false; @@ -68,4 +68,4 @@ private: void pushAvg(AvgState& st, float dB, int bin) const; }; -} // namespace baudline +} // namespace baudmine diff --git a/src/ui/Measurements.cpp b/src/ui/Measurements.cpp index 3dd2e5d..4e96515 100644 --- a/src/ui/Measurements.cpp +++ b/src/ui/Measurements.cpp @@ -4,7 +4,7 @@ #include #include -namespace baudline { +namespace baudmine { double Measurements::binToFreq(int bin, double sampleRate, bool isIQ, int fftSize) { // Use bin center (+0.5) for more accurate frequency estimation. @@ -301,4 +301,4 @@ void Measurements::drawPanel() { } } -} // namespace baudline +} // namespace baudmine diff --git a/src/ui/Measurements.h b/src/ui/Measurements.h index 15c1d3a..7e6eab1 100644 --- a/src/ui/Measurements.h +++ b/src/ui/Measurements.h @@ -4,7 +4,7 @@ #include "ui/SpectrumDisplay.h" #include -namespace baudline { +namespace baudmine { struct PeakInfo { int bin = 0; @@ -66,4 +66,4 @@ private: static double binToFreq(int bin, double sampleRate, bool isIQ, int fftSize); }; -} // namespace baudline +} // namespace baudmine diff --git a/src/ui/SpectrumDisplay.cpp b/src/ui/SpectrumDisplay.cpp index 0956bb4..219a0a8 100644 --- a/src/ui/SpectrumDisplay.cpp +++ b/src/ui/SpectrumDisplay.cpp @@ -2,7 +2,7 @@ #include #include -namespace baudline { +namespace baudmine { static float freqToLogFrac(double freq, double minFreq, double maxFreq) { if (freq <= 0 || minFreq <= 0) return 0.0f; @@ -296,4 +296,4 @@ void SpectrumDisplay::clearPeakHold() { peakHold_.clear(); } -} // namespace baudline +} // namespace baudmine diff --git a/src/ui/SpectrumDisplay.h b/src/ui/SpectrumDisplay.h index 4fa3a0b..1a7540b 100644 --- a/src/ui/SpectrumDisplay.h +++ b/src/ui/SpectrumDisplay.h @@ -4,7 +4,7 @@ #include #include -namespace baudline { +namespace baudmine { struct ChannelStyle { ImU32 lineColor; @@ -54,4 +54,4 @@ private: mutable std::vector> peakHold_; }; -} // namespace baudline +} // namespace baudmine diff --git a/src/ui/WaterfallDisplay.cpp b/src/ui/WaterfallDisplay.cpp index 38c667b..b2940e2 100644 --- a/src/ui/WaterfallDisplay.cpp +++ b/src/ui/WaterfallDisplay.cpp @@ -3,7 +3,7 @@ #include #include -namespace baudline { +namespace baudmine { WaterfallDisplay::WaterfallDisplay() = default; @@ -160,4 +160,4 @@ void WaterfallDisplay::uploadRow(int row) { // Note: no unbind — ImGui will bind its own textures before drawing. } -} // namespace baudline +} // namespace baudmine diff --git a/src/ui/WaterfallDisplay.h b/src/ui/WaterfallDisplay.h index 6793eb6..8a3f4e2 100644 --- a/src/ui/WaterfallDisplay.h +++ b/src/ui/WaterfallDisplay.h @@ -6,7 +6,7 @@ #include #include -namespace baudline { +namespace baudmine { struct WaterfallChannelInfo { float r, g, b; @@ -55,4 +55,4 @@ private: std::vector activeChBuf_; }; -} // namespace baudline +} // namespace baudmine diff --git a/web/shell.html b/web/shell.html index 6fab320..7d632b9 100644 --- a/web/shell.html +++ b/web/shell.html @@ -3,7 +3,7 @@ -Baudline Spectrum Analyzer +Baudmine Spectrum Analyzer