In gscore, a score is made up of small building blocks, creatively called blocks. Blocks are akin to classes in programming. Each block is defined once and can then be instantiated any number of times within the score. Blocks can also be shared across different instrument tracks. Change the definition of a block and all instances are updated accordingly. No need to copy and paste stuff.
gscore has two different editing modes, one for modifying block definitions and one for adding block instances to the score. These are called edit mode and object mode, respectively. Yes, this is inspired by Blender, and yes, you switch between the modes using tab
.
gscore uses human-readable XML format for its project files, easy to edit by hand or check into a version control system.
b
Select current block, or create new one if one with the provided name does not existc
Set color of the current blockr
Rename current blockt
Set score tempo (BPM)w
Write score to fileq
Quit applicationtab
Switch between edit mode and object modectrl+tab
Toggle between the two most recent blocksspace
Play score/block starting from the beginningctrl+space
Play score/block starting from the mouse cursorshift+space
Play score/block with repeat, can be combined withctrl
i
Set instrument/synth program for the hovered trackn
Toggle midi note-off events/sustain pedal for the hovered trackv
Set velocity of the hovered trackctrl+up
Decrement the number of instrument tracksctrl+down
Increment the number of instrument tracksctrl+left
Decrement the score length by one blockctrl+right
Increment tho score length by one blockleft mouse button
Add instance of the current block to the scoreright mouse button
Remove block instance from the scoremiddle mouse button
Pick the hovered block and set as current, pick hovered instrument for edit modectrl+scoll wheel
Adjust the velocity of the hovered block instance
k
Set key signature for the background highlightingi
Set instrument/synth program to use inside edit moden
Toggle midi note-off events/sustain pedal inside edit modectrl+up
Transpose the view upwards one octavectrl+down
Transpose the view downwards one octaveleft mouse button
Place note, hold and drag for longer noteright mouse button
Remove hovered note, hold and drag to remove multiple notesmiddle mouse button
Preview note at mouse position, hold and drag to preview multiple notesctrl+scoll wheel
Adjust the velocity of the hovered note
gscore is configured by editing the file config.h
and recompiling.
- Think of gscore as a midi editor, not a DAW. There are no effects, filters or any other kind of audio processing. Export the scores using midi format and import them into another application for additional tinkering.
- gscore only supports sf2 soundfonts for audio, not vst's or anything fancy (TODO maybe?).
- For a list of downloadable soundfonts, check out the FluidSynth wiki: https://github.com/FluidSynth/fluidsynth/wiki/SoundFont
- Unused block definitions and empty tracks are automatically discarded when saving a score. Instantiate any blocks you want to keep!
- Changing the instrument while editing block definitions in edit mode only affects the sound inside of edit mode.
- Project files created by gscore has a
metadata
tag inside of them. You can put whatever you want in there and it will be preserved when reading/saving the file. - Use
shift+enter
when entering values with dmenu to prevent auto-complete.
- dmenu
- libfluidsynth 1.x
- glew
- glfw
- libX11
- libXrandr
- libxml2
- xprop
- python3
- mido
Installing:
gmake && sudo gmake install
Running:
export GSCORE_SOUNDFONTS=/path/to/soundfont1.sf2:/path/to/soundfont2.sf2:...
gscore projectfile.gsx
Keep the terminal window open and visible to receive helpful status messages.
Export a project file as midi:
gscore-export-midi projectfile.gsx
- Main repo: https://github.com/GullikX/gscore
- Repo mirrors:
- Build service: https://builds.sr.ht/~gullik/gscore