summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
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 dayschore(scripts): Update gen_assets.sh to include test asset generationskal
Ensures that test assets are also generated when the production pipeline is run.
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 daysperf(synth): Optimize Hamming window generationskal
Moves the Hamming window initialization from synth_render to synth_init() to ensure it's generated only once, improving performance.
8 daysdocs(contributing): Add rule for newline at end of fileskal
Enforces a newline at the end of all source files to prevent linting errors and ensure consistent file formatting.
8 daysdocs: Synchronize project state for Asset System milestoneskal
Updates documentation and context to reflect the completed Asset Management System, production build pipeline, and visual improvements. - Updated PROJECT_CONTEXT.md with detailed architectural and build system decisions. - Added milestone summary to SESSION_NOTES.md. - Expanded GEMINI.md context file list.
8 daysupdate NOTESskal
8 daysfeat(build): Finalize production assembly pipelineskal
This commit ensures the 'final' assembly target is robust and works across all build configurations. - Updated CMakeLists.txt to always include the asset_packer tool and use generator expressions for its path. - Refactored main.cc to use the new drum assets and removed debug prints. - The 'make final' command now correctly re-generates all assets and performs binary crunching.
8 daysfix(build): Robust asset tool invocation using generator expressionsskal
Switched to using in to ensure CMake correctly resolves the tool path regardless of the build environment.
8 daysfeat(visuals): Add rotation, color shifts, and improved beat-syncskal
Implements a more dynamic and reactive visual system. - Updated synth.cc: Faster peak decay for better response. - Updated gpu.cc: Added time-based rotation and Hue shifting; implemented reactive clear-color flashes. - Updated main.cc: Corrected peak scaling (8x multiplier) and integrated time-based animation.
8 daysfeat(visuals): Enhance colors and add background flashesskal
Improves the audio-visual synchronization by increasing peak amplification and adding dynamic background flashes. - src/gpu/gpu.cc: Updated fragment shader with more vibrant hue calculation and implemented reactive clear color for flashes. - src/main.cc: Increased peak multiplier to 150x and added non-linear boost for strong peaks.
8 dayschore(assets): Clean up demo_assets.txtskal
Removed dummy and test assets from the main demo list, leaving only the required drum samples.
8 dayschore: Update .gitignore for generated assetsskal
Ignore generated C++ asset sources and spectral data files.
8 dayschore(assets): Remove obsolete assets.txtskal
This file has been replaced by 'demo_assets.txt' and 'test_assets_list.txt'.
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 daysdocs: Document gen_assets.sh usageskal
Adds instructions to HOWTO.md for re-generating assets from source audio using the provided script.
8 daysfix(assets): Update gen_assets.sh pathsskal
Synchronizes scripts/gen_assets.sh with the current project structure: uses 'demo_assets.txt' and outputs to the 'src/' directory.
8 daysfeat(assets): Separate demo and test asset listsskal
Renamed demo assets to 'demo_assets.txt' and created 'test_assets_list.txt' for AssetManagerTest to prevent interference. - Updated CMakeLists.txt to generate separate headers for demo and test. - Updated test_assets.cc to conditionally include the test-specific header. - Incorporated gen_assets.sh into the 'final' target.
8 daysfeat(demo): Add drum sequence using embedded assetsskal
Incorporates kick1.spec, snare1.spec, and hihat1.spec into the demo sequence. - Updated assets.txt with new drum identifiers. - Implemented register_spec_asset helper in main.cc to load spectral data. - Added 8th-note sequencer triggering a simple drum and bass pattern.
8 daysfeat(build): Add 'final' CMake target for production assemblyskal
Introduces a 'final' target that automates the entire production pipeline: building the stripped binary, generating assets, and performing final compression (crunching). - Updated CMakeLists.txt to define the 'final' target. - Updated HOWTO.md with instructions for running 'cmake --build build --target final'.
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 daysupdate asset systemskal
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).
8 daysadd asset system description fileskal
9 daysclang-formatskal
9 daysupdate SESSION_NOTES.mdskal
9 daysdocs(contributing): Exclude third_party/ from clang-formatskal
Updates the clang-format command in CONTRIBUTING.md to explicitly exclude the 'third_party/' directory. This prevents clang-format from modifying external library code and avoids potential processing issues.
9 daysdocs(contributing): Exclude assets/ and archive/ from clang-formatskal
Updates the clang-format command in CONTRIBUTING.md to explicitly exclude the 'assets/' and 'archive/' directories. This prevents clang-format from attempting to process large, non-source files in these directories, which can cause hangs or unexpected behavior.
9 daysbuild: Finalize WebGPU integration and platform fixesskal
Includes correct CMake configuration for GLFW native access, Objective-C++ compilation for the helper library on macOS, and applies clang-format to modified sources.
9 daysfix(gpu): Ensure shader entry points are preserved in STRIP_ALL buildskal
The build was stripping all strings, including critical shader entry points ('vs_main', 'fs_main'), causing a runtime panic. Introduced for optional debug labels (which are stripped) and restored to always return the string content for functional requirements.
9 daysdocs: Mark task 3 (binary crunchers) as completedskal
9 daysfix(crunch): Use strip/gzexe on macOS instead of UPXskal
UPX is unreliable on macOS. Switched to using standard 'strip -u -r' and 'gzexe' for binary compression on Darwin systems. Achieved a compressed binary size of ~48KB (dynamically linked). Updated FETCH_DEPS.md to reflect that UPX is now only required for Linux/Windows.
9 daysfeat(crunch): Add UPX-based binary packer scriptskal
Adds 'scripts/crunch_demo.sh' to automate building a stripped binary and compressing it with UPX. Updates 'FETCH_DEPS.md' with UPX installation instructions and 'HOWTO.md' with usage guide. This addresses Task 3 (add binary crunchers).
9 daysfeat(platform): Add 'q' key to quitskal
Adds the 'q' key as an alternative to 'Escape' for closing the application.
9 daysfix(gpu): Add aspect ratio correction to shaderskal
Implements aspect ratio correction to prevent the pulsating heptagon from being distorted when the window is resized. - The main loop now queries the framebuffer size and calculates the aspect ratio each frame. - This aspect ratio is passed to the GPU via an updated uniform buffer. - The vertex shader in shader.wgsl now uses the aspect ratio to correctly scale the X coordinates of the vertices, ensuring the shape remains proportional.
9 daysfix(synth): Implement peak meter with decay for smooth visualsskal
The graphics appeared static because the audio peak value was transient, only lasting for a single audio buffer. The main graphics loop, running much faster, would mostly read a zero value. This fix implements a simple peak meter with an exponential decay. The peak value now rises instantly to the maximum sample value but fades out smoothly over several frames, providing a persistent and smooth value for the visualizer.
9 daysadd miniaudio.hskal