Project Architecture
High-level view of the app, runtime dependencies, and extension surfaces.
Roneat Studio Pro combines UI, score editing, audio processing, export pipelines, and plugin extensibility.
The app uses customtkinter for the desktop interface.
Plugins can extend the UI at runtime, but they should not replace core navigation.
The score layer stores and parses musical score text.
Plugins can read, insert, replace, and analyze that score through the plugin API.
Audio playback relies on the internal playback engine and sound-related Python dependencies.
This layer supports note playback and raw frequency playback.
Exports use dedicated dependencies:
imageio-ffmpeg and ffmpeg.exe for MP4 output
Plugins run in a sandboxed model.
They can hook into UI, score, audio, and project actions.
Design principles
allow deep extension without source modification
Extension surfaces
The main extension surfaces are:
Architectural advice for plugin authors
If a task affects the UI, use roneat_api.ui.
If it affects score content, use roneat_api.score.
If it affects playback, use roneat_api.audio.
If it affects save or load flows, use roneat_api.project.
Keep heavy work off the main thread.
For long-running jobs, use background workers and clean them up on unload.