-
-
Notifications
You must be signed in to change notification settings - Fork 1.5k
Description
Overview
The current Music Blocks interface uses a vertical block-stacking model to represent program logic. While this works well for simple compositions, it becomes difficult to navigate and understand the structure when programs grow larger.
Introducing a Program Structure Explorer would provide a clearer overview of the block hierarchy and allow users to quickly navigate complex compositions.
Problem
When many blocks are added:
- The program becomes a long vertical stack
- It is difficult to understand the overall structure of the composition
- Users must scroll extensively to find specific blocks
- There is no quick way to jump between sections of the program
This reduces usability for larger music compositions.
Proposed Solution
Add a Program Structure Explorer panel that visualizes the hierarchy of blocks in a collapsible tree view.
Example structure:
Program
├ Instrument: Guitar
│ ├ Note: Sol
│ └ Note: Mi
├ Rhythm Pattern
└ Melody Sequence
Selecting an item in the tree should focus or highlight the corresponding block in the canvas.
Implementation Approach
-
Extract Block Hierarchy
- Use the existing block parent-child relationships from the block workspace.
- Build a hierarchical data structure representing the block tree.
-
Create a Sidebar Tree Component
- Render the hierarchy as a collapsible tree view in a new sidebar panel.
-
Block Navigation
- Clicking a tree node scrolls the workspace to the corresponding block.
-
Live Updates
- Update the tree dynamically when blocks are added, removed, or moved.
Expected Benefits
- Clear visualization of program structure
- Faster navigation within large compositions
- Improved usability for complex musical logic
- Modernized UI while preserving the current block editor
Optional Future Improvements
- Block search functionality
- Workspace minimap
- Collapsible block groups
- Timeline-based visualization for musical sequences
Screenshot
(Current UI example attached)
Notes
This feature would complement the existing block editor without changing the current workflow, making the interface easier to use as compositions grow in complexity.