Initial code commit

This commit is contained in:
2025-08-05 01:10:28 +01:00
parent 8052597e84
commit 8fa467cb93
7 changed files with 1073 additions and 1 deletions

111
README.md
View File

@@ -1,2 +1,111 @@
# gig
# gig.py
./gig.py [-w] show.yaml
Use the -w flag to run in regular windows rather than full screen.
## YAML
Define your set with:
set:
- item1
- item2
- item3
Define your preshow with:
preshow:
- item4
Define your items:
items:
item1:
title: Title
events:
- Display:
media: File.jpg
at: select
- Lyrics:
text: Text
at: start
## Time markers
Events are scheduled to happen at times. Times can be specified in terms of markers, and modified by bars, beats and hours/minutes/seconds.
There are two predefined markers:
* select - defined as the time the item is selected. This is typically used for an introduction to a piece.
* start - defined as the time the item is started. This is typically when backing tracks are played.
Other markers can be defined for convenience.
Every time specification must include at least one marker. The marker may be modified using addition or subtraction.
The following expressions can be combined:
* `<number> bars` - number of bars at the current tempo. The keywords `bar` and `bars` are both accepted.
* `<number> beats` - number of beats at the current tempo. The keywords `beat` and `beats` are both accepted.
* `<number>` - number of seconds
* `<number>:<number>` - number of minutes and seconds
* `<number>:<number>:<number>` - number of hours, minutes and seconds
Examples:
at: start + 4 bars - 1 beat
at: select + 1:23
## Event types
### Display
Displays image for the audience
(not yet implemented)
* at - time to display the image
* media - filename of the image
### Lyrics
Display lyrics for the audience
* at - time to display the text
* text - text to display
* duration - (not yet implemented)
### Playback
Play audio
* at - time to display the text
* media - filename to play
* device - output device to use (optional)
* channels - output channel map (optional)
* tempo - initial tempo (bpm) (optional)
* beats - initials beats in a bar (optional)
* leadin - time in seconds before the first beat (optional) (not yet implemented)
* loop - (True/False) loop at end of playback (optional) (not yet implemented)
### SetTempo
Set the tempo at a given time
* at - time at which to set the tempo
* tempo - new tempo (bpm) (optional)
* beats - new beats in a bar (optional)
### SetMark
Set time marker
* at - time to set the marker to
* name - name of marker
### ButtonMark
Set time marker based on external keypress
* name - name of marker