exercise5.py sample code¶
The exercise5.py
script is derived from sim1.py
with additional support
for output to the physical winches over a serial port. It also demonstrates use
of a timer to create metronomic movement commands. The script and libraries
are packaged as exercise5.zip. The individual
files can be browsed at exercise5.py
and kf.
The notable differences from sim1.py
are the metronome functions in
exercise5.ControlLogic
and the exercise5.OutputPatcher
helper class which duplicates commands to both the simulation and the physical
winch outputs.
The user interface is much the same as we’ve been using, except switching the pads to bank C will change modes so the pads trigger a regular series of pulses rather than a direct motion command. The layout of the pads in bank C has a similar meaning, with each column addressing a specific motor and each row representing forward or backward movements of different magnitudes.
A winch control system with GUI.
-
class
exercise5.
ControlLogic
[source]¶ Core performance logic for processing MIDI input into winch commands.
-
connect_winches
(winches)[source]¶ Attach a winch output device to the performance logic, either physical or simulated.
-
metronome_tick
()[source]¶ Callback invoked at regular intervals governed by the metronome timer. In this particular example, the metronome can trigger a regular series of alternating forward and back movements to excite the path generator oscillators.
-
set_metronome_tempo
(tempo)[source]¶ Adjust the metronome timer rate. N.B. the underlying Qt QTimer accepts intervals in milliseconds, so this is fairly precise for beats but will be approximate for small subdivisions. E.g. a 120 BPM timer at 500 ms is precise, but the 32nd note subdivision at 62.5 ms would be rounded to 62 ms and run about 1% slow.
Parameters: tempo – tempo in BPM
-
-
class
exercise5.
MainApp
[source]¶ Main application controller object holding any non-GUI related state.
-
class
exercise5.
OutputPatcher
[source]¶ This object routes winch output commands to one or more streams. E.g. it can duplicate outputs to both a serial port winch and a simulation.
-
class
exercise5.
SimWindow
[source]¶ A custom main window which provides all GUI controls. This generally follows a model-view-controller convention in which this window provides the views, passing events to the application controller via callbacks.
-
connect_close_handler
(handler)[source]¶ Connect a callback to be invoked when the window is about to close.
-
connect_midi_listener
(listener)[source]¶ Connect a MIDI input listener to the port configuration control.
-
connect_midi_processor
(processor)[source]¶ Connect an object to receive synthetic MIDI events; the object is assumed to have MIDIProcessor methods.
-