AndroidTimelineFacade

Properties

Link copied to clipboard
open override val addresses: ProjectAddressBook

Translation between persistent document identities and runtime indexes.

Link copied to clipboard
open override val commands: ProjectCommands

The undoable edits this project supports, and (through ProjectCommands.history) the history they record into. Everything that changes the document goes through here.

Link copied to clipboard
Link copied to clipboard
open override val masterTempoMap: TempoMap

The project's seconds-to-beats curve, owned by the master track. This is the one the engine schedules playback against, so a display converting through it can never disagree with what is heard.

Link copied to clipboard
Link copied to clipboard
open override val trackCount: UInt

Functions

Link copied to clipboard
open override fun addAudioClip(trackIndex: Int, position: TimelinePosition, reader: AudioFileReader, filepath: String): ClipAddResult
Link copied to clipboard
open override fun addEmptyTrack(origin: MutationOrigin = MutationOrigin.User, callback: (Int, String?) -> Unit)
Link copied to clipboard
open override fun addMidiClipFromFile(trackIndex: Int, position: TimelinePosition, filepath: String, nrpnToParameterMapping: Boolean = false): ClipAddResult
Link copied to clipboard
open override fun attachClipFragment(trackIndex: Int, fragment: ClipFragment, idPolicy: ObjectIdPolicy): ClipAddResult
Link copied to clipboard
open override fun attachTrackFragment(fragment: TrackFragment, options: TrackAttachOptions, callback: (Int, String?) -> Unit)
Link copied to clipboard
Link copied to clipboard
open override 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
open override 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
open override 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
open override 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
open override 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
open override fun getState(): TimelineState?
Link copied to clipboard
open override fun getTrack(index: UInt): TimelineTrack
Link copied to clipboard
open override fun isClipEnabled(trackIndex: Int, clipId: Int): Boolean
Link copied to clipboard
open override fun loadPluginPreset(instanceId: Int, presetIndex: Int, origin: MutationOrigin = MutationOrigin.User, completion: (UndoResult) -> Unit? = null)
Link copied to clipboard
open override fun loadProject(filePath: String): ProjectResult
Link copied to clipboard
open override fun newProject(): ProjectResult

Discards the current document and starts an empty one: no tracks, a fresh master track, no undo history, nothing dirty. Observers see the same closing/loaded pair a load emits, so state owned outside the timeline is dropped the same way. Whether unsaved changes may be discarded is the caller's decision, not this one.

Link copied to clipboard
open override fun pasteClipFragment(trackIndex: Int, fragment: ClipFragment): ClipAddResult

Paste: attaches with fresh identifiers AND records the result as one undoable edit, which attachClipFragment does not do. Must NOT be called inside a documentTransaction.

Link copied to clipboard
open override 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
open override fun recordTrackAddition(trackIndex: Int, origin: MutationOrigin = MutationOrigin.User, callback: (Int, String?) -> Unit)

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

Link copied to clipboard
open override fun removeClip(trackIndex: Int, clipId: Int): Boolean
open override fun removeClip(trackIndex: Int, clipId: Int, origin: MutationOrigin): Boolean
Link copied to clipboard
open override 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
open override fun removeTrack(trackIndex: Int, origin: MutationOrigin = MutationOrigin.User, callback: (Int, String?) -> Unit)
Link copied to clipboard
open override 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
open override 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
open override fun setLoop(enabled: Boolean, start: TimelinePosition, end: TimelinePosition)
Link copied to clipboard
open override fun setPluginState(instanceId: Int, state: ByteArray, origin: MutationOrigin = MutationOrigin.User, completion: (UndoResult) -> Unit? = null)
Link copied to clipboard
open override fun setTempo(tempo: Double)
Link copied to clipboard
open override fun setTimelineChangedCallback(callback: () -> Unit?)

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

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