TimelineFacade

interface TimelineFacade

Inheritors

AndroidTimelineFacade
JsTimelineFacade
JvmTimelineFacade
NativeTimelineFacade
WasmJsTimelineFacade

Properties

Link copied to clipboard

Translation between persistent document identities and runtime indexes.

Link copied to clipboard

The undoable edits this project supports.

Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
abstract val trackCount: UInt
Link copied to clipboard
abstract val undoEngine: UndoEngine

Functions

Link copied to clipboard
abstract fun addAudioClip(trackIndex: Int, position: TimelinePosition, reader: AudioFileReader, filepath: String): ClipAddResult
Link copied to clipboard
abstract fun addEmptyTrack(origin: MutationOrigin = MutationOrigin.User, callback: (trackIndex: Int, error: String?) -> Unit)
Link copied to clipboard
abstract fun addMidiClipFromFile(trackIndex: Int, position: TimelinePosition, filepath: String, nrpnToParameterMapping: Boolean = false): ClipAddResult
Link copied to clipboard
abstract fun attachClipFragment(trackIndex: Int, fragment: ClipFragment, idPolicy: ObjectIdPolicy): ClipAddResult
Link copied to clipboard
abstract fun attachTrackFragment(fragment: TrackFragment, options: TrackAttachOptions, callback: (trackIndex: Int, error: String?) -> Unit)
Link copied to clipboard
Link copied to clipboard
abstract fun captureClipFragment(trackIndex: Int, clipId: Int): ClipFragment?

Capture is non-destructive; deleting is a separate removeClip. Must NOT be called inside a documentTransaction. The returned fragment is owned by the caller.

Link copied to clipboard
abstract fun captureTrackFragment(trackIndex: Int, callback: (TrackFragment?, String?) -> Unit)

Both halves are asynchronous because a track owns live plug-in instances. The callback runs exactly once, on the thread completing the last plug-in operation. Capture must NOT be called inside a documentTransaction.

Link copied to clipboard
abstract fun clearClipsFromTrack(trackIndex: Int, origin: MutationOrigin = MutationOrigin.User): Boolean

Removes every clip on the track. True when at least one was removed.

Link copied to clipboard
abstract fun <T> documentTransaction(block: () -> T): T

Groups the document events produced by everything inside block into a single batch. Use whenever one user-visible action performs several mutations, or observers can see it half-applied. Calls nest.

Link copied to clipboard
abstract fun getMidiClipNotes(trackIndex: Int, clipId: Int): List<MidiNoteData>?

Returns MIDI notes for the given clip, or null if the track/clip is not found or is not a MIDI clip. Empty list means a valid MIDI clip with no notes.

Link copied to clipboard
abstract fun getState(): TimelineState?
Link copied to clipboard
abstract fun getTrack(index: UInt): TimelineTrack
Link copied to clipboard
abstract fun isClipEnabled(trackIndex: Int, clipId: Int): Boolean
Link copied to clipboard
abstract fun loadPluginPreset(instanceId: Int, presetIndex: Int, origin: MutationOrigin = MutationOrigin.User, completion: (UndoResult) -> Unit? = null)
Link copied to clipboard
abstract fun loadProject(filePath: String): ProjectResult
Link copied to clipboard
abstract fun recordPluginInstanceAddition(instanceId: Int, origin: MutationOrigin = MutationOrigin.User, completion: (UndoResult) -> Unit? = null)

Records a plug-in that has already been instantiated.

Link copied to clipboard
abstract fun recordTrackAddition(trackIndex: Int, origin: MutationOrigin = MutationOrigin.User, callback: (trackIndex: Int, error: String?) -> Unit)

Records an already-published, fully constructed track as one addition.

Link copied to clipboard
abstract fun removeClip(trackIndex: Int, clipId: Int): Boolean
abstract fun removeClip(trackIndex: Int, clipId: Int, origin: MutationOrigin): Boolean
Link copied to clipboard
abstract fun removePluginInstance(instanceId: Int, origin: MutationOrigin = MutationOrigin.User, completion: (UndoResult) -> Unit? = null)

Captures state, removes the instance, and records the removal as one step.

Link copied to clipboard
abstract fun removeTrack(trackIndex: Int, origin: MutationOrigin = MutationOrigin.User, callback: (trackIndex: Int, error: String?) -> Unit)
Link copied to clipboard
abstract fun replaceAudioClipContent(trackIndex: Int, clipId: Int, filepath: String, markers: List<ClipMarkerData>, warps: List<AudioWarpPointData>, masterMarkers: List<ClipMarkerData>, origin: MutationOrigin = MutationOrigin.User): Boolean

Rebuilds an audio clip's source from its file with the given markers and warp points. A non-empty filepath switches the clip to that file and adopts its length; otherwise the clip keeps its length.

Link copied to clipboard
abstract fun replaceMidiClipContent(trackIndex: Int, clipId: Int, umpEvents: UIntArray, tickTimestamps: LongArray, origin: MutationOrigin = MutationOrigin.User): Boolean

Replaces a MIDI clip's authored content, resizing the clip to match.

Link copied to clipboard
abstract fun setLoop(enabled: Boolean, start: TimelinePosition, end: TimelinePosition)
Link copied to clipboard
abstract fun setPluginState(instanceId: Int, state: ByteArray, origin: MutationOrigin = MutationOrigin.User, completion: (UndoResult) -> Unit? = null)
Link copied to clipboard
abstract fun setTempo(tempo: Double)
Link copied to clipboard
abstract fun setTimelineChangedCallback(callback: () -> Unit?)

Registers a callback invoked after every clip add/remove and after loadProject(). Pass null to unregister.

Link copied to clipboard
abstract fun setTimeSignature(numerator: Int, denominator: Int)