sim3.py simulation testbed

The sim3.py script is a testbed for building event-driven performance controllers with the kf Python library. The script and libraries are packaged as sim3.zip. The individual files can be browsed at sim3.py and kf.

Sim3 improves upon sim2 by incorporating MIDI sound output and several generator object demos: concentric loop, particle orbits, and waves.

A simulated winch system with GUI.

class sim3.ControlLogic[source]

Core performance logic for processing MIDI input into winch commands.

channel_pressure(channel, pressure)[source]

Process a MIDI Channel Pressure event.

connect_MIDI_out(midi_out)[source]

Attach a MIDI sender to the performance logic.

connect_display(display)[source]

Attach a console status output device to the performance logic.

connect_lights(lights)[source]

Attach a stage lighting output device to the performance logic.

connect_loops(loops)[source]

Attach a tape loop generator to the performance logic.

connect_orbits(orbits)[source]

Attach a orbit dynamics generator to the performance logic.

connect_waves(waves)[source]

Attach a wave dynamcis generator to the performance logic.

connect_winches(winches)[source]

Attach a winch output device to the performance logic, either physical or simulated.

control_change(channel, cc, value)[source]

Process a MIDI Control Change event.

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.

note_off(channel, key, velocity)[source]

Process a MIDI Note Off event.

note_on(channel, key, velocity)[source]

Process a MIDI Note On event.

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
set_user_mode(name)[source]
class sim3.MainApp[source]

Main application controller object holding any non-GUI related state.

class sim3.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.

closeEvent(event)[source]

Qt callback received before windows closes.

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.

connect_midi_sender(sender)[source]

Connect a MIDI output sender to the port configuration control.

connect_osc_listener(listener)[source]

Connect an OSC network listener to the port configuration control.

set_status(string)[source]

Update the status bar at the bottom of the display to show the provided string.