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.

Core areas

User interface

The app uses customtkinter for the desktop interface.

Plugins can extend the UI at runtime, but they should not replace core navigation.

Score engine

The score layer stores and parses musical score text.

Plugins can read, insert, replace, and analyze that score through the plugin API.

Audio layer

Audio playback relies on the internal playback engine and sound-related Python dependencies.

This layer supports note playback and raw frequency playback.

Export layer

Exports use dedicated dependencies:

  • reportlab for PDF output

  • imageio-ffmpeg and ffmpeg.exe for MP4 output

Plugin runtime

Plugins run in a sandboxed model.

They can hook into UI, score, audio, and project actions.

Design principles

  • keep the UI responsive

  • isolate plugin failures

  • preserve user state

  • allow deep extension without source modification

Extension surfaces

The main extension surfaces are:

  • lifecycle hooks

  • UI APIs

  • score APIs

  • audio APIs

  • project APIs

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.

Performance guidance

Keep heavy work off the main thread.

For long-running jobs, use background workers and clean them up on unload.

Last updated

Was this helpful?