-
Notifications
You must be signed in to change notification settings - Fork 2.7k
CodeStructure
-
.github: Issue templates and github workflows.
-
.tx: Transifex configuration files.
-
.vscode: Configuration JSON files for editing in Visual Studio Code. Unfortunately mostly outdated.
-
build: Tools, scripts, and resource files for building and packaging.
-
demos: A few MuseScore files to demonstrate what can be done.
-
doc: Markdown files containing useful information for making plugins, tick lengths, etc. Unfortunately mostly outdated.
-
fonts: Contains ttf/otf fonts, in some cases including fontforge source (sfd).
-
hooks: Git Hooks, including a script to install/uninstall them.
-
mtest: Old unit tests, currently not in use, but some of them may still need to be ported.
-
sandbox: Test directory for testing certain parts of the project in isolation.
-
share: Resource files, most of which are installed with the app.
-
src: Source files, see below.
-
test: Even older unit tests.
-
thirdparty: Contains projects which are included for convenience, usually to integrate them into the build system to make them available for all supported platforms.
-
tools: Several tools.
-
vtest: Visual tests: scripts and input files. Used to compare the engraving output of different builds of MuseScore, for example to verify that patches don't introduce regressions.
All code files are in the src
folder. This folder contains subfolders for each module. The names of these modules are generally self-explaining; a few remarks:
- the
framework
folder, and especially theglobal
module inside it, contain code for general data structures, functions, utilities, UI components etc. that are used by the rest of the code; - the
engraving
module contains code for the data model and layout of actual scores; - the
notation
module contains code for the interaction with the score; - the
project
module contains code for file operations.
Each module that has tests contains its own tests
folder. Furthermore, we use the Visual Tests from the vtest
folder to detect engraving regressions.
The tests in the folders test
and mtest
are obsolete, but kept because they might be revived in the future.
Testing
- Manual testing
- Automatic testing
Translation
Compilation
- Set up developer environment
- Install Qt and Qt Creator
- Get MuseScore's source code
- Install dependencies
- Compile on the command line
- Compile in Qt Creator
Beyond compiling
Misc. development
Architecture general
- Architecture overview
- AppShell
- Modularity
- Interact workflow
- Channels and Notifications
- Settings and Configuration
- Error handling
- Launcher and Interactive
- Keyboard Navigation
Audio
Engraving
- Style settings
- Working with style files
- Style parameter changes for 4.0
- Style parameter changes for 4.1
- Style parameter changes for 4.2
- Style parameter changes for 4.3
- Style parameter changes for 4.4
Extensions
- Extensions overview
- Manifest
- Forms
- Macros
- Api
- Legacy plugin API
Google Summer of Code
References