summaryrefslogtreecommitdiff
path: root/tools
AgeCommit message (Collapse)Author
6 daysChore: Add missing newlines at end of source filesskal
6 daysChore: Remove trailing whitespaces across the codebaseskal
6 daysImplement procedural audio generation, spectral effects, and WebGPU particle ↵skal
system
6 daysadd notesskal
6 daysenforce code styleskal
8 daysfix the spec editor a bitskal
8 daysfeat(gemini): Add .geminiignore fileskal
Propose and add a .geminiignore file to exclude build artifacts, dependency build outputs, archives, temporary files, and IDE configurations from Gemini's analysis and operations.
8 daysfix(editor): Correct CSS formatting issuesskal
Cleaned up CSS formatting in style.css to resolve potential parsing errors and ensure proper styling of elements, including buttons and layout.
8 daysrefactor(editor): Complete rewrite of script.js for stability and correctnessskal
Addressed all reported errors by completely restructuring script.js to ensure correct function definition order, fixing the 2x vertical scaling issue in frequency mapping, and confirming SDF logic and audio playback dependencies. - All global variables, constants, utility functions, element declarations, event listeners, and main logic functions are now correctly ordered. - and corrected to use for proper frequency mapping.
8 daysfix(editor): Resolve all scoping, ordering, and scaling issuesskal
Completely restructured script.js to guarantee correct function definition order and fixed the 2x vertical scaling issue in frequency mapping. - Moved all utility functions (audio, SDF, coordinate/frequency mapping) to be defined before their use. - Corrected and to use for accurate frequency scaling. - Ensured all button element declarations and event listeners are correctly placed at the top of the script to prevent initialization errors.
8 daysfix(editor): Final resolution of initialization and scoping errors in script.jsskal
Completely restructured script.js to place all global variables, constants, button declarations, and event listeners at the top of the file. This definitively resolves 'Uncaught ReferenceError: Cannot access ... before initialization' errors and ensures proper scoping for all functions, including .
8 daysfix(editor): Resolve button initialization errorsskal
Restructured script.js to move all button element declarations and their event listeners to the top of the script, immediately after global constants. This resolves the 'Uncaught ReferenceError: Cannot access 'button' before initialization' errors by ensuring elements are initialized before being accessed.
8 daysfeat(editor): Implement SDFs for drawing primitives and fix spectrogram clearingskal
Refactored drawing primitives in the spectrogram editor to use Signed Distance Functions (SDFs), providing smoother and more flexible shape generation. - : Now stores shape parameters in SDF-friendly world coordinates (frame and log-scaled frequency) and includes a parameter for each shape. - : Completely rewritten to utilize SDFs (, , ) for applying shape effects to the spectrogram data, including attenuation with . - Fixed an issue where the generated spectrogram was not being cleared to zero, ensuring a blank canvas for new drawings.
8 daysfix(editor): Resolve 'canvasToSpectrogramCoords is not defined' error (final ↵skal
attempt) Moved all spectrogram coordinate and frequency mapping utility functions to the top of to ensure they are defined before any other functions attempt to use them. This is a crucial scoping fix.
8 daysfix(editor): Resolve 'canvasToSpectrogramCoords is not defined' errorskal
Moved all spectrogram coordinate and frequency mapping utility functions to the top of to ensure they are defined before any other functions attempt to use them. This resolves the 'canvasToSpectrogramCoords is not defined' error caused by incorrect function scoping.
8 daysfeat(editor): Full ellipse support and minor fixesskal
This commit finalizes the ellipse drawing and application logic within the spectrogram editor. - : Implemented robust ellipse creation and with correct logarithmic frequency mapping. - Fixed several issues related to state synchronization and button management. - Minor styling and HTML updates for consistency.
8 daysfeat(editor): Implement ellipse drawing and application logicskal
Adds full support for drawing and applying ellipse shapes to the spectrogram data, correctly handling logarithmic frequency mapping. - : Refined ellipse creation to use accurate logarithmic frequency calculations for minBin and maxBin. - : Implemented the algorithm to draw an ellipse on the spectrogram data, ensuring correct placement and amplitude application. - Uses and for precise frequency mapping.
8 daysfix(editor): Resolve duplicate variable declarations in script.jsskal
Consolidated all button element declarations into a single block to prevent 'Identifier has already been declared' errors.
8 daysfeat(editor): Implement logarithmic frequency scaleskal
Enhances spectrogram visualization by mapping frequency bins to a logarithmic Y-axis, providing better perceptual uniformity. - : Renders frequency data using a logarithmic scale. - Coordinate mapping utilities (, ): Updated to support logarithmic frequency mapping. - : Shape creation now uses the logarithmic mapping for accurate placement in frequency space.
8 daysfeat(editor): Add audio playback and redo functionalityskal
Enhances the spectrogram editor with audio playback capabilities and a redo button. - : Added 'Listen Original' and 'Listen Generated' buttons, and a 'Redo' button. - : Added styling for the new buttons. - : Implemented JavaScript IDCT, Hanning window, and for audio synthesis. - Connected playback buttons to audio functionality. - Fully implemented logic.
8 daysfeat(editor): Implement drawing tools and advanced undo/redoskal
This commit significantly enhances the web spectrogram editor by implementing core drawing tools (line, ellipse, noise) and a robust undo/redo system. - and : Added redo button and styling. - : Implemented canvas event handling, dynamic shape previews, and the logic for lines and noise rectangles. - : Now reconstructs the spectrogram from a clean base, allowing proper undo/redo. - : Uses an improved color gradient for better visualization. - : Stores original spectrogram data for persistent state management.
8 daysfeat(editor): Implement basic undo/redo functionalityskal
Adds the core logic for managing an action history stack and an undo button. - Initializes undoStack, redoStack, and MAX_HISTORY_SIZE. - Implements addAction to record operations and clear redoStack. - Implements handleUndo to revert actions and manage stacks. - Adds placeholder for redrawCanvas and updateUndoRedoButtons.
8 daysdocs: Finalize project state synchronizationskal
Updates all relevant Markdown files to reflect the completed asset system and build pipeline. - Updates PROJECT_CONTEXT.md with latest architectural decisions. - Updates GEMINI.md with the full list of relevant files. - Adds initial scaffolding for the web editor. - Cleans up any lingering issues with asset generation paths.
8 daysfeat(editor): Scaffold web spectrogram editorskal
Initial setup for the spectrogram editor tool. - Created tools/editor/index.html, script.js, and style.css. - Added basic structure for WAV loading, visualization, and tool controls.
8 daysfeat(spectool): Optimize .spec file size by trimming trailing zerosskal
Implements logic to remove unused trailing zero frames from spectrogram data before saving, reducing file size and improving loading efficiency.
8 daysstyle updateskal
8 daysfeat(assets): Add auto-generation comment to packer outputskal
Updates to prepend a warning comment to the generated and files, indicating they are auto-generated and should not be manually edited.
8 daysrefactor(assets): Optimize asset retrieval using array lookupskal
This refactors the asset management system to be more efficient and cleaner. - Moved common GetAsset/DropAsset logic to src/util/asset_manager.cc. - Changed retrieval to use an array of records (AssetRecord) for O(1) lookups instead of a switch statement. - Updated asset_packer to generate only raw data and the record array.
8 daysdocs: Update project context and session notesskal
Summarizes recent implementations including Asset Management, audio/visual fixes, and style improvements.
8 daysstyle: Add 3-line descriptive headers to all source filesskal
This commit applies a new project-wide rule that every source file must begin with a concise 3-line comment header describing its purpose. - Updated CONTRIBUTING.md with the new rule. - Applied headers to all .cc and .h files in src/ and tools/. - Fixed various minor compilation errors and missing includes discovered during the header update process.
8 daystest(assets): Add functional tests for asset management systemskal
This commit makes the asset packer fully functional and adds an end-to-end test suite. - Updated asset_packer.cc to read file contents and embed them as hex arrays. - Added actual asset files (null.bin, test_asset.txt) for testing. - Implemented src/tests/test_assets.cc to verify data integrity at runtime. - Refactored CMakeLists.txt to handle generated file dependencies correctly.
8 daysfeat(assets): Implement basic asset packing systemskal
Introduces a new asset management system to embed binary assets directly into the demo executable. - Creates the directory for asset definition and an descriptor file. - Implements to generate (with enum and declaration) and (with placeholder data). - Integrates into CMake build, making depend on the generated asset files. - Adds minimal integration in and documentation in . This addresses Task 9 (compact in-line and off-line asset system).
9 daysclang-formatskal
9 daysupdate SESSION_NOTESskal
9 daysfeat: Implement spectool & specview; refactor coding style; update docsskal
This commit introduces new tools for spectrogram manipulation and visualization, establishes a consistent coding style, and updates project documentation. Key changes include: - **Spectrogram Tools: - : A command-line utility for analyzing WAV/MP3 files into custom spectrogram format and playing back these spectrograms via the synth engine. - : A command-line tool for visualizing spectrogram files as ASCII art in the console. - **Coding Style Enforcement: - Added a configuration file enforcing LLVM-based style with 2-space indentation, no tabs, and an 80-column line limit. - Renamed all C++ source files from to for project consistency. - Applied automatic formatting using exit across the entire codebase. - **Documentation & Workflow: - Created to define a commit policy requiring tests to pass before committing. - Updated with instructions for building and using and , and referenced . - Updated and to reflect the new tools, audio architecture decisions (real-time additive synthesis, double-buffering for dynamic updates, WAV/MP3 support), coding style, and development workflow. - **Build System: - Modified to: - Include new targets for and under the option. - Update source file extensions to . - Add a new end-to-end test for to the suite.
9 daystest(spectool): Add end-to-end test for analysis toolskal
Adds a new CTest unit test that performs a full, end-to-end verification of the 'spectool analyze' command. The test programmatically generates a sine wave, saves it as a .wav file, executes the spectool executable as a subprocess to analyze the wave, and then verifies the integrity of the resulting .spec file. This ensures the analysis pipeline (WAV decoding, windowing, FDCT, and file I/O) works correctly.
9 daysfeat(spectool): Add MP3 support for audio analysisskal
Leverages the built-in MP3 decoder in miniaudio to allow spectool's 'analyze' command to process .mp3 files in addition to .wav files. Updates the tool's command-line help text and the project's HOWTO.md to reflect the new capability.