in some scenarios it might reduce the code size if Ops can push more Ops to the queue
i.e. if playing==1 and recording==1, processing togglePlay should set playing==0 and recording==0
but stopping the recording means you have to flush the recorded notes to the track.
the same code is in the recording==1, processing toggleRecord, so instead of duplicating the code, the audio thread could just push toggleRecord onto another queue.
- gotta watch out for deadlock with queue filling
in some scenarios it might reduce the code size if Ops can push more Ops to the queue
i.e. if playing==1 and recording==1, processing togglePlay should set playing==0 and recording==0
but stopping the recording means you have to flush the recorded notes to the track.
the same code is in the recording==1, processing toggleRecord, so instead of duplicating the code, the audio thread could just push toggleRecord onto another queue.