├── 10.0.1-10.0.2.xml ├── 10.0.1-10.1.0.xml ├── 10.0.1-10.1.19.xml ├── 10.0.1-11.0.0.xml ├── 10.0.1.xml ├── 10.0.2-10.1.0.xml ├── 10.0.2-10.1.19.xml ├── 10.0.2-11.0.0.xml ├── 10.0.2.xml ├── 10.1.0-10.1.19.xml ├── 10.1.0-11.0.0.xml ├── 10.1.0.xml ├── 10.1.19-11.0.0.xml ├── 10.1.19.xml ├── 11.0.0.xml ├── 8.2.7-10.0.1.xml ├── 8.2.7-10.0.2.xml ├── 8.2.7-10.1.0.xml ├── 8.2.7-10.1.19.xml ├── 8.2.7-11.0.0.xml ├── 8.2.7-9.0.6.xml ├── 8.2.7-9.1.0.xml ├── 8.2.7-9.1.3.xml ├── 8.2.7-9.1.4.xml ├── 8.2.7-9.2.0.xml ├── 8.2.7-9.5.0.xml ├── 8.2.7-9.6.0.xml ├── 8.2.7-9.7.0.xml ├── 8.2.7.xml ├── 9.0.6-10.0.1.xml ├── 9.0.6-10.0.2.xml ├── 9.0.6-10.1.0.xml ├── 9.0.6-10.1.19.xml ├── 9.0.6-11.0.0.xml ├── 9.0.6-9.1.0.xml ├── 9.0.6-9.1.3.xml ├── 9.0.6-9.1.4.xml ├── 9.0.6-9.2.0.xml ├── 9.0.6-9.5.0.xml ├── 9.0.6-9.6.0.xml ├── 9.0.6-9.7.0.xml ├── 9.0.6.xml ├── 9.1.0-10.0.1.xml ├── 9.1.0-10.0.2.xml ├── 9.1.0-10.1.0.xml ├── 9.1.0-10.1.19.xml ├── 9.1.0-11.0.0.xml ├── 9.1.0-9.1.3.xml ├── 9.1.0-9.1.4.xml ├── 9.1.0-9.2.0.xml ├── 9.1.0-9.5.0.xml ├── 9.1.0-9.6.0.xml ├── 9.1.0-9.7.0.xml ├── 9.1.0.xml ├── 9.1.3-10.0.1.xml ├── 9.1.3-10.0.2.xml ├── 9.1.3-10.1.0.xml ├── 9.1.3-10.1.19.xml ├── 9.1.3-11.0.0.xml ├── 9.1.3-9.1.4.xml ├── 9.1.3-9.2.0.xml ├── 9.1.3-9.5.0.xml ├── 9.1.3-9.6.0.xml ├── 9.1.3-9.7.0.xml ├── 9.1.3.xml ├── 9.1.4-10.0.1.xml ├── 9.1.4-10.0.2.xml ├── 9.1.4-10.1.0.xml ├── 9.1.4-10.1.19.xml ├── 9.1.4-11.0.0.xml ├── 9.1.4-9.2.0.xml ├── 9.1.4-9.5.0.xml ├── 9.1.4-9.6.0.xml ├── 9.1.4-9.7.0.xml ├── 9.1.4.xml ├── 9.2.0-10.0.1.xml ├── 9.2.0-10.0.2.xml ├── 9.2.0-10.1.0.xml ├── 9.2.0-10.1.19.xml ├── 9.2.0-11.0.0.xml ├── 9.2.0-9.5.0.xml ├── 9.2.0-9.6.0.xml ├── 9.2.0-9.7.0.xml ├── 9.2.0.xml ├── 9.5.0-10.0.1.xml ├── 9.5.0-10.0.2.xml ├── 9.5.0-10.1.0.xml ├── 9.5.0-10.1.19.xml ├── 9.5.0-11.0.0.xml ├── 9.5.0-9.6.0.xml ├── 9.5.0-9.7.0.xml ├── 9.5.0.xml ├── 9.6.0-10.0.1.xml ├── 9.6.0-10.0.2.xml ├── 9.6.0-10.1.0.xml ├── 9.6.0-10.1.19.xml ├── 9.6.0-11.0.0.xml ├── 9.6.0-9.7.0.xml ├── 9.6.0.xml ├── 9.7.0-10.0.1.xml ├── 9.7.0-10.0.2.xml ├── 9.7.0-10.1.0.xml ├── 9.7.0-10.1.19.xml ├── 9.7.0-11.0.0.xml ├── 9.7.0.xml ├── CompareXmlTree.py ├── LiveAPI.xsl ├── LiveApiXmlHierarchical.py ├── MAKE_ALL.py ├── MakeIndex.py ├── README.md ├── index.html └── jquery.singlePageNav-multilevel.js /8.2.7.xml: -------------------------------------------------------------------------------- 1 | Unofficial Live API documentation generated by the “API_MakeDoc” MIDI Remote Script.This is unofficial documentation. Please do not contact Ableton with questions or problems relating to the use of this documentation.This class represents the Live application.This class represents the view aspects of the Live application.available_main_views( (View)arg1) → tupleclass boost::python::tuple available_main_views(class TPyViewData<class ASongApp>)Return a list of strings with the available subcomponent views, which is to be specified, when using the rest of this classes functions. A ‘subcomponent view’ is a main view component of a document view, like the Session view, the Arranger or Detailview and so on… Get the canonical parent of the application view.focus_view( (View)arg1, (object)arg2) → Nonevoid focus_view(class TPyViewData<class ASongApp>, class TString)Show and focus one through the identifier string specified view. hide_view( (View)arg1, (object)arg2) → Nonevoid hide_view(class TPyViewData<class ASongApp>, class TString)Hide one through the identifier string specified view. is_view_visible( (View)arg1, (object)arg2) → boolbool is_view_visible(class TPyViewData<class ASongApp>, class TString)Return true if the through the identifier string specified view is currently visible. add_is_view_visible_listener( (View)arg1, (object)arg2, (object)arg3) → Nonevoid add_is_view_visible_listener(class TPyViewData<class ASongApp>, class TString, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “is_view_visible” has changed. is_view_visible_has_listener( (View)arg1, (object)arg2, (object)arg3) → boolbool is_view_visible_has_listener(class TPyViewData<class ASongApp>, class TString, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “is_view_visible”. remove_is_view_visible_listener( (View)arg1, (object)arg2, (object)arg3) → Nonevoid remove_is_view_visible_listener(class TPyViewData<class ASongApp>, class TString, class boost::python::api::object)Remove a previously set listener function or method from property “is_view_visible”. scroll_view( (View)arg1, (int)arg2, (object)arg3, (bool)arg4) → Nonevoid scroll_view(class TPyViewData<class ASongApp>, long, class TString, bool)Scroll through the identifier string specified view into the given direction, if possible. Will silently return if the specified view can not perform the requested action. show_view( (View)arg1, (object)arg2) → Nonevoid show_view(class TPyViewData<class ASongApp>, class TString)Show one through the identifier string specified view. add_view_focus_changed_listener( (View)arg1, (object)arg2) → Nonevoid add_view_focus_changed_listener(class TPyViewData<class ASongApp>, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “view_focus_changed” has changed. remove_view_focus_changed_listener( (View)arg1, (object)arg2) → Nonevoid remove_view_focus_changed_listener(class TPyViewData<class ASongApp>, class boost::python::api::object)Remove a previously set listener function or method from property “view_focus_changed”. view_focus_changed_has_listener( (View)arg1, (object)arg2) → boolbool view_focus_changed_has_listener(class TPyViewData<class ASongApp>, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “view_focus_changed”. zoom_view( (View)arg1, (int)arg2, (object)arg3, (bool)arg4) → Nonevoid zoom_view(class TPyViewData<class ASongApp>, long, class TString, bool)Zoom through the identifier string specified view into the given direction, if possible. Will silently return if the specified view can not perform the requested action. Returns the canonical parent of the application.get_bugfix_version( (Application)arg1) → intlong get_bugfix_version(class TPyHandle<class ASongApp>)Returns an integer representing the bugfix version of Live. get_document( (Application)arg1) → Songclass TWeakPtr<class TPyHandle<class ASong> > get_document(class TPyHandle<class ASongApp>)Returns the current Live Set. get_major_version( (Application)arg1) → intlong get_major_version(class TPyHandle<class ASongApp>)Returns an integer representing the major version of Live. get_minor_version( (Application)arg1) → intlong get_minor_version(class TPyHandle<class ASongApp>)Returns an integer representing the minor version of Live. Returns the applications view component.combine_apcs() → boolbool combine_apcs()Returns true if multiple APCs should be combined. encrypt_challenge( (int)arg1, (int)arg2) → tupleclass boost::python::tuple encrypt_challenge(long, long)Returns an encrypted challenge based on the TEA algortithm encrypt_challenge2( (int)arg1) → intlong encrypt_challenge2(long)Returns the UMAC hash for the given challenge. get_application() → Applicationclass TWeakPtr<class TPyHandle<class ASongApp> > get_application()Returns the application instance. get_random_int( (int)arg1, (int)arg2) → intlong get_random_int(long, long)Returns a random integer from the given range. This class represents a group device chain in Live.Get the canonical parent of the chain.Return const access to all available Devices that are present in the chainsadd_devices_listener( (Chain)arg1, (object)arg2) → Nonevoid add_devices_listener(class TChainPyHandle, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “devices” has changed. devices_has_listener( (Chain)arg1, (object)arg2) → boolbool devices_has_listener(class TChainPyHandle, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “devices”. remove_devices_listener( (Chain)arg1, (object)arg2) → Nonevoid remove_devices_listener(class TChainPyHandle, class boost::python::api::object)Remove a previously set listener function or method from property “devices”. Return access to the mixer device that holds the chain’s mixer parameters:the Volume, Pan, and Sendamounts.Mute/unmute the chain.add_mute_listener( (Chain)arg1, (object)arg2) → Nonevoid add_mute_listener(class TChainPyHandle, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “mute” has changed. mute_has_listener( (Chain)arg1, (object)arg2) → boolbool mute_has_listener(class TChainPyHandle, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “mute”. remove_mute_listener( (Chain)arg1, (object)arg2) → Nonevoid remove_mute_listener(class TChainPyHandle, class boost::python::api::object)Remove a previously set listener function or method from property “mute”. Read/write access to the name of the Chain, as visible in the track header.add_name_listener( (Chain)arg1, (object)arg2) → Nonevoid add_name_listener(class TChainPyHandle, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “name” has changed. name_has_listener( (Chain)arg1, (object)arg2) → boolbool name_has_listener(class TChainPyHandle, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “name”. remove_name_listener( (Chain)arg1, (object)arg2) → Nonevoid remove_name_listener(class TChainPyHandle, class boost::python::api::object)Remove a previously set listener function or method from property “name”. Get/Set the solo status of the chain. Note that this will not disable thesolo state of any other Chain in the same rack. If you want exclusive solo, you have to disable the solo state of the other Chains manually.add_solo_listener( (Chain)arg1, (object)arg2) → Nonevoid add_solo_listener(class TChainPyHandle, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “solo” has changed. remove_solo_listener( (Chain)arg1, (object)arg2) → Nonevoid remove_solo_listener(class TChainPyHandle, class boost::python::api::object)Remove a previously set listener function or method from property “solo”. solo_has_listener( (Chain)arg1, (object)arg2) → boolbool solo_has_listener(class TChainPyHandle, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “solo”. This class represents a Clip in Live. It can be either an AudioClip or a MIDI Clip, in an Arrangement or the Session, dependingon the Track (Slot) it lives in.Get the canonical parent of the Clip.Get/set access to the color of the Clip (RGB).add_color_listener( (Clip)arg1, (object)arg2) → Nonevoid add_color_listener(class TPyHandle<class AClip>, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “color” has changed. color_has_listener( (Clip)arg1, (object)arg2) → boolbool color_has_listener(class TPyHandle<class AClip>, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “color”. remove_color_listener( (Clip)arg1, (object)arg2) → Nonevoid remove_color_listener(class TPyHandle<class AClip>, class boost::python::api::object)Remove a previously set listener function or method from property “color”. deselect_all_notes( (Clip)arg1) → Nonevoid deselect_all_notes(class TPyHandle<class AClip>)De-selects all notes present in the clip. fire( (Clip)arg1) → Nonevoid fire(class TPyHandle<class AClip>)(Re)Start playing this Clip. get_selected_notes( (Clip)arg1) → tupleclass boost::python::tuple get_selected_notes(class TPyHandle<class AClip>)Returns a tuple of tuples where each inner tuple represents a note. The inner tuple contains pitch, time, duration, velocity, and mute state. Return true if this Clip is an Audio Clip.A Clip can be either an Audioclip or a MIDI Clip.return true if this Clip is a MIDI Clip.A Clip can be either an Audioclip or a MIDI Clip.Get/Set if this Clip is currently playing. If the Clips trigger modeis set to a quantization value, the Clip will not start playing immediately.If you need to know wether the Clip was triggered, use the is_triggered property.returns true if the Clip was triggered to record or is recording.add_is_recording_listener( (Clip)arg1, (object)arg2) → Nonevoid add_is_recording_listener(class TPyHandle<class AClip>, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “is_recording” has changed. is_recording_has_listener( (Clip)arg1, (object)arg2) → boolbool is_recording_has_listener(class TPyHandle<class AClip>, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “is_recording”. remove_is_recording_listener( (Clip)arg1, (object)arg2) → Nonevoid remove_is_recording_listener(class TPyHandle<class AClip>, class boost::python::api::object)Remove a previously set listener function or method from property “is_recording”. returns true if the Clip was triggered or is playing.Get to the Clips length in beats.Get/Set the loop end pos of this Clip in beats.add_loop_end_listener( (Clip)arg1, (object)arg2) → Nonevoid add_loop_end_listener(class TPyHandle<class AClip>, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “loop_end” has changed. loop_end_has_listener( (Clip)arg1, (object)arg2) → boolbool loop_end_has_listener(class TPyHandle<class AClip>, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “loop_end”. remove_loop_end_listener( (Clip)arg1, (object)arg2) → Nonevoid remove_loop_end_listener(class TPyHandle<class AClip>, class boost::python::api::object)Remove a previously set listener function or method from property “loop_end”. add_loop_jump_listener( (Clip)arg1, (object)arg2) → Nonevoid add_loop_jump_listener(class TPyHandle<class AClip>, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “loop_jump” has changed. loop_jump_has_listener( (Clip)arg1, (object)arg2) → boolbool loop_jump_has_listener(class TPyHandle<class AClip>, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “loop_jump”. remove_loop_jump_listener( (Clip)arg1, (object)arg2) → Nonevoid remove_loop_jump_listener(class TPyHandle<class AClip>, class boost::python::api::object)Remove a previously set listener function or method from property “loop_jump”. Get/Set the Clips loopstart pos in beats.add_loop_start_listener( (Clip)arg1, (object)arg2) → Nonevoid add_loop_start_listener(class TPyHandle<class AClip>, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “loop_start” has changed. loop_start_has_listener( (Clip)arg1, (object)arg2) → boolbool loop_start_has_listener(class TPyHandle<class AClip>, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “loop_start”. remove_loop_start_listener( (Clip)arg1, (object)arg2) → Nonevoid remove_loop_start_listener(class TPyHandle<class AClip>, class boost::python::api::object)Remove a previously set listener function or method from property “loop_start”. Get/Set the Clips ‘loop is enabled’ flag.Only Warped Audio Clips or MIDI Clip can be looped.add_looping_listener( (Clip)arg1, (object)arg2) → Nonevoid add_looping_listener(class TPyHandle<class AClip>, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “looping” has changed. looping_has_listener( (Clip)arg1, (object)arg2) → boolbool looping_has_listener(class TPyHandle<class AClip>, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “looping”. remove_looping_listener( (Clip)arg1, (object)arg2) → Nonevoid remove_looping_listener(class TPyHandle<class AClip>, class boost::python::api::object)Remove a previously set listener function or method from property “looping”. move_playing_pos( (Clip)arg1, (float)arg2) → Nonevoid move_playing_pos(class TPyHandle<class AClip>, double)Jump forward or backward by the specified relative amount in beats. Will do nothing, if the Clip is not playing. Read/write access to the mute state of the Clip.add_muted_listener( (Clip)arg1, (object)arg2) → Nonevoid add_muted_listener(class TPyHandle<class AClip>, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “muted” has changed. muted_has_listener( (Clip)arg1, (object)arg2) → boolbool muted_has_listener(class TPyHandle<class AClip>, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “muted”. remove_muted_listener( (Clip)arg1, (object)arg2) → Nonevoid remove_muted_listener(class TPyHandle<class AClip>, class boost::python::api::object)Remove a previously set listener function or method from property “muted”. Read/write access to the name of the Clip.add_name_listener( (Clip)arg1, (object)arg2) → Nonevoid add_name_listener(class TPyHandle<class AClip>, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “name” has changed. name_has_listener( (Clip)arg1, (object)arg2) → boolbool name_has_listener(class TPyHandle<class AClip>, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “name”. remove_name_listener( (Clip)arg1, (object)arg2) → Nonevoid remove_name_listener(class TPyHandle<class AClip>, class boost::python::api::object)Remove a previously set listener function or method from property “name”. add_notes_listener( (Clip)arg1, (object)arg2) → Nonevoid add_notes_listener(class TPyHandle<class AClip>, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “notes” has changed. notes_has_listener( (Clip)arg1, (object)arg2) → boolbool notes_has_listener(class TPyHandle<class AClip>, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “notes”. remove_notes_listener( (Clip)arg1, (object)arg2) → Nonevoid remove_notes_listener(class TPyHandle<class AClip>, class boost::python::api::object)Remove a previously set listener function or method from property “notes”. Avalibale for AudioClips only.Read/write access to the pitch (in halftones) setting of theAudio Clip, ranging from -48 to 48add_pitch_coarse_listener( (Clip)arg1, (object)arg2) → Nonevoid add_pitch_coarse_listener(class TPyHandle<class AClip>, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “pitch_coarse” has changed. pitch_coarse_has_listener( (Clip)arg1, (object)arg2) → boolbool pitch_coarse_has_listener(class TPyHandle<class AClip>, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “pitch_coarse”. remove_pitch_coarse_listener( (Clip)arg1, (object)arg2) → Nonevoid remove_pitch_coarse_listener(class TPyHandle<class AClip>, class boost::python::api::object)Remove a previously set listener function or method from property “pitch_coarse”. Avalibale for AudioClips only.Read/write access to the pitch fine setting of theAudio Clip, ranging from -500 to 500add_pitch_fine_listener( (Clip)arg1, (object)arg2) → Nonevoid add_pitch_fine_listener(class TPyHandle<class AClip>, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “pitch_fine” has changed. pitch_fine_has_listener( (Clip)arg1, (object)arg2) → boolbool pitch_fine_has_listener(class TPyHandle<class AClip>, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “pitch_fine”. remove_pitch_fine_listener( (Clip)arg1, (object)arg2) → Nonevoid remove_pitch_fine_listener(class TPyHandle<class AClip>, class boost::python::api::object)Remove a previously set listener function or method from property “pitch_fine”. Constant access to the current playing position of the clip.The returned value is the position in beats for midi and warped audio clips, or in seconds for unwarped audio clips. Stopped clips will return 0.add_playing_position_listener( (Clip)arg1, (object)arg2) → Nonevoid add_playing_position_listener(class TPyHandle<class AClip>, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “playing_position” has changed. playing_position_has_listener( (Clip)arg1, (object)arg2) → boolbool playing_position_has_listener(class TPyHandle<class AClip>, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “playing_position”. remove_playing_position_listener( (Clip)arg1, (object)arg2) → Nonevoid remove_playing_position_listener(class TPyHandle<class AClip>, class boost::python::api::object)Remove a previously set listener function or method from property “playing_position”. add_playing_status_listener( (Clip)arg1, (object)arg2) → Nonevoid add_playing_status_listener(class TPyHandle<class AClip>, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “playing_status” has changed. playing_status_has_listener( (Clip)arg1, (object)arg2) → boolbool playing_status_has_listener(class TPyHandle<class AClip>, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “playing_status”. remove_playing_status_listener( (Clip)arg1, (object)arg2) → Nonevoid remove_playing_status_listener(class TPyHandle<class AClip>, class boost::python::api::object)Remove a previously set listener function or method from property “playing_status”. replace_selected_notes( (Clip)arg1, (tuple)arg2) → Nonevoid replace_selected_notes(class TPyHandle<class AClip>, class boost::python::tuple)Called with a tuple of tuples where each inner tuple represents a note in the same format as returned by get_selected_notes. The notes described that way will then be used to replace the old selection. select_all_notes( (Clip)arg1) → Nonevoid select_all_notes(class TPyHandle<class AClip>)Selects all notes present in the clip. set_fire_button_state( (Clip)arg1, (bool)arg2) → Nonevoid set_fire_button_state(class TPyHandle<class AClip>, bool)Set the clip’s fire button state directly. Supports all launch modes. Get/Set access to the global signature denominator of the Clip.add_signature_denominator_listener( (Clip)arg1, (object)arg2) → Nonevoid add_signature_denominator_listener(class TPyHandle<class AClip>, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “signature_denominator” has changed. remove_signature_denominator_listener( (Clip)arg1, (object)arg2) → Nonevoid remove_signature_denominator_listener(class TPyHandle<class AClip>, class boost::python::api::object)Remove a previously set listener function or method from property “signature_denominator”. signature_denominator_has_listener( (Clip)arg1, (object)arg2) → boolbool signature_denominator_has_listener(class TPyHandle<class AClip>, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “signature_denominator”. Get/Set access to the global signature numerator of the Clip.add_signature_numerator_listener( (Clip)arg1, (object)arg2) → Nonevoid add_signature_numerator_listener(class TPyHandle<class AClip>, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “signature_numerator” has changed. remove_signature_numerator_listener( (Clip)arg1, (object)arg2) → Nonevoid remove_signature_numerator_listener(class TPyHandle<class AClip>, class boost::python::api::object)Remove a previously set listener function or method from property “signature_numerator”. signature_numerator_has_listener( (Clip)arg1, (object)arg2) → boolbool signature_numerator_has_listener(class TPyHandle<class AClip>, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “signature_numerator”. stop( (Clip)arg1) → Nonevoid stop(class TPyHandle<class AClip>)Stop playing this Clip. Avalibale for AudioClips only.Get/Set if this Clip is timestreched.add_warping_listener( (Clip)arg1, (object)arg2) → Nonevoid add_warping_listener(class TPyHandle<class AClip>, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “warping” has changed. remove_warping_listener( (Clip)arg1, (object)arg2) → Nonevoid remove_warping_listener(class TPyHandle<class AClip>, class boost::python::api::object)Remove a previously set listener function or method from property “warping”. warping_has_listener( (Clip)arg1, (object)arg2) → boolbool warping_has_listener(class TPyHandle<class AClip>, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “warping”. returns true if the Clip will record on being started.This class represents an entry in Lives Session view matrix.Get the canonical parent of the ClipSlot.Returns the Clip which this clipslots currently owns. Might be None.Returns true if firing this slot will fire clips in other slots.Can only be true for slots in group tracks.add_controls_other_clips_listener( (ClipSlot)arg1, (object)arg2) → Nonevoid add_controls_other_clips_listener(class TPyHandle<class AGroupAndClipSlotBase>, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “controls_other_clips” has changed. controls_other_clips_has_listener( (ClipSlot)arg1, (object)arg2) → boolbool controls_other_clips_has_listener(class TPyHandle<class AGroupAndClipSlotBase>, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “controls_other_clips”. remove_controls_other_clips_listener( (ClipSlot)arg1, (object)arg2) → Nonevoid remove_controls_other_clips_listener(class TPyHandle<class AGroupAndClipSlotBase>, class boost::python::api::object)Remove a previously set listener function or method from property “controls_other_clips”. fire( (ClipSlot)arg1) → Nonevoid fire(class TPyHandle<class AGroupAndClipSlotBase>)Fire a Clip if this Clipslot owns one, else trigger the stop button, if we have one. Returns true if this Clipslot owns a Clip.add_has_clip_listener( (ClipSlot)arg1, (object)arg2) → Nonevoid add_has_clip_listener(class TPyHandle<class AGroupAndClipSlotBase>, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “has_clip” has changed. has_clip_has_listener( (ClipSlot)arg1, (object)arg2) → boolbool has_clip_has_listener(class TPyHandle<class AGroupAndClipSlotBase>, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “has_clip”. remove_has_clip_listener( (ClipSlot)arg1, (object)arg2) → Nonevoid remove_has_clip_listener(class TPyHandle<class AGroupAndClipSlotBase>, class boost::python::api::object)Remove a previously set listener function or method from property “has_clip”. Get/Set if this Clip has a stop button, which will, if fired, stop anyother Clip that is currently playing the Track we do belong to.add_has_stop_button_listener( (ClipSlot)arg1, (object)arg2) → Nonevoid add_has_stop_button_listener(class TPyHandle<class AGroupAndClipSlotBase>, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “has_stop_button” has changed. has_stop_button_has_listener( (ClipSlot)arg1, (object)arg2) → boolbool has_stop_button_has_listener(class TPyHandle<class AGroupAndClipSlotBase>, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “has_stop_button”. remove_has_stop_button_listener( (ClipSlot)arg1, (object)arg2) → Nonevoid remove_has_stop_button_listener(class TPyHandle<class AGroupAndClipSlotBase>, class boost::python::api::object)Remove a previously set listener function or method from property “has_stop_button”. Returns whether the clip associated with the slot is playing.Returns whether the clip associated with the slot is recording.Const access to the triggering state of the clip slot.add_is_triggered_listener( (ClipSlot)arg1, (object)arg2) → Nonevoid add_is_triggered_listener(class TPyHandle<class AGroupAndClipSlotBase>, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “is_triggered” has changed. is_triggered_has_listener( (ClipSlot)arg1, (object)arg2) → boolbool is_triggered_has_listener(class TPyHandle<class AGroupAndClipSlotBase>, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “is_triggered”. remove_is_triggered_listener( (ClipSlot)arg1, (object)arg2) → Nonevoid remove_is_triggered_listener(class TPyHandle<class AGroupAndClipSlotBase>, class boost::python::api::object)Remove a previously set listener function or method from property “is_triggered”. Const access to the playing state of the clip slot.Can be either stopped, playing, or recording.add_playing_status_listener( (ClipSlot)arg1, (object)arg2) → Nonevoid add_playing_status_listener(class TPyHandle<class AGroupAndClipSlotBase>, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “playing_status” has changed. playing_status_has_listener( (ClipSlot)arg1, (object)arg2) → boolbool playing_status_has_listener(class TPyHandle<class AGroupAndClipSlotBase>, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “playing_status”. remove_playing_status_listener( (ClipSlot)arg1, (object)arg2) → Nonevoid remove_playing_status_listener(class TPyHandle<class AGroupAndClipSlotBase>, class boost::python::api::object)Remove a previously set listener function or method from property “playing_status”. set_fire_button_state( (ClipSlot)arg1, (bool)arg2) → Nonevoid set_fire_button_state(class TPyHandle<class AGroupAndClipSlotBase>, bool)Set the clipslot’s fire button state directly. Supports all launch modes. stop( (ClipSlot)arg1) → Nonevoid stop(class TPyHandle<class AGroupAndClipSlotBase>)Stop playing the contained Clip, if there is a Clip and its currently playing. returns true if the clip slot will record on being fired.This class represents a MIDI or Audio DSP-Device in Live.Returns true if the device is a rack.Get the canonical parent of the Device.Return const access to the list of chains in this device. Throws an exception if can_have_chains is false.add_chains_listener( (Device)arg1, (object)arg2) → Nonevoid add_chains_listener(class TPyHandle<class ADevice>, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “chains” has changed. chains_has_listener( (Device)arg1, (object)arg2) → boolbool chains_has_listener(class TPyHandle<class ADevice>, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “chains”. remove_chains_listener( (Device)arg1, (object)arg2) → Nonevoid remove_chains_listener(class TPyHandle<class ADevice>, class boost::python::api::object)Remove a previously set listener function or method from property “chains”. Return const access to the name of the device’s class.Return access to the name of the device.add_name_listener( (Device)arg1, (object)arg2) → Nonevoid add_name_listener(class TPyHandle<class ADevice>, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “name” has changed. name_has_listener( (Device)arg1, (object)arg2) → boolbool name_has_listener(class TPyHandle<class ADevice>, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “name”. remove_name_listener( (Device)arg1, (object)arg2) → Nonevoid remove_name_listener(class TPyHandle<class ADevice>, class boost::python::api::object)Remove a previously set listener function or method from property “name”. Const access to the list of available automatable parameters for this device.add_parameters_listener( (Device)arg1, (object)arg2) → Nonevoid add_parameters_listener(class TPyHandle<class ADevice>, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “parameters” has changed. parameters_has_listener( (Device)arg1, (object)arg2) → boolbool parameters_has_listener(class TPyHandle<class ADevice>, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “parameters”. remove_parameters_listener( (Device)arg1, (object)arg2) → Nonevoid remove_parameters_listener(class TPyHandle<class ADevice>, class boost::python::api::object)Remove a previously set listener function or method from property “parameters”. Return const access to the list of return chains in this device. Throws an exception if can_have_chains is false.add_return_chains_listener( (Device)arg1, (object)arg2) → Nonevoid add_return_chains_listener(class TPyHandle<class ADevice>, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “return_chains” has changed. remove_return_chains_listener( (Device)arg1, (object)arg2) → Nonevoid remove_return_chains_listener(class TPyHandle<class ADevice>, class boost::python::api::object)Remove a previously set listener function or method from property “return_chains”. return_chains_has_listener( (Device)arg1, (object)arg2) → boolbool return_chains_has_listener(class TPyHandle<class ADevice>, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “return_chains”. store_chosen_bank( (Device)arg1, (int)arg2, (int)arg3) → Nonevoid store_chosen_bank(class TPyHandle<class ADevice>, long, long)Set the selected bank in the device for persistency. This class represents a Chain’s Mixer Device in Live, which gives youaccess to the Volume, Panning, and Send properties of a Chain.Get the canonical parent of the mixer device.Const access to the Chain’s Activator Device Parameter.Const access to the Chain’s Panning Device Parameter.Const access to the Chain’s list of Send Amount Device Parameters.add_sends_listener( (ChainMixerDevice)arg1, (object)arg2) → Nonevoid add_sends_listener(class TPyHandle<class ABranchMixerDevice>, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “sends” has changed. remove_sends_listener( (ChainMixerDevice)arg1, (object)arg2) → Nonevoid remove_sends_listener(class TPyHandle<class ABranchMixerDevice>, class boost::python::api::object)Remove a previously set listener function or method from property “sends”. sends_has_listener( (ChainMixerDevice)arg1, (object)arg2) → boolbool sends_has_listener(class TPyHandle<class ABranchMixerDevice>, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “sends”. Const access to the Chain’s Volume Device Parameter.This class represents a Mixer Device in Live, which gives youaccess to the Volume and Panning properties of a Track.Get the canonical parent of the mixer device.Player- and ReturnTracks only: Const access to the Track’s Crossfade Assign State.add_crossfade_assign_listener( (MixerDevice)arg1, (object)arg2) → Nonevoid add_crossfade_assign_listener(class TPyHandle<class ATrackDevice>, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “crossfade_assign” has changed. crossfade_assign_has_listener( (MixerDevice)arg1, (object)arg2) → boolbool crossfade_assign_has_listener(class TPyHandle<class ATrackDevice>, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “crossfade_assign”. remove_crossfade_assign_listener( (MixerDevice)arg1, (object)arg2) → Nonevoid remove_crossfade_assign_listener(class TPyHandle<class ATrackDevice>, class boost::python::api::object)Remove a previously set listener function or method from property “crossfade_assign”. MasterTrack only: Const access to the Crossfader.MasterTrack only: Const access to the Cue Volume Parameter.Const access to the Tracks Panning Device Parameter.Const access to the Tracks list of Send Amount Device Parameters.add_sends_listener( (MixerDevice)arg1, (object)arg2) → Nonevoid add_sends_listener(class TPyHandle<class ATrackDevice>, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “sends” has changed. remove_sends_listener( (MixerDevice)arg1, (object)arg2) → Nonevoid remove_sends_listener(class TPyHandle<class ATrackDevice>, class boost::python::api::object)Remove a previously set listener function or method from property “sends”. sends_has_listener( (MixerDevice)arg1, (object)arg2) → boolbool sends_has_listener(class TPyHandle<class ATrackDevice>, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “sends”. MasterTrack only: Const access to the Song’s Tempo.Const access to the Tracks Activator Device Parameter.Const access to the Tracks Volume Device Parameter.This class represents a (automatable) parameter within a MIDI orAudio DSP-Device.Get the canonical parent of the device parameter.Return the default value for this parameter. A Default value is onlyavailable for non-quantized parameter types (see ‘is_quantized’).Returns false if the parameter has been macro mapped or disabled by Max.Returns True, if this value is a boolean or integer like switch.Non quantized values are continues float values.Returns const access to the upper value of the allowed range forthis parameterReturns const access to the lower value of the allowed range forthis parameterReturns const access the name of this parameter, as visible in Livesautomation choosers.Returns const access the original name of this parameter, unaffected ofany renamings.Get/Set the current value (as visible in the GUI) this parameter.The value must be inside the min/max properties of this device.add_value_listener( (DeviceParameter)arg1, (object)arg2) → Nonevoid add_value_listener(class TPyHandle<class ATimeable>, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “value” has changed. remove_value_listener( (DeviceParameter)arg1, (object)arg2) → Nonevoid remove_value_listener(class TPyHandle<class ATimeable>, class boost::python::api::object)Remove a previously set listener function or method from property “value”. value_has_listener( (DeviceParameter)arg1, (object)arg2) → boolbool value_has_listener(class TPyHandle<class ATimeable>, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “value”. this is the base class for an object that is accessible via the LOMStructure to define feedback properties of MIDI mappings.Structure to define feedback properties of MIDI mappings.forward_midi_cc( (int)arg1, (int)arg2, (int)arg3, (int)arg4) → boolbool forward_midi_cc(unsigned long, unsigned long, long, long)forward_midi_note( (int)arg1, (int)arg2, (int)arg3, (int)arg4) → boolbool forward_midi_note(unsigned long, unsigned long, long, long)forward_midi_pitchbend( (int)arg1, (int)arg2, (int)arg3) → boolbool forward_midi_pitchbend(unsigned long, unsigned long, long)map_midi_cc( (int)arg1, (DeviceParameter)arg2, (int)arg3, (int)arg4, (MapMode)arg5, (bool)arg6) → boolbool map_midi_cc(unsigned long, class TPyHandle<class ATimeable>, long, long, enum NRemoteMapperTypes::TControllerMapMode, bool)map_midi_cc_with_feedback_map( (int)arg1, (DeviceParameter)arg2, (int)arg3, (int)arg4, (MapMode)arg5, (CCFeedbackRule)arg6, (bool)arg7) → boolbool map_midi_cc_with_feedback_map(unsigned long, class TPyHandle<class ATimeable>, long, long, enum NRemoteMapperTypes::TControllerMapMode, class NPythonMidiMap::TCCFeedbackRule, bool)map_midi_note( (int)arg1, (DeviceParameter)arg2, (int)arg3, (int)arg4) → boolbool map_midi_note(unsigned long, class TPyHandle<class ATimeable>, long, long)map_midi_note_with_feedback_map( (int)arg1, (DeviceParameter)arg2, (int)arg3, (int)arg4, (object)arg5) → boolbool map_midi_note_with_feedback_map(unsigned long, class TPyHandle<class ATimeable>, long, long, class NPythonMidiMap::TNoteFeedbackRule)map_midi_pitchbend( (int)arg1, (DeviceParameter)arg2, (int)arg3, (bool)arg4) → boolbool map_midi_pitchbend(unsigned long, class TPyHandle<class ATimeable>, long, bool)map_midi_pitchbend_with_feedback_map( (int)arg1, (DeviceParameter)arg2, (int)arg3, (PitchBendFeedbackRule)arg4, (bool)arg5) → boolbool map_midi_pitchbend_with_feedback_map(unsigned long, class TPyHandle<class ATimeable>, long, class NPythonMidiMap::TPitchBendFeedbackRule, bool)send_feedback_for_parameter( (int)arg1, (DeviceParameter)arg2) → Nonevoid send_feedback_for_parameter(unsigned long, class TPyHandle<class ATimeable>)This class represents an series of ClipSlots in Lives Sessionview matrix.Get the canonical parent of the scene.return a list of clipslots (see class AClipSlot) that this scene covers.add_clip_slots_listener( (Scene)arg1, (object)arg2) → Nonevoid add_clip_slots_listener(class TPyHandle<class AScene>, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “clip_slots” has changed. clip_slots_has_listener( (Scene)arg1, (object)arg2) → boolbool clip_slots_has_listener(class TPyHandle<class AScene>, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “clip_slots”. remove_clip_slots_listener( (Scene)arg1, (object)arg2) → Nonevoid remove_clip_slots_listener(class TPyHandle<class AScene>, class boost::python::api::object)Remove a previously set listener function or method from property “clip_slots”. Get/set access to the color of the Scene (RGB).add_color_listener( (Scene)arg1, (object)arg2) → Nonevoid add_color_listener(class TPyHandle<class AScene>, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “color” has changed. color_has_listener( (Scene)arg1, (object)arg2) → boolbool color_has_listener(class TPyHandle<class AScene>, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “color”. remove_color_listener( (Scene)arg1, (object)arg2) → Nonevoid remove_color_listener(class TPyHandle<class AScene>, class boost::python::api::object)Remove a previously set listener function or method from property “color”. fire( (Scene)arg1) → Nonevoid fire(class TPyHandle<class AScene>)Fire the scene directly. Will fire all clipslots that this scene owns and select the scene itself. fire_as_selected( (Scene)arg1) → Nonevoid fire_as_selected(class TPyHandle<class AScene>)Fire the selected scene. Will fire all clipslots that this scene owns and select the next scene if necessary. Const access to the scene’s trigger state.add_is_triggered_listener( (Scene)arg1, (object)arg2) → Nonevoid add_is_triggered_listener(class TPyHandle<class AScene>, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “is_triggered” has changed. is_triggered_has_listener( (Scene)arg1, (object)arg2) → boolbool is_triggered_has_listener(class TPyHandle<class AScene>, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “is_triggered”. remove_is_triggered_listener( (Scene)arg1, (object)arg2) → Nonevoid remove_is_triggered_listener(class TPyHandle<class AScene>, class boost::python::api::object)Remove a previously set listener function or method from property “is_triggered”. Get/Set the name of the scene. Might contain the substring BPM, whichidentifies that the scene will change the tempo when fireed. To Get/Setthe temp, use the ‘tempo’ property of the scene.add_name_listener( (Scene)arg1, (object)arg2) → Nonevoid add_name_listener(class TPyHandle<class AScene>, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “name” has changed. name_has_listener( (Scene)arg1, (object)arg2) → boolbool name_has_listener(class TPyHandle<class AScene>, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “name”. remove_name_listener( (Scene)arg1, (object)arg2) → Nonevoid remove_name_listener(class TPyHandle<class AScene>, class boost::python::api::object)Remove a previously set listener function or method from property “name”. set_fire_button_state( (Scene)arg1, (bool)arg2) → Nonevoid set_fire_button_state(class TPyHandle<class AScene>, bool)Set the scene’s fire button state directly. Supports all launch modes. Get/Set the the tempo value of the scene.The Song will use the Scenes tempo as soon as the Scene is fired.Returns -1 if the Scene has no tempo propery.Represents a Time, splitted into Bars, Beats, SubDivision and Ticks.Represents a ‘Marker’ in the arrangement.Get the canonical parent of the cue point.jump( (CuePoint)arg1) → Nonevoid jump(class TPyHandle<class ACuePoint>)When the Song is playing, set the playing-position quantized to this Cuepoint’s time. When not playing, simply move the start playing position. Get/Listen to the name of this CuePoint, as visible in the arranger.add_name_listener( (CuePoint)arg1, (object)arg2) → Nonevoid add_name_listener(class TPyHandle<class ACuePoint>, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “name” has changed. name_has_listener( (CuePoint)arg1, (object)arg2) → boolbool name_has_listener(class TPyHandle<class ACuePoint>, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “name”. remove_name_listener( (CuePoint)arg1, (object)arg2) → Nonevoid remove_name_listener(class TPyHandle<class ACuePoint>, class boost::python::api::object)Remove a previously set listener function or method from property “name”. Get/Listen to the CuePoint’s time in beats.add_time_listener( (CuePoint)arg1, (object)arg2) → Nonevoid add_time_listener(class TPyHandle<class ACuePoint>, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “time” has changed. remove_time_listener( (CuePoint)arg1, (object)arg2) → Nonevoid remove_time_listener(class TPyHandle<class ACuePoint>, class boost::python::api::object)Remove a previously set listener function or method from property “time”. time_has_listener( (CuePoint)arg1, (object)arg2) → boolbool time_has_listener(class TPyHandle<class ACuePoint>, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “time”. Represents a Time, split into Hours, Minutes, Seconds and Frames.The frame type must be specified when calling a function that returnsa SmptTime.This class represents a Live set.Representing the view aspects of a Live document: The Session and Arrangerview.Get the canonical parent of the song view.Get/Set the Clip that is currently visible in Lives Detailview.add_detail_clip_listener( (View)arg1, (object)arg2) → Nonevoid add_detail_clip_listener(class TPyViewData<class ASong>, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “detail_clip” has changed. detail_clip_has_listener( (View)arg1, (object)arg2) → boolbool detail_clip_has_listener(class TPyViewData<class ASong>, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “detail_clip”. remove_detail_clip_listener( (View)arg1, (object)arg2) → Nonevoid remove_detail_clip_listener(class TPyViewData<class ASong>, class boost::python::api::object)Remove a previously set listener function or method from property “detail_clip”. Get/Set if the Envelope/Note draw mode is enabled.add_draw_mode_listener( (View)arg1, (object)arg2) → Nonevoid add_draw_mode_listener(class TPyViewData<class ASong>, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “draw_mode” has changed. draw_mode_has_listener( (View)arg1, (object)arg2) → boolbool draw_mode_has_listener(class TPyViewData<class ASong>, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “draw_mode”. remove_draw_mode_listener( (View)arg1, (object)arg2) → Nonevoid remove_draw_mode_listener(class TPyViewData<class ASong>, class boost::python::api::object)Remove a previously set listener function or method from property “draw_mode”. Get/Set if the Arrangerview should scroll to show the playmarker.add_follow_song_listener( (View)arg1, (object)arg2) → Nonevoid add_follow_song_listener(class TPyViewData<class ASong>, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “follow_song” has changed. follow_song_has_listener( (View)arg1, (object)arg2) → boolbool follow_song_has_listener(class TPyViewData<class ASong>, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “follow_song”. remove_follow_song_listener( (View)arg1, (object)arg2) → Nonevoid remove_follow_song_listener(class TPyViewData<class ASong>, class boost::python::api::object)Remove a previously set listener function or method from property “follow_song”. Get/Set the clip slot, defined via the highlighted track and scene in the Session.Will be None for Master- and Sendtracks.select_device( (View)arg1, (Device)arg2) → Nonevoid select_device(class TPyViewData<class ASong>, class TPyHandle<class ADevice>)Select the given device. Get the currently selected device parameter.add_selected_parameter_listener( (View)arg1, (object)arg2) → Nonevoid add_selected_parameter_listener(class TPyViewData<class ASong>, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “selected_parameter” has changed. remove_selected_parameter_listener( (View)arg1, (object)arg2) → Nonevoid remove_selected_parameter_listener(class TPyViewData<class ASong>, class boost::python::api::object)Remove a previously set listener function or method from property “selected_parameter”. selected_parameter_has_listener( (View)arg1, (object)arg2) → boolbool selected_parameter_has_listener(class TPyViewData<class ASong>, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “selected_parameter”. Get/Set the current selected scene in Lives Sessionview.add_selected_scene_listener( (View)arg1, (object)arg2) → Nonevoid add_selected_scene_listener(class TPyViewData<class ASong>, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “selected_scene” has changed. remove_selected_scene_listener( (View)arg1, (object)arg2) → Nonevoid remove_selected_scene_listener(class TPyViewData<class ASong>, class boost::python::api::object)Remove a previously set listener function or method from property “selected_scene”. selected_scene_has_listener( (View)arg1, (object)arg2) → boolbool selected_scene_has_listener(class TPyViewData<class ASong>, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “selected_scene”. Get/Set the current selected Track in Lives Session or Arrangerview.add_selected_track_listener( (View)arg1, (object)arg2) → Nonevoid add_selected_track_listener(class TPyViewData<class ASong>, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “selected_track” has changed. remove_selected_track_listener( (View)arg1, (object)arg2) → Nonevoid remove_selected_track_listener(class TPyViewData<class ASong>, class boost::python::api::object)Remove a previously set listener function or method from property “selected_track”. selected_track_has_listener( (View)arg1, (object)arg2) → boolbool selected_track_has_listener(class TPyViewData<class ASong>, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “selected_track”. Access to the selected Deviceadd_appointed_device_listener( (Song)arg1, (object)arg2) → Nonevoid add_appointed_device_listener(class TPyHandle<class ASong>, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “appointed_device” has changed. appointed_device_has_listener( (Song)arg1, (object)arg2) → boolbool appointed_device_has_listener(class TPyHandle<class ASong>, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “appointed_device”. remove_appointed_device_listener( (Song)arg1, (object)arg2) → Nonevoid remove_appointed_device_listener(class TPyHandle<class ASong>, class boost::python::api::object)Remove a previously set listener function or method from property “appointed_device”. Get/Set if triggering a Clip in the Session, disabled the playback ofClips in the Arranger.add_back_to_arranger_listener( (Song)arg1, (object)arg2) → Nonevoid add_back_to_arranger_listener(class TPyHandle<class ASong>, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “back_to_arranger” has changed. back_to_arranger_has_listener( (Song)arg1, (object)arg2) → boolbool back_to_arranger_has_listener(class TPyHandle<class ASong>, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “back_to_arranger”. remove_back_to_arranger_listener( (Song)arg1, (object)arg2) → Nonevoid remove_back_to_arranger_listener(class TPyHandle<class ASong>, class boost::python::api::object)Remove a previously set listener function or method from property “back_to_arranger”. Returns true when there is a cue marker right to the playing pos thatwe could jump to.add_can_jump_to_next_cue_listener( (Song)arg1, (object)arg2) → Nonevoid add_can_jump_to_next_cue_listener(class TPyHandle<class ASong>, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “can_jump_to_next_cue” has changed. can_jump_to_next_cue_has_listener( (Song)arg1, (object)arg2) → boolbool can_jump_to_next_cue_has_listener(class TPyHandle<class ASong>, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “can_jump_to_next_cue”. remove_can_jump_to_next_cue_listener( (Song)arg1, (object)arg2) → Nonevoid remove_can_jump_to_next_cue_listener(class TPyHandle<class ASong>, class boost::python::api::object)Remove a previously set listener function or method from property “can_jump_to_next_cue”. Returns true when there is a cue marker left to the playing pos thatwe could jump to.add_can_jump_to_prev_cue_listener( (Song)arg1, (object)arg2) → Nonevoid add_can_jump_to_prev_cue_listener(class TPyHandle<class ASong>, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “can_jump_to_prev_cue” has changed. can_jump_to_prev_cue_has_listener( (Song)arg1, (object)arg2) → boolbool can_jump_to_prev_cue_has_listener(class TPyHandle<class ASong>, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “can_jump_to_prev_cue”. remove_can_jump_to_prev_cue_listener( (Song)arg1, (object)arg2) → Nonevoid remove_can_jump_to_prev_cue_listener(class TPyHandle<class ASong>, class boost::python::api::object)Remove a previously set listener function or method from property “can_jump_to_prev_cue”. Returns true if there is an undone action that we can redo.Returns true if there is an action that we can restore.Get the canonical parent of the song.Get/Set access to the quantization settings that are used to fireClips in the Session.add_clip_trigger_quantization_listener( (Song)arg1, (object)arg2) → Nonevoid add_clip_trigger_quantization_listener(class TPyHandle<class ASong>, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “clip_trigger_quantization” has changed. clip_trigger_quantization_has_listener( (Song)arg1, (object)arg2) → boolbool clip_trigger_quantization_has_listener(class TPyHandle<class ASong>, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “clip_trigger_quantization”. remove_clip_trigger_quantization_listener( (Song)arg1, (object)arg2) → Nonevoid remove_clip_trigger_quantization_listener(class TPyHandle<class ASong>, class boost::python::api::object)Remove a previously set listener function or method from property “clip_trigger_quantization”. continue_playing( (Song)arg1) → Nonevoid continue_playing(class TPyHandle<class ASong>)Continue playing the song from the current position Const access to a list of all cue points of the Live Song.add_cue_points_listener( (Song)arg1, (object)arg2) → Nonevoid add_cue_points_listener(class TPyHandle<class ASong>, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “cue_points” has changed. cue_points_has_listener( (Song)arg1, (object)arg2) → boolbool cue_points_has_listener(class TPyHandle<class ASong>, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “cue_points”. remove_cue_points_listener( (Song)arg1, (object)arg2) → Nonevoid remove_cue_points_listener(class TPyHandle<class ASong>, class boost::python::api::object)Remove a previously set listener function or method from property “cue_points”. Get/Set access to the songs current playing position in ms.add_current_song_time_listener( (Song)arg1, (object)arg2) → Nonevoid add_current_song_time_listener(class TPyHandle<class ASong>, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “current_song_time” has changed. current_song_time_has_listener( (Song)arg1, (object)arg2) → boolbool current_song_time_has_listener(class TPyHandle<class ASong>, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “current_song_time”. remove_current_song_time_listener( (Song)arg1, (object)arg2) → Nonevoid remove_current_song_time_listener(class TPyHandle<class ASong>, class boost::python::api::object)Remove a previously set listener function or method from property “current_song_time”. Get if Tracks should be armed exclusively by default.Get if Tracks should be soloed exclusively by default.get_beats_loop_length( (Song)arg1) → BeatTimestruct NPythonSong::TBeatTime get_beats_loop_length(class TPyHandle<class ASong>)Get const access to the songs loop length, using a BeatTime class with the current global set signature. get_beats_loop_start( (Song)arg1) → BeatTimestruct NPythonSong::TBeatTime get_beats_loop_start(class TPyHandle<class ASong>)Get const access to the songs loop start, using a BeatTime class with the current global set signature. get_current_beats_song_time( (Song)arg1) → BeatTimestruct NPythonSong::TBeatTime get_current_beats_song_time(class TPyHandle<class ASong>)Get const access to the songs current playing position, using a BeatTime class with the current global set signature. get_current_smpte_song_time( (Song)arg1, (int)arg2) → SmptTimestruct NPythonSong::TSmptTime get_current_smpte_song_time(class TPyHandle<class ASong>, long)Get const access to the songs current playing position, by specifying the SMPTE format in which you would like to receive the time. Get/Set the global groove amount, that adjust all setup groovesin all clips.add_groove_amount_listener( (Song)arg1, (object)arg2) → Nonevoid add_groove_amount_listener(class TPyHandle<class ASong>, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “groove_amount” has changed. groove_amount_has_listener( (Song)arg1, (object)arg2) → boolbool groove_amount_has_listener(class TPyHandle<class ASong>, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “groove_amount”. remove_groove_amount_listener( (Song)arg1, (object)arg2) → Nonevoid remove_groove_amount_listener(class TPyHandle<class ASong>, class boost::python::api::object)Remove a previously set listener function or method from property “groove_amount”. is_cue_point_selected( (Song)arg1) → boolbool is_cue_point_selected(class TPyHandle<class ASong>)Return true if the global playing pos is currently on a cue point. Returns true if the Song is currently playing.add_is_playing_listener( (Song)arg1, (object)arg2) → Nonevoid add_is_playing_listener(class TPyHandle<class ASong>, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “is_playing” has changed. is_playing_has_listener( (Song)arg1, (object)arg2) → boolbool is_playing_has_listener(class TPyHandle<class ASong>, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “is_playing”. remove_is_playing_listener( (Song)arg1, (object)arg2) → Nonevoid remove_is_playing_listener(class TPyHandle<class ASong>, class boost::python::api::object)Remove a previously set listener function or method from property “is_playing”. jump_by( (Song)arg1, (float)arg2) → Nonevoid jump_by(class TPyHandle<class ASong>, double)Set a new playing pos, relative to the current one. jump_to_next_cue( (Song)arg1) → Nonevoid jump_to_next_cue(class TPyHandle<class ASong>)Jump to the next cue (marker) if possible. jump_to_prev_cue( (Song)arg1) → Nonevoid jump_to_prev_cue(class TPyHandle<class ASong>)Jump to the prior cue (marker) if possible. Return the time of the last set event in the song. In contrary tosong_length, this will not add some extra beats that are mostly neededfor Display purposes in the Arrangerview.Get/Set the the looping flag that en/disables the usage of the globalloop markers in the song.add_loop_listener( (Song)arg1, (object)arg2) → Nonevoid add_loop_listener(class TPyHandle<class ASong>, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “loop” has changed. loop_has_listener( (Song)arg1, (object)arg2) → boolbool loop_has_listener(class TPyHandle<class ASong>, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “loop”. remove_loop_listener( (Song)arg1, (object)arg2) → Nonevoid remove_loop_listener(class TPyHandle<class ASong>, class boost::python::api::object)Remove a previously set listener function or method from property “loop”. Get/Set the lenght of the global loop marker position in beats.add_loop_length_listener( (Song)arg1, (object)arg2) → Nonevoid add_loop_length_listener(class TPyHandle<class ASong>, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “loop_length” has changed. loop_length_has_listener( (Song)arg1, (object)arg2) → boolbool loop_length_has_listener(class TPyHandle<class ASong>, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “loop_length”. remove_loop_length_listener( (Song)arg1, (object)arg2) → Nonevoid remove_loop_length_listener(class TPyHandle<class ASong>, class boost::python::api::object)Remove a previously set listener function or method from property “loop_length”. Get/Set the start of the global loop marker position in beats.add_loop_start_listener( (Song)arg1, (object)arg2) → Nonevoid add_loop_start_listener(class TPyHandle<class ASong>, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “loop_start” has changed. loop_start_has_listener( (Song)arg1, (object)arg2) → boolbool loop_start_has_listener(class TPyHandle<class ASong>, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “loop_start”. remove_loop_start_listener( (Song)arg1, (object)arg2) → Nonevoid remove_loop_start_listener(class TPyHandle<class ASong>, class boost::python::api::object)Remove a previously set listener function or method from property “loop_start”. Access to the Master Track (always available)Get/Set if the metronom is audible.add_metronome_listener( (Song)arg1, (object)arg2) → Nonevoid add_metronome_listener(class TPyHandle<class ASong>, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “metronome” has changed. metronome_has_listener( (Song)arg1, (object)arg2) → boolbool metronome_has_listener(class TPyHandle<class ASong>, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “metronome”. remove_metronome_listener( (Song)arg1, (object)arg2) → Nonevoid remove_metronome_listener(class TPyHandle<class ASong>, class boost::python::api::object)Remove a previously set listener function or method from property “metronome”. Get/Set access to the settings that are used to quantizeMIDI recordings.add_midi_recording_quantization_listener( (Song)arg1, (object)arg2) → Nonevoid add_midi_recording_quantization_listener(class TPyHandle<class ASong>, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “midi_recording_quantization” has changed. midi_recording_quantization_has_listener( (Song)arg1, (object)arg2) → boolbool midi_recording_quantization_has_listener(class TPyHandle<class ASong>, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “midi_recording_quantization”. remove_midi_recording_quantization_listener( (Song)arg1, (object)arg2) → Nonevoid remove_midi_recording_quantization_listener(class TPyHandle<class ASong>, class boost::python::api::object)Remove a previously set listener function or method from property “midi_recording_quantization”. Get/Set the status of the nudge down button.add_nudge_down_listener( (Song)arg1, (object)arg2) → Nonevoid add_nudge_down_listener(class TPyHandle<class ASong>, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “nudge_down” has changed. nudge_down_has_listener( (Song)arg1, (object)arg2) → boolbool nudge_down_has_listener(class TPyHandle<class ASong>, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “nudge_down”. remove_nudge_down_listener( (Song)arg1, (object)arg2) → Nonevoid remove_nudge_down_listener(class TPyHandle<class ASong>, class boost::python::api::object)Remove a previously set listener function or method from property “nudge_down”. Get/Set the status of the nudge up button.add_nudge_up_listener( (Song)arg1, (object)arg2) → Nonevoid add_nudge_up_listener(class TPyHandle<class ASong>, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “nudge_up” has changed. nudge_up_has_listener( (Song)arg1, (object)arg2) → boolbool nudge_up_has_listener(class TPyHandle<class ASong>, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “nudge_up”. remove_nudge_up_listener( (Song)arg1, (object)arg2) → Nonevoid remove_nudge_up_listener(class TPyHandle<class ASong>, class boost::python::api::object)Remove a previously set listener function or method from property “nudge_up”. Get/Set the global overdub/replace state.add_overdub_listener( (Song)arg1, (object)arg2) → Nonevoid add_overdub_listener(class TPyHandle<class ASong>, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “overdub” has changed. overdub_has_listener( (Song)arg1, (object)arg2) → boolbool overdub_has_listener(class TPyHandle<class ASong>, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “overdub”. remove_overdub_listener( (Song)arg1, (object)arg2) → Nonevoid remove_overdub_listener(class TPyHandle<class ASong>, class boost::python::api::object)Remove a previously set listener function or method from property “overdub”. play_selection( (Song)arg1) → Nonevoid play_selection(class TPyHandle<class ASong>)Start playing the current set selection, or do nothing if no selection is set. Get/Set the flag that will enable recording as soon as the Song playsand hits the global loop start region.add_punch_in_listener( (Song)arg1, (object)arg2) → Nonevoid add_punch_in_listener(class TPyHandle<class ASong>, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “punch_in” has changed. punch_in_has_listener( (Song)arg1, (object)arg2) → boolbool punch_in_has_listener(class TPyHandle<class ASong>, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “punch_in”. remove_punch_in_listener( (Song)arg1, (object)arg2) → Nonevoid remove_punch_in_listener(class TPyHandle<class ASong>, class boost::python::api::object)Remove a previously set listener function or method from property “punch_in”. Get/Set the flag that will disable recording as soon as the Song playsand hits the global loop end region.add_punch_out_listener( (Song)arg1, (object)arg2) → Nonevoid add_punch_out_listener(class TPyHandle<class ASong>, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “punch_out” has changed. punch_out_has_listener( (Song)arg1, (object)arg2) → boolbool punch_out_has_listener(class TPyHandle<class ASong>, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “punch_out”. remove_punch_out_listener( (Song)arg1, (object)arg2) → Nonevoid remove_punch_out_listener(class TPyHandle<class ASong>, class boost::python::api::object)Remove a previously set listener function or method from property “punch_out”. Get/Set the state of the global recording flag.add_record_mode_listener( (Song)arg1, (object)arg2) → Nonevoid add_record_mode_listener(class TPyHandle<class ASong>, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “record_mode” has changed. record_mode_has_listener( (Song)arg1, (object)arg2) → boolbool record_mode_has_listener(class TPyHandle<class ASong>, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “record_mode”. remove_record_mode_listener( (Song)arg1, (object)arg2) → Nonevoid remove_record_mode_listener(class TPyHandle<class ASong>, class boost::python::api::object)Remove a previously set listener function or method from property “record_mode”. redo( (Song)arg1) → Nonevoid redo(class TPyHandle<class ASong>)Redo the last action that was undone. Const access to the list of available Return Tracks.add_return_tracks_listener( (Song)arg1, (object)arg2) → Nonevoid add_return_tracks_listener(class TPyHandle<class ASong>, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “return_tracks” has changed. remove_return_tracks_listener( (Song)arg1, (object)arg2) → Nonevoid remove_return_tracks_listener(class TPyHandle<class ASong>, class boost::python::api::object)Remove a previously set listener function or method from property “return_tracks”. return_tracks_has_listener( (Song)arg1, (object)arg2) → boolbool return_tracks_has_listener(class TPyHandle<class ASong>, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “return_tracks”. Const access to a list of all Scenes in the Live Song.add_scenes_listener( (Song)arg1, (object)arg2) → Nonevoid add_scenes_listener(class TPyHandle<class ASong>, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “scenes” has changed. remove_scenes_listener( (Song)arg1, (object)arg2) → Nonevoid remove_scenes_listener(class TPyHandle<class ASong>, class boost::python::api::object)Remove a previously set listener function or method from property “scenes”. scenes_has_listener( (Song)arg1, (object)arg2) → boolbool scenes_has_listener(class TPyHandle<class ASong>, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “scenes”. scrub_by( (Song)arg1, (float)arg2) → Nonevoid scrub_by(class TPyHandle<class ASong>, double)Same as jump_by, but does not stop playback. Get if Scenes and Clips should be selected when fired.set_or_delete_cue( (Song)arg1) → Nonevoid set_or_delete_cue(class TPyHandle<class ASong>)When a cue is selected, it gets deleted. If no cue is selected, a new cue is created at the current global songtime. Get/Set access to the global signature denominator of the Song.add_signature_denominator_listener( (Song)arg1, (object)arg2) → Nonevoid add_signature_denominator_listener(class TPyHandle<class ASong>, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “signature_denominator” has changed. remove_signature_denominator_listener( (Song)arg1, (object)arg2) → Nonevoid remove_signature_denominator_listener(class TPyHandle<class ASong>, class boost::python::api::object)Remove a previously set listener function or method from property “signature_denominator”. signature_denominator_has_listener( (Song)arg1, (object)arg2) → boolbool signature_denominator_has_listener(class TPyHandle<class ASong>, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “signature_denominator”. Get/Set access to the global signature numerator of the Song.add_signature_numerator_listener( (Song)arg1, (object)arg2) → Nonevoid add_signature_numerator_listener(class TPyHandle<class ASong>, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “signature_numerator” has changed. remove_signature_numerator_listener( (Song)arg1, (object)arg2) → Nonevoid remove_signature_numerator_listener(class TPyHandle<class ASong>, class boost::python::api::object)Remove a previously set listener function or method from property “signature_numerator”. signature_numerator_has_listener( (Song)arg1, (object)arg2) → boolbool signature_numerator_has_listener(class TPyHandle<class ASong>, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “signature_numerator”. Return the time of the last set event in the song, plus som extra beatsthat are usually added for better navigation in the arrangerview.add_song_length_listener( (Song)arg1, (object)arg2) → Nonevoid add_song_length_listener(class TPyHandle<class ASong>, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “song_length” has changed. remove_song_length_listener( (Song)arg1, (object)arg2) → Nonevoid remove_song_length_listener(class TPyHandle<class ASong>, class boost::python::api::object)Remove a previously set listener function or method from property “song_length”. song_length_has_listener( (Song)arg1, (object)arg2) → boolbool song_length_has_listener(class TPyHandle<class ASong>, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “song_length”. start_playing( (Song)arg1) → Nonevoid start_playing(class TPyHandle<class ASong>)Start playing from the startmarker stop_all_clips( (Song)arg1) → Nonevoid stop_all_clips(class TPyHandle<class ASong>)Stop all playing Clips (if any) but continue playing the Song. stop_playing( (Song)arg1) → Nonevoid stop_playing(class TPyHandle<class ASong>)Stop playing the Song. tap_tempo( (Song)arg1) → Nonevoid tap_tempo(class TPyHandle<class ASong>)Trigger the tap tempo function. Get/Set the global project tempo.add_tempo_listener( (Song)arg1, (object)arg2) → Nonevoid add_tempo_listener(class TPyHandle<class ASong>, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “tempo” has changed. remove_tempo_listener( (Song)arg1, (object)arg2) → Nonevoid remove_tempo_listener(class TPyHandle<class ASong>, class boost::python::api::object)Remove a previously set listener function or method from property “tempo”. tempo_has_listener( (Song)arg1, (object)arg2) → boolbool tempo_has_listener(class TPyHandle<class ASong>, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “tempo”. Const access to a list of all Player Tracks in the Live Song, exludingthe return and Master Track (see also Song.send_tracks and Song.master_track).At least one MIDI or Audio Track is always available.add_tracks_listener( (Song)arg1, (object)arg2) → Nonevoid add_tracks_listener(class TPyHandle<class ASong>, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “tracks” has changed. remove_tracks_listener( (Song)arg1, (object)arg2) → Nonevoid remove_tracks_listener(class TPyHandle<class ASong>, class boost::python::api::object)Remove a previously set listener function or method from property “tracks”. tracks_has_listener( (Song)arg1, (object)arg2) → boolbool tracks_has_listener(class TPyHandle<class ASong>, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “tracks”. undo( (Song)arg1) → Nonevoid undo(class TPyHandle<class ASong>)Undo the last action that was made. Representing the view aspects of a Live document: The Session and Arrangerview.Const access to a list of all visible Player Tracks in the Live Song, exludingthe return and Master Track (see also Song.send_tracks and Song.master_track).At least one MIDI or Audio Track is always available.add_visible_tracks_listener( (Song)arg1, (object)arg2) → Nonevoid add_visible_tracks_listener(class TPyHandle<class ASong>, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “visible_tracks” has changed. remove_visible_tracks_listener( (Song)arg1, (object)arg2) → Nonevoid remove_visible_tracks_listener(class TPyHandle<class ASong>, class boost::python::api::object)Remove a previously set listener function or method from property “visible_tracks”. visible_tracks_has_listener( (Song)arg1, (object)arg2) → boolbool visible_tracks_has_listener(class TPyHandle<class ASong>, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “visible_tracks”. This class is a common super class of Track and ChainThis class represents a track in Live. It can be either an Audio track, a MIDI Track, a Return Track or the Master track. The Master Track and at least one Audio or MIDI track will be always present.Return Tracks are optional.Representing the view aspects of a Track.Get the canonical parent of the track view.Get/Set/Listen if the track is shown collapsed in the arranger view.add_is_collapsed_listener( (View)arg1, (object)arg2) → Nonevoid add_is_collapsed_listener(class TPyViewData<class ATrack>, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “is_collapsed” has changed. is_collapsed_has_listener( (View)arg1, (object)arg2) → boolbool is_collapsed_has_listener(class TPyViewData<class ATrack>, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “is_collapsed”. remove_is_collapsed_listener( (View)arg1, (object)arg2) → Nonevoid remove_is_collapsed_listener(class TPyViewData<class ATrack>, class boost::python::api::object)Remove a previously set listener function or method from property “is_collapsed”. select_instrument( (View)arg1) → boolbool select_instrument(class TPyViewData<class ATrack>)Selects the track’s instrument if it has one. Get/Listen to the current selected device in the track. In case of a multi/group selection, this will return the first selected device.add_selected_device_listener( (View)arg1, (object)arg2) → Nonevoid add_selected_device_listener(class TPyViewData<class ATrack>, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “selected_device” has changed. remove_selected_device_listener( (View)arg1, (object)arg2) → Nonevoid remove_selected_device_listener(class TPyViewData<class ATrack>, class boost::python::api::object)Remove a previously set listener function or method from property “selected_device”. selected_device_has_listener( (View)arg1, (object)arg2) → boolbool selected_device_has_listener(class TPyViewData<class ATrack>, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “selected_device”. Arm the track for recording. Not available for Master- and Send Tracks.add_arm_listener( (Track)arg1, (object)arg2) → Nonevoid add_arm_listener(class TTrackPyHandle, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “arm” has changed. arm_has_listener( (Track)arg1, (object)arg2) → boolbool arm_has_listener(class TTrackPyHandle, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “arm”. remove_arm_listener( (Track)arg1, (object)arg2) → Nonevoid remove_arm_listener(class TTrackPyHandle, class boost::python::api::object)Remove a previously set listener function or method from property “arm”. return True, if this Track has a valid arm property. Not all trackscan be armed (for example return Tracks or the Master Tracks).Get the canonical parent of the track.const access to the list of clipslots (see class AClipSlot) for this track.The list will be empty for the master and sendtracks.add_clip_slots_listener( (Track)arg1, (object)arg2) → Nonevoid add_clip_slots_listener(class TTrackPyHandle, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “clip_slots” has changed. clip_slots_has_listener( (Track)arg1, (object)arg2) → boolbool clip_slots_has_listener(class TTrackPyHandle, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “clip_slots”. remove_clip_slots_listener( (Track)arg1, (object)arg2) → Nonevoid remove_clip_slots_listener(class TTrackPyHandle, class boost::python::api::object)Remove a previously set listener function or method from property “clip_slots”. Get/set access to the color of the Track (RGB).add_color_listener( (Track)arg1, (object)arg2) → Nonevoid add_color_listener(class TTrackPyHandle, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “color” has changed. color_has_listener( (Track)arg1, (object)arg2) → boolbool color_has_listener(class TTrackPyHandle, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “color”. remove_color_listener( (Track)arg1, (object)arg2) → Nonevoid remove_color_listener(class TTrackPyHandle, class boost::python::api::object)Remove a previously set listener function or method from property “color”. Get/Set the name of the current active input routing.When setting a new routing, the new routing must be one of the available ones.add_current_input_routing_listener( (Track)arg1, (object)arg2) → Nonevoid add_current_input_routing_listener(class TTrackPyHandle, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “current_input_routing” has changed. current_input_routing_has_listener( (Track)arg1, (object)arg2) → boolbool current_input_routing_has_listener(class TTrackPyHandle, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “current_input_routing”. remove_current_input_routing_listener( (Track)arg1, (object)arg2) → Nonevoid remove_current_input_routing_listener(class TTrackPyHandle, class boost::python::api::object)Remove a previously set listener function or method from property “current_input_routing”. Get/Set the current active input sub routing.When setting a new routing, the new routing must be one of the available ones.add_current_input_sub_routing_listener( (Track)arg1, (object)arg2) → Nonevoid add_current_input_sub_routing_listener(class TTrackPyHandle, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “current_input_sub_routing” has changed. current_input_sub_routing_has_listener( (Track)arg1, (object)arg2) → boolbool current_input_sub_routing_has_listener(class TTrackPyHandle, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “current_input_sub_routing”. remove_current_input_sub_routing_listener( (Track)arg1, (object)arg2) → Nonevoid remove_current_input_sub_routing_listener(class TTrackPyHandle, class boost::python::api::object)Remove a previously set listener function or method from property “current_input_sub_routing”. Get/Set the track’s current monitoring state.add_current_monitoring_state_listener( (Track)arg1, (object)arg2) → Nonevoid add_current_monitoring_state_listener(class TTrackPyHandle, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “current_monitoring_state” has changed. current_monitoring_state_has_listener( (Track)arg1, (object)arg2) → boolbool current_monitoring_state_has_listener(class TTrackPyHandle, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “current_monitoring_state”. remove_current_monitoring_state_listener( (Track)arg1, (object)arg2) → Nonevoid remove_current_monitoring_state_listener(class TTrackPyHandle, class boost::python::api::object)Remove a previously set listener function or method from property “current_monitoring_state”. Get/Set the current active output routing.When setting a new routing, the new routing must be one of the available ones.add_current_output_routing_listener( (Track)arg1, (object)arg2) → Nonevoid add_current_output_routing_listener(class TTrackPyHandle, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “current_output_routing” has changed. current_output_routing_has_listener( (Track)arg1, (object)arg2) → boolbool current_output_routing_has_listener(class TTrackPyHandle, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “current_output_routing”. remove_current_output_routing_listener( (Track)arg1, (object)arg2) → Nonevoid remove_current_output_routing_listener(class TTrackPyHandle, class boost::python::api::object)Remove a previously set listener function or method from property “current_output_routing”. Get/Set the current active output sub routing.When setting a new routing, the new routing must be one of the available ones.add_current_output_sub_routing_listener( (Track)arg1, (object)arg2) → Nonevoid add_current_output_sub_routing_listener(class TTrackPyHandle, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “current_output_sub_routing” has changed. current_output_sub_routing_has_listener( (Track)arg1, (object)arg2) → boolbool current_output_sub_routing_has_listener(class TTrackPyHandle, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “current_output_sub_routing”. remove_current_output_sub_routing_listener( (Track)arg1, (object)arg2) → Nonevoid remove_current_output_sub_routing_listener(class TTrackPyHandle, class boost::python::api::object)Remove a previously set listener function or method from property “current_output_sub_routing”. Return const access to all available Devices that are present in the TracksDevicechain. This tuple will also include the ‘mixer_device’ that every Trackalways has.add_devices_listener( (Track)arg1, (object)arg2) → Nonevoid add_devices_listener(class TTrackPyHandle, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “devices” has changed. devices_has_listener( (Track)arg1, (object)arg2) → boolbool devices_has_listener(class TTrackPyHandle, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “devices”. remove_devices_listener( (Track)arg1, (object)arg2) → Nonevoid remove_devices_listener(class TTrackPyHandle, class boost::python::api::object)Remove a previously set listener function or method from property “devices”. const access to the index of the fired (and thus blinking) clipslot in this track.This index is -1 if no slot is fired and -2 if the track’s stop button has been fired.add_fired_slot_index_listener( (Track)arg1, (object)arg2) → Nonevoid add_fired_slot_index_listener(class TTrackPyHandle, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “fired_slot_index” has changed. fired_slot_index_has_listener( (Track)arg1, (object)arg2) → boolbool fired_slot_index_has_listener(class TTrackPyHandle, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “fired_slot_index”. remove_fired_slot_index_listener( (Track)arg1, (object)arg2) → Nonevoid remove_fired_slot_index_listener(class TTrackPyHandle, class boost::python::api::object)Remove a previously set listener function or method from property “fired_slot_index”. Get/Set whether the track is folded or not. Only available if is_foldable is True.return True, if this Track can be feed with an Audio signal. This istrue for all Audio Tracks.add_has_audio_input_listener( (Track)arg1, (object)arg2) → Nonevoid add_has_audio_input_listener(class TTrackPyHandle, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “has_audio_input” has changed. has_audio_input_has_listener( (Track)arg1, (object)arg2) → boolbool has_audio_input_has_listener(class TTrackPyHandle, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “has_audio_input”. remove_has_audio_input_listener( (Track)arg1, (object)arg2) → Nonevoid remove_has_audio_input_listener(class TTrackPyHandle, class boost::python::api::object)Remove a previously set listener function or method from property “has_audio_input”. return True, if this Track sends out an Audio signal. This istrue for all Audio Tracks, and MIDI tracks with an Instrument.add_has_audio_output_listener( (Track)arg1, (object)arg2) → Nonevoid add_has_audio_output_listener(class TTrackPyHandle, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “has_audio_output” has changed. has_audio_output_has_listener( (Track)arg1, (object)arg2) → boolbool has_audio_output_has_listener(class TTrackPyHandle, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “has_audio_output”. remove_has_audio_output_listener( (Track)arg1, (object)arg2) → Nonevoid remove_has_audio_output_listener(class TTrackPyHandle, class boost::python::api::object)Remove a previously set listener function or method from property “has_audio_output”. return True, if this Track can be feed with an Audio signal. This istrue for all MIDI Tracks.add_has_midi_input_listener( (Track)arg1, (object)arg2) → Nonevoid add_has_midi_input_listener(class TTrackPyHandle, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “has_midi_input” has changed. has_midi_input_has_listener( (Track)arg1, (object)arg2) → boolbool has_midi_input_has_listener(class TTrackPyHandle, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “has_midi_input”. remove_has_midi_input_listener( (Track)arg1, (object)arg2) → Nonevoid remove_has_midi_input_listener(class TTrackPyHandle, class boost::python::api::object)Remove a previously set listener function or method from property “has_midi_input”. return True, if this Track sends out MIDI events. This istrue for all MIDI Tracks with no Instruments.add_has_midi_output_listener( (Track)arg1, (object)arg2) → Nonevoid add_has_midi_output_listener(class TTrackPyHandle, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “has_midi_output” has changed. has_midi_output_has_listener( (Track)arg1, (object)arg2) → boolbool has_midi_output_has_listener(class TTrackPyHandle, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “has_midi_output”. remove_has_midi_output_listener( (Track)arg1, (object)arg2) → Nonevoid remove_has_midi_output_listener(class TTrackPyHandle, class boost::python::api::object)Remove a previously set listener function or method from property “has_midi_output”. Momentary value of left input channel meter, 0.0 to 1.0. For Audio Tracks only.add_input_meter_left_listener( (Track)arg1, (object)arg2) → Nonevoid add_input_meter_left_listener(class TTrackPyHandle, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “input_meter_left” has changed. input_meter_left_has_listener( (Track)arg1, (object)arg2) → boolbool input_meter_left_has_listener(class TTrackPyHandle, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “input_meter_left”. remove_input_meter_left_listener( (Track)arg1, (object)arg2) → Nonevoid remove_input_meter_left_listener(class TTrackPyHandle, class boost::python::api::object)Remove a previously set listener function or method from property “input_meter_left”. Return the MIDI or Audio meter value of the Tracks input, depending on thetype of the Track input. Meter values (MIDI or Audio) are always scaledfrom 0.0 to 1.0.add_input_meter_level_listener( (Track)arg1, (object)arg2) → Nonevoid add_input_meter_level_listener(class TTrackPyHandle, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “input_meter_level” has changed. input_meter_level_has_listener( (Track)arg1, (object)arg2) → boolbool input_meter_level_has_listener(class TTrackPyHandle, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “input_meter_level”. remove_input_meter_level_listener( (Track)arg1, (object)arg2) → Nonevoid remove_input_meter_level_listener(class TTrackPyHandle, class boost::python::api::object)Remove a previously set listener function or method from property “input_meter_level”. Momentary value of right input channel meter, 0.0 to 1.0. For Audio Tracks only.add_input_meter_right_listener( (Track)arg1, (object)arg2) → Nonevoid add_input_meter_right_listener(class TTrackPyHandle, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “input_meter_right” has changed. input_meter_right_has_listener( (Track)arg1, (object)arg2) → boolbool input_meter_right_has_listener(class TTrackPyHandle, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “input_meter_right”. remove_input_meter_right_listener( (Track)arg1, (object)arg2) → Nonevoid remove_input_meter_right_listener(class TTrackPyHandle, class boost::python::api::object)Remove a previously set listener function or method from property “input_meter_right”. Const access to the list of available input routings.Return a list of all available input sub routings.return True if the track can be (un)folded to hide/reveal contained tracks.return False if the track is not selected.return False if the track is hidden within a folded group track.jump_in_running_session_clip( (Track)arg1, (float)arg2) → Nonevoid jump_in_running_session_clip(class TTrackPyHandle, double)Jump forward or backward in the currently running Sessionclip (if any) by the specified relative amount in beats. Does nothing if no Session Clip is currently running. Return access to the special Device that every Track has: This Device containsthe Volume, Pan, Sendamounts, and Crossfade assignment parameters.Mute/unmute the track.add_mute_listener( (Track)arg1, (object)arg2) → Nonevoid add_mute_listener(class TTrackPyHandle, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “mute” has changed. mute_has_listener( (Track)arg1, (object)arg2) → boolbool mute_has_listener(class TTrackPyHandle, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “mute”. remove_mute_listener( (Track)arg1, (object)arg2) → Nonevoid remove_mute_listener(class TTrackPyHandle, class boost::python::api::object)Remove a previously set listener function or method from property “mute”. Read/write access to the name of the Track, as visible in the track header.add_name_listener( (Track)arg1, (object)arg2) → Nonevoid add_name_listener(class TTrackPyHandle, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “name” has changed. name_has_listener( (Track)arg1, (object)arg2) → boolbool name_has_listener(class TTrackPyHandle, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “name”. remove_name_listener( (Track)arg1, (object)arg2) → Nonevoid remove_name_listener(class TTrackPyHandle, class boost::python::api::object)Remove a previously set listener function or method from property “name”. Momentary value of left output channel meter, 0.0 to 1.0.For tracks with audio output only.add_output_meter_left_listener( (Track)arg1, (object)arg2) → Nonevoid add_output_meter_left_listener(class TTrackPyHandle, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “output_meter_left” has changed. output_meter_left_has_listener( (Track)arg1, (object)arg2) → boolbool output_meter_left_has_listener(class TTrackPyHandle, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “output_meter_left”. remove_output_meter_left_listener( (Track)arg1, (object)arg2) → Nonevoid remove_output_meter_left_listener(class TTrackPyHandle, class boost::python::api::object)Remove a previously set listener function or method from property “output_meter_left”. Return the MIDI or Audio meter value of the Track output (behind themixer_device), depending on the type of the Track input, this can be a MIDIor Audio meter. Meter values (MIDI or Audio) are always scaled from 0.0 to 1.0.add_output_meter_level_listener( (Track)arg1, (object)arg2) → Nonevoid add_output_meter_level_listener(class TTrackPyHandle, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “output_meter_level” has changed. output_meter_level_has_listener( (Track)arg1, (object)arg2) → boolbool output_meter_level_has_listener(class TTrackPyHandle, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “output_meter_level”. remove_output_meter_level_listener( (Track)arg1, (object)arg2) → Nonevoid remove_output_meter_level_listener(class TTrackPyHandle, class boost::python::api::object)Remove a previously set listener function or method from property “output_meter_level”. Momentary value of right output channel meter, 0.0 to 1.0.For tracks with audio output only.add_output_meter_right_listener( (Track)arg1, (object)arg2) → Nonevoid add_output_meter_right_listener(class TTrackPyHandle, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “output_meter_right” has changed. output_meter_right_has_listener( (Track)arg1, (object)arg2) → boolbool output_meter_right_has_listener(class TTrackPyHandle, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “output_meter_right”. remove_output_meter_right_listener( (Track)arg1, (object)arg2) → Nonevoid remove_output_meter_right_listener(class TTrackPyHandle, class boost::python::api::object)Remove a previously set listener function or method from property “output_meter_right”. Const access to the list of all available output routings.Return a list of all available output sub routings.const access to the index of the currently playing clip in the track.Will be -1 when no clip is playing.add_playing_slot_index_listener( (Track)arg1, (object)arg2) → Nonevoid add_playing_slot_index_listener(class TTrackPyHandle, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “playing_slot_index” has changed. playing_slot_index_has_listener( (Track)arg1, (object)arg2) → boolbool playing_slot_index_has_listener(class TTrackPyHandle, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “playing_slot_index”. remove_playing_slot_index_listener( (Track)arg1, (object)arg2) → Nonevoid remove_playing_slot_index_listener(class TTrackPyHandle, class boost::python::api::object)Remove a previously set listener function or method from property “playing_slot_index”. Get/Set the solo status of the track. Note that this will not disable thesolo state of any other track. If you want exclusive solo, you have to disable the solo state of the other Tracks manually.add_solo_listener( (Track)arg1, (object)arg2) → Nonevoid add_solo_listener(class TTrackPyHandle, class boost::python::api::object)Add a listener function or method, which will be called as soon as the property “solo” has changed. remove_solo_listener( (Track)arg1, (object)arg2) → Nonevoid remove_solo_listener(class TTrackPyHandle, class boost::python::api::object)Remove a previously set listener function or method from property “solo”. solo_has_listener( (Track)arg1, (object)arg2) → boolbool solo_has_listener(class TTrackPyHandle, class boost::python::api::object)Returns true, if the given listener function or method is connected to the property “solo”. stop_all_clips( (Track)arg1) → Nonevoid stop_all_clips(class TTrackPyHandle)Stop running and triggered clip and slots on this track. Representing the view aspects of a Track. -------------------------------------------------------------------------------- /CompareXmlTree.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | import sys, re, codecs 3 | import xml.etree.ElementTree as ET 4 | 5 | reload (sys) 6 | sys.setdefaultencoding ('utf-8') 7 | 8 | 9 | old_filename = sys.argv [1] 10 | new_filename = sys.argv [2] 11 | dest_filename = \ 12 | old_filename.replace ('.xml', '-') + new_filename.replace ('Live', '') \ 13 | if len (sys.argv) < 4 \ 14 | else sys.argv [3] 15 | old_doc = ET.ElementTree (file=old_filename) 16 | new_doc = ET.ElementTree (file=new_filename) 17 | primary = old_doc.getroot () 18 | target = new_doc.getroot () 19 | primary.set ('version', primary.get ('version') + '-' + target.get ('version')) 20 | 21 | 22 | def without_listener_fix__device_and_chain_first (elem): 23 | text = elem.get ('name') 24 | if text.endswith ('()'): text = text [:-2] 25 | if elem.tag == 'Module': 26 | text = re.compile('([A-Z][a-zA-Z0-9]*)Device').sub (r'Device!\1 ', text) 27 | text = re.compile('([A-Z][a-zA-Z0-9]*)Chain').sub (r'Chain!\1 ', text) 28 | elif elem.tag == 'Method': 29 | text = re.compile('add_(.*)_listener').sub (r'\1 ', text) 30 | text = re.compile('remove_(.*)_listener').sub (r'\1 ', text) 31 | text = re.compile('(.*)_has_listener').sub (r'\1 ', text) 32 | return text 33 | 34 | def in_order (a_elem, b_elem): 35 | return \ 36 | without_listener_fix__device_and_chain_first (a_elem) \ 37 | < without_listener_fix__device_and_chain_first (b_elem) 38 | 39 | def apply_compare (primary, target): 40 | added = deleted = common = changed = False 41 | 42 | primary_children = primary.getchildren () 43 | target_children = target.getchildren () 44 | 45 | primary_docs = [child for child in primary_children if child.tag == 'Doc'] 46 | target_docs = [child for child in target_children if child.tag == 'Doc'] 47 | primary_tptxs = [[doc.get ('type'), doc.text] for doc in primary_docs] 48 | target_tptxs = [[doc.get ('type'), doc.text] for doc in target_docs] 49 | ########################################################################### 50 | added_tptxs = [tptx for tptx in target_tptxs if tptx not in primary_tptxs] 51 | if added_tptxs: 52 | added_docs = [doc for doc in target_docs 53 | if [doc.get ('type'), doc.text] in added_tptxs] 54 | for added_doc in added_docs: 55 | added_doc.set ('compare', 'added changed') 56 | # insert after last same-type doc 57 | same_primary_docs = [doc for doc in primary_docs 58 | if doc.get ('type') == added_doc.get ('type')] 59 | if same_primary_docs: 60 | prev_doc = same_primary_docs [-1] 61 | prev_doc_index = primary_children.index (prev_doc) 62 | primary.insert (prev_doc_index + 1, added_doc) 63 | else: 64 | primary.append (added_doc) 65 | if added_doc.get ('type') != 'Cpp-Signature': 66 | changed = True 67 | ########################################################################### 68 | deleted_tptxs = [tptx for tptx in primary_tptxs 69 | if tptx not in target_tptxs] 70 | if deleted_tptxs: 71 | deleted_docs = [doc for doc in primary_docs 72 | if [doc.get ('type'), doc.text] in deleted_tptxs] 73 | for deleted_doc in deleted_docs: 74 | deleted_doc.set ('compare', 'deleted changed') 75 | if deleted_doc.get ('type') != 'Cpp-Signature': 76 | changed = True 77 | ########################################################################### 78 | #common_tptxs = [tptx for tptx in target_tptxs if tptx in primary_tptxs] 79 | #if common_tptxs: 80 | # common_docs = [doc for doc in primary_docs 81 | # if [doc.get ('type'), doc.text] in common_tptxs] 82 | # for common_doc in common_docs: 83 | # common_doc.set ('compare', 'common') 84 | # common = True 85 | 86 | primary_members = [child for child in primary_children 87 | if child.tag != 'Doc'] 88 | target_members = [child for child in target_children if child.tag != 'Doc'] 89 | primary_names = [member.get ('name') for member in primary_members] 90 | target_names = [member.get ('name') for member in target_members] 91 | ########################################################################### 92 | added_names = [name for name in target_names if name not in primary_names] 93 | if added_names: 94 | added_members = [member for member in target_members 95 | if member.get ('name') in added_names] 96 | for added_member in added_members: 97 | added_member.set ('compare', 'added') 98 | # insert after last same-name member 99 | next_primary_members = [member for member in primary_members 100 | if in_order (added_member, member)] 101 | if next_primary_members: 102 | next_member = next_primary_members [0] 103 | next_member_index = primary_children.index (next_member) 104 | primary.insert (next_member_index, added_member) 105 | else: 106 | primary.insert (len (primary_children), added_member) 107 | added = True 108 | ########################################################################### 109 | deleted_names = [name for name in primary_names 110 | if name not in target_names] 111 | if deleted_names: 112 | deleted_members = [member for member in primary_members 113 | if member.get ('name') in deleted_names] 114 | for deleted_member in deleted_members: 115 | deleted_member.set ('compare', 'deleted') 116 | deleted = True 117 | ########################################################################### 118 | common_names = [name for name in target_names if name in primary_names] 119 | if common_names: 120 | primary_common_members = [member for member in primary_members 121 | if member.get ('name') in common_names] 122 | target_common_members = [member for member in target_members 123 | if member.get ('name') in common_names] 124 | common_members_pairs = \ 125 | zip (primary_common_members, target_common_members) 126 | for primary_member, target_member in common_members_pairs: 127 | primary_member.set ('compare', 'common') 128 | _added, _deleted, _changed = \ 129 | apply_compare (primary_member, target_member) 130 | if _added: added = True 131 | if _deleted: deleted = True 132 | if _changed: changed = True 133 | common = True 134 | 135 | if primary.get ('compare') == 'common': 136 | common = True 137 | 138 | compare = added*' added' + changed*' changed' + deleted*' deleted' + \ 139 | common*' common' 140 | if compare: 141 | compare = compare [1:] # cut first space 142 | primary.set ('compare', compare) 143 | return [added, deleted, changed] 144 | 145 | 146 | apply_compare (primary, target) 147 | 148 | dest_doc = ET.ElementTree (primary) 149 | 150 | 151 | with open (dest_filename, 'w') as dest_file: 152 | dest_file.write (codecs.BOM_UTF8) 153 | dest_file.write ('') 154 | dest_file.write ('') 155 | dest_doc.write (dest_file, 'utf-8') 156 | -------------------------------------------------------------------------------- /LiveAPI.xsl: -------------------------------------------------------------------------------- 1 |  2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | ]> 15 | 16 | 17 | 18 | 19 | 20 | 21 | Live API 22 | 23 | comparison 24 | version 25 | 26 | 27 | 28 | 29 | 30 | <xsl:value-of select="$title" /> 31 | 32 | 33 | 34 | 109 | 268 | 269 | 270 | 271 | 272 | 273 | 274 | 286 | 287 | 288 | 289 | 290 | 291 | 292 | 293 | 294 | 295 | 296 | 297 | 298 | 299 | 300 | 319 | 320 | 321 | 322 | 323 | 324 |
325 | 326 | - 327 | 328 | 329 | 330 | 331 |

332 | 333 | 334 | 335 | 336 | 337 | (+) 338 | 339 | 340 |

341 | 342 | 343 | 344 | 345 | 346 |
347 | 348 |
349 | 350 |
351 |
352 | 353 | 354 | 355 | 356 |
357 | 358 | member listener 359 | 360 |

361 | 362 | . 363 | 364 | 365 |

366 | 367 |
368 |
369 | 370 | 371 |

372 | 373 | 374 | 375 | C++ signature: 376 |

377 |
378 | 379 |
380 | -------------------------------------------------------------------------------- /LiveApiXmlHierarchical.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | import sys, re, os, codecs 3 | import xml.etree.ElementTree as ET 4 | 5 | reload (sys) 6 | sys.setdefaultencoding ('utf-8') 7 | 8 | 9 | src_filename = sys.argv [1] 10 | src_basename = os.path.basename (src_filename) 11 | src_abspath = os.path.abspath (src_filename) 12 | if len (sys.argv) > 2: 13 | dest_filename = sys.argv [2] 14 | else: 15 | dest_filename = src_basename 16 | while os.path.exists (dest_filename): 17 | dest_filename = dest_filename.replace ('.xml', 'h.xml') 18 | with open (src_filename) as src_file: 19 | filestring = src_file.read () 20 | 21 | # put Doc-element inside previous element 22 | filestring = re.compile('(]*>)\n\n\t(.*?)').sub (r'\2\1', filestring) 23 | 24 | src_doc = ET.fromstring (filestring) 25 | src_elems = [] 26 | src_elems += src_doc.findall ('Value') 27 | src_elems += src_doc.findall ('Built-In') 28 | src_elems += src_doc.findall ('Property') 29 | src_elems += src_doc.findall ('Method') 30 | src_elems += src_doc.findall ('Sub-Class') 31 | src_elems += src_doc.findall ('Class') 32 | src_elems += src_doc.findall ('Module') 33 | 34 | 35 | def get_root (elems): 36 | for elem in elems: 37 | if elem.text == 'Live': return elem 38 | 39 | def text_without_listener_fix__device_and_chain_first (elem): 40 | text = elem.text 41 | if text.endswith ('()'): text = text [:-2] 42 | if elem.tag == 'Module': 43 | text = re.compile('([A-Z][a-zA-Z0-9]*)Device').sub (r'Device!\1 ', text) 44 | text = re.compile('([A-Z][a-zA-Z0-9]*)Chain').sub (r'Chain!\1 ', text) 45 | elif elem.tag == 'Method': 46 | text = re.compile('add_(.*)_listener').sub (r'\1 ', text) 47 | text = re.compile('remove_(.*)_listener').sub (r'\1 ', text) 48 | text = re.compile('(.*)_has_listener').sub (r'\1 ', text) 49 | return text 50 | 51 | def get_children (parent, elems): 52 | def is_child (elem): 53 | return elem.text.startswith (parent.text + '.') \ 54 | and len (elem.text.split ('.')) == len (parent.text.split ('.')) + 1 55 | elems = [elem for elem in elems if is_child (elem)] 56 | elems.sort (key=text_without_listener_fix__device_and_chain_first) 57 | return elems 58 | 59 | def get_branches (parent, elems): 60 | def is_branch (elem): 61 | return elem.text.startswith (parent.text + '.') 62 | elems = [elem for elem in elems if is_branch (elem)] 63 | elems.sort (key=text_without_listener_fix__device_and_chain_first) 64 | return elems 65 | 66 | def split_text_to_elems (text): 67 | text = re.compile(',([^ ])').sub (r', \1', text) # put spaces after commas 68 | text = re.compile('"([^ ].*?[^ ])"').sub (r'“\1”', text) # make pretty quotes 69 | text = re.compile("([^a-z]|^)'([^ ].*?[^ ])'([^a-z]|$)").sub (r'\1‘\2’\3', text) # make pretty quotes 70 | text = re.compile("([a-z])'([a-z ])").sub (r'\1’\2', text) # make pretty quotes 71 | text = text.replace ('<', '<') 72 | text = text.replace ('>', '>').replace ('->', '→') 73 | text = text.replace ('...', '…') 74 | text = text.replace (' -- ', ' — ') 75 | texts = text.split ('C++ signature : ') 76 | if len (texts) == 1: # no C++ signature 77 | description = ET.fromstring ('') 78 | description.text = texts [0] 79 | return (description,) 80 | else: # C++ signature exist 81 | fd = texts[0].split (' : ') # format/description text pair 82 | format = ET.fromstring ('') 83 | cpp_signature = ET.fromstring ('') 84 | format.text = fd [0] 85 | cpp_signature.text = texts [1] 86 | if len (fd) > 1: # description exist 87 | description = ET.fromstring ('') 88 | description.text = fd [1] 89 | return (format, cpp_signature, description) 90 | else: 91 | return (format, cpp_signature) 92 | 93 | def copy_elems (parent, elems, dest): 94 | """ 95 | finds all descendants of the parent 96 | and for each of them calls the same function 97 | """ 98 | children = get_children (parent, elems) 99 | for child in children: 100 | dest_child = ET.Element (child.tag) 101 | dest_child.set ('name', child.text.split('.') [-1]) 102 | doc = child.find ('Doc') 103 | if doc is not None and doc.text is not None: 104 | for elem in split_text_to_elems (doc.text): 105 | dest_child.append (elem) 106 | dest.append (dest_child) 107 | copy_elems (child, get_branches (child, elems), dest_child) 108 | 109 | 110 | live_api_elem = ET.Element ('LiveAPI') 111 | version = \ 112 | re.compile('(.*?)(\d(\.\d)*)').sub (r'\2', src_doc.find('.').text.strip ()) 113 | live_api_elem.set ('version', version) 114 | 115 | # добавить верхнее описание 116 | doc = ET.fromstring ('') 117 | doc.text = u'Unofficial Live API documentation generated by the “API_MakeDoc” MIDI Remote Script.' 118 | live_api_elem.append (doc) 119 | doc = ET.fromstring ('') 120 | doc.text = 'This is unofficial documentation. Please do not contact Ableton with questions or problems relating to the use of this documentation.' 121 | live_api_elem.append (doc) 122 | 123 | live_elem = ET.fromstring ('') 124 | root = get_root (src_elems) 125 | copy_elems (root, src_elems, live_elem) 126 | live_api_elem.append (live_elem) 127 | 128 | dest_doc = ET.ElementTree (live_api_elem) 129 | 130 | 131 | with open (dest_filename, 'w') as dest_file: 132 | dest_file.write (codecs.BOM_UTF8) 133 | dest_file.write ('') 134 | dest_file.write ('') 135 | dest_doc.write (dest_file, 'utf-8') 136 | -------------------------------------------------------------------------------- /MAKE_ALL.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | from glob import glob 3 | from subprocess import Popen 4 | 5 | for filename in glob ('API_MakeDoc_output\\Live*.xml'): 6 | version = filename [23:-4] 7 | if version.count ('.') == 1: version += '.0' 8 | Popen( 9 | ('python', 'LiveApiXmlHierarchical.py', filename, version + '.xml') 10 | ).wait () 11 | 12 | def fill_num(version): 13 | return '.'.join ([num.zfill (2) for num in version.split('.')]) 14 | 15 | to_compare = [filename for filename in glob ('*.xml') 16 | if filename.find ('-') == -1] 17 | for A, B in [(A, B) for A in to_compare for B in to_compare 18 | if fill_num (B) > fill_num (A)]: 19 | Popen(('python', 'CompareXmlTree.py', A, B)).wait () 20 | 21 | Popen(('python', 'MakeIndex.py')) 22 | -------------------------------------------------------------------------------- /MakeIndex.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | import sys, os, codecs, re 3 | 4 | reload (sys) 5 | sys.setdefaultencoding ('utf-8') 6 | 7 | 8 | content = '' 9 | content += ''' 10 | 11 | Live API documentation 12 | 13 | 59 | 109 |
110 |

Ableton Live API Documentation

111 |
112 |
113 | ''' 114 | 115 | workdir = os.path.abspath (os.path.dirname (__file__)) 116 | is_source_xml = \ 117 | lambda filename: re.compile('\d+\.\d+\.\d+\.xml').match (filename) 118 | primary_filenames = [filename for filename in os.listdir (workdir) 119 | if is_source_xml (filename)] 120 | fill_num = \ 121 | lambda version: '.'.join ([num.zfill (2) for num in version.split('.')]) 122 | primary_filenames.sort(key=fill_num) 123 | for i, filename in enumerate (reversed (primary_filenames)): 124 | version = filename.replace ('.xml', '') 125 | version_filled = fill_num (version) 126 | 127 | content += '

\n Live ' + version + '\n' 129 | 130 | content += \ 131 | ' 143 |

144 |

145 |

Thanks to Hanz Petrov for an 146 | 147 | API_MakeDoc script! 148 |

Thanks to Julien Bayle who published 149 | 150 | documentation for many versions of Live! 151 |

Vladimir Zevakhin, 2016–2022 152 |

153 | ''' 154 | 155 | with open ('index.html', 'w') as indexfile: 156 | indexfile.write (codecs.BOM_UTF8) 157 | indexfile.write (content) 158 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Live API actively expands. Documentation which laid out by Hanz Petrov ([API_MakeDoc](https://github.com/NSUSpray/LiveAPI_MakeDoc)) becomes too cumbersome. It is difficult to search, to compare different versions, to understand what features are added, that has changed. 2 | 3 | I spent the time and has made more advanced design of this unofficial documentation: 4 | 5 | https://nsuspray.github.io/Live_API_Doc/ 6 | 7 | I have tried to simplify the search and navigation, to make design more accessible. It has a function of comparing different versions with independent displaying additions, changes, matches. I think you will understand. 8 | 9 | New XML documentation files (*8.2.7.xml*, *9.0.6.xml* e.t.c.) are obtained from [the original files of Hans Petrov](https://structure-void.com/ableton-live-midi-remote-scripts/#liveAPI) using a *LiveApiXmlHierarchical.py*, *LiveAPI.xsl* is connected to them, which translates data to an HTML document, styled with CSS, the dynamics is implemented by JavaScript using jQuery (including side menu dynamics *jquery.singlePageNav-multilevel.js*). *CompareXmlTree.py* generates difference XML files (*8.2.7-9.0.6.xml* e.t.c.) from source XML (*8.2.7.xml* vs *9.0.6.xml* e.t.c.). -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | Live API documentation 4 | 5 | 51 | 101 |
102 |

Ableton Live API Documentation

103 |
104 |
105 |

106 | Live 11.0.0 107 | 108 | 109 |

110 | Live 10.1.19 111 | 112 | 113 |

114 | Live 10.1.0 115 | 116 | 117 |

118 | Live 10.0.2 119 | 120 | 121 |

122 | Live 10.0.1 123 | 124 | 125 |

126 | Live 9.7.0 127 | 128 | 129 |

130 | Live 9.6.0 131 | 132 | 133 |

134 | Live 9.5.0 135 | 136 | 137 |

138 | Live 9.2.0 139 | 140 | 141 |

142 | Live 9.1.4 143 | 144 | 145 |

146 | Live 9.1.3 147 | 148 | 149 |

150 | Live 9.1.0 151 | 152 | 153 |

154 | Live 9.0.6 155 | 156 | 157 |

158 | Live 8.2.7 159 | 160 | 161 |

162 |

163 |

164 |

Thanks to Hanz Petrov for an 165 | 166 | API_MakeDoc script! 167 |

Thanks to Julien Bayle who published 168 | 169 | documentation for many versions of Live! 170 |

Vladimir Zevakhin, 2016–2022 171 |

172 | -------------------------------------------------------------------------------- /jquery.singlePageNav-multilevel.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Single Page Nav Plugin 3 | * Copyright (c) 2014 Chris Wojcik 4 | * Dual licensed under MIT and GPL. 5 | * @author Chris Wojcik 6 | * @version 1.2.0 7 | * Multilevel edition by Vladimir Vevakhin 8 | */ 9 | 10 | // Utility 11 | if (typeof Object.create !== 'function') { 12 | Object.create = function(obj) { 13 | function F() {} 14 | F.prototype = obj; 15 | return new F(); 16 | }; 17 | } 18 | 19 | (function($, window, document, undefined) { 20 | "use strict"; 21 | 22 | var SinglePageNav = { 23 | 24 | init: function(options, container) { 25 | 26 | this.options = $.extend({}, $.fn.singlePageNav.defaults, options); 27 | 28 | this.container = container; 29 | this.$container = $(container); 30 | this.$links = this.$container.find('a'); 31 | 32 | if (this.options.filter !== '') { 33 | this.$links = this.$links.filter(this.options.filter); 34 | } 35 | 36 | this.$window = $(window); 37 | this.$htmlbody = $('html, body'); 38 | 39 | this.$links.on('click.singlePageNav', $.proxy(this.handleClick, this)); 40 | 41 | this.didScroll = false; 42 | this.checkPosition(); 43 | this.setTimer(); 44 | }, 45 | 46 | handleClick: function(e) { 47 | var self = this, 48 | link = e.currentTarget, 49 | $elem = $(link.hash); 50 | 51 | e.preventDefault(); 52 | 53 | if ($elem.length) { // Make sure the target elem exists 54 | 55 | // Prevent active link from cycling during the scroll 56 | self.clearTimer(); 57 | 58 | // Before scrolling starts 59 | if (typeof self.options.beforeStart === 'function') { 60 | self.options.beforeStart(); 61 | } 62 | 63 | self.setActiveLink(link.hash); 64 | 65 | self.scrollTo($elem, function() { 66 | 67 | if (self.options.updateHash && history.pushState) { 68 | history.pushState(null,null, link.hash); 69 | } 70 | 71 | self.setTimer(); 72 | 73 | // After scrolling ends 74 | if (typeof self.options.onComplete === 'function') { 75 | self.options.onComplete(); 76 | } 77 | }); 78 | } 79 | }, 80 | 81 | scrollTo: function($elem, callback) { 82 | var self = this; 83 | var target = self.getCoords($elem).top; 84 | var called = false; 85 | 86 | self.$htmlbody.stop().animate( 87 | {scrollTop: target}, 88 | { 89 | duration: self.options.speed, 90 | easing: self.options.easing, 91 | complete: function() { 92 | if (typeof callback === 'function' && !called) { 93 | callback(); 94 | } 95 | called = true; 96 | } 97 | } 98 | ); 99 | }, 100 | 101 | setTimer: function() { 102 | var self = this; 103 | 104 | self.$window.on('scroll.singlePageNav', function() { 105 | self.didScroll = true; 106 | }); 107 | 108 | self.timer = setInterval(function() { 109 | if (self.didScroll) { 110 | self.didScroll = false; 111 | self.checkPosition(); 112 | } 113 | }, 250); 114 | }, 115 | 116 | clearTimer: function() { 117 | clearInterval(this.timer); 118 | this.$window.off('scroll.singlePageNav'); 119 | this.didScroll = false; 120 | }, 121 | 122 | // Check the scroll position and set the active section 123 | checkPosition: function() { 124 | var scrollPos = this.$window.scrollTop(); 125 | var currentSection = this.getCurrentSection(scrollPos); 126 | this.setActiveLink(currentSection); 127 | }, 128 | 129 | getCoords: function($elem) { 130 | return { 131 | top: Math.round($elem.offset().top) - this.options.offset, 132 | height: Math.round($elem.outerHeight(true)) // !!! my additions !!! 133 | }; 134 | }, 135 | 136 | setActiveLink: function(href) { 137 | var $activeLink = this.$container.find("a[href$='" + href + "']"); 138 | 139 | if (!$activeLink.hasClass(this.options.currentClass)) { 140 | this.$links.removeClass(this.options.currentClass); 141 | $activeLink.addClass(this.options.currentClass); 142 | 143 | // !!! my additions !!! 144 | var $linesOfLiveUL = this.$container.children("li").children("ul").children("li"); 145 | $linesOfLiveUL.find("li").addClass("hidden"); // hide content of modules 146 | $linesOfLiveUL.children("a").removeClass("current-module"); // reset current module 147 | $activeLink.parentsUntil("#nav").filter("li").removeClass("hidden"); // show content of current module 148 | $linesOfLiveUL.has($activeLink).children("a").addClass("current-module"); // appoint current module 149 | 150 | // !!! my additions !!! 151 | $(".Module, .Class, .Sub-Class").removeClass(this.options.currentClass); // remove the frame 152 | $(href).addClass(this.options.currentClass); // to frame the current div 153 | } 154 | }, 155 | 156 | getCurrentSection: function(scrollPos) { 157 | var i, hash, coords, section; 158 | 159 | for (i = 0; i < this.$links.length; i++) { 160 | hash = this.$links[i].hash; 161 | 162 | if ($(hash).length && 163 | !$(hash).hasClass("collapsed") && $(hash).css ("display") != "none") { // !!! my additions !!! блок не свёрнут и не скрыт 164 | coords = this.getCoords($(hash)); 165 | 166 | if (scrollPos >= coords.top - this.options.threshold && 167 | scrollPos < coords.top + coords.height - this.options.threshold) // !!! my additions !!! 168 | section = hash; 169 | } 170 | } 171 | 172 | // The current section or the first link 173 | return section || this.$links[0].hash; 174 | } 175 | }; 176 | 177 | $.fn.singlePageNav = function(options) { 178 | return this.each(function() { 179 | var singlePageNav = Object.create(SinglePageNav); 180 | singlePageNav.init(options, this); 181 | }); 182 | }; 183 | 184 | $.fn.singlePageNav.defaults = { 185 | offset: 0, 186 | threshold: 120, 187 | speed: 400, 188 | currentClass: 'current', 189 | easing: 'swing', 190 | updateHash: false, 191 | filter: '', 192 | onComplete: false, 193 | beforeStart: false 194 | }; 195 | 196 | })(jQuery, window, document); 197 | --------------------------------------------------------------------------------