-
Notifications
You must be signed in to change notification settings - Fork 2.7k
Audio overview
Igor Korsukov edited this page Jan 26, 2021
·
1 revision
We have three layers:
- Main application - here public client interface for put data and controls.
- Audio Worker - here generate and mix audio data.
- Audio Driver - here requesting audio data to play
All layers work in separate threads.
We need to make sure that each part of the system works only in its thread and, ideally, there is no access to the same object from different threads, in order to avoid problems associated with access data thread safety.
Objects from different layers (threads) must interact only through:
- Rpc (remote call procedure) channel - controls and pass midi data
- AudioBuffer - pass audio data from worker to driver for play
AudioEngine is in the worker and operates only with the buffer, in fact, it knows nothing about the data consumer, about the audio driver.
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