@@ -9,27 +9,24 @@ This is a JUCE-based cross-platform MIDI controller application written in C++17
99- ` src/ ` - Main application source code
1010- ` deps/ ` - Third-party dependencies (JUCE, libkv-auth, lua)
1111- ` data/ ` - Application assets and resources
12- - ` devices/ ` - MIDI device configurations
1312- ` CMakeLists.txt ` - CMake build configuration
1413
1514## Key Technologies
1615- ** JUCE Framework** : Used for GUI, audio, and MIDI functionality
17- - ** Lua 5.3.5** : Embedded scripting for device configurations
1816- ** CMake** : Build system (minimum version 3.22)
1917- ** C++17** : Language standard
2018
2119## Coding Conventions
2220- Follow JUCE naming conventions (CamelCase for classes, camelCase for methods)
2321- Use JUCE types when possible (String, Array, etc.)
2422- Prefer JUCE utilities over standard library where appropriate
25- - Keep Lua bindings in ` bindings.cpp ` and ` bindings.hpp `
2623
2724## Architecture Notes
2825- ` MainComponent ` is the primary UI class
2926- ` Controller ` manages MIDI I/O and device state
3027- ` Settings ` handles application configuration persistence
3128- ` VirtualKeyboard ` provides on-screen MIDI input
32- - Lua scripts define device-specific MIDI mappings
29+ - ` Device ` is the data layer using juce data structures ValueTree
3330
3431## Dependencies
3532For Ubuntu/Linux development, ensure these packages are installed:
@@ -51,13 +48,11 @@ cmake --build . --parallel
5148## Testing
5249- Manual testing requires MIDI devices or virtual MIDI ports
5350- Focus on cross-platform compatibility (Linux, macOS, Windows)
54- - Test Lua script loading and execution
5551- Verify MIDI input/output functionality
52+ - Unit tests should be run with ` ctest `
5653
5754## Common Tasks
58- - Adding new MIDI devices: Create Lua scripts in ` devices/ `
5955- UI modifications: Work in ` MainComponent ` and related files
60- - MIDI functionality: Extend ` Controller ` class
61- - New Lua bindings: Add to ` bindings.cpp `
56+ - Format the code with the ` utils/format.py ` script.
6257
6358When suggesting code changes, prioritize JUCE best practices and maintain compatibility with the existing architecture.
0 commit comments