diff --git a/bitwig.d.ts b/bitwig.d.ts index 6fe403e..28abc2f 100644 --- a/bitwig.d.ts +++ b/bitwig.d.ts @@ -36,18 +36,18 @@ equivalent to calling {@link #clearBindings()} and then } /** Represents a binding from an {@link AbsoluteHardwareControl} to some target. */ -declare interface AbsoluteHardwareControlBinding { +declare interface AbsoluteHardwareControlBinding extends HardwareBindingWithRange { } /** Represents a physical hardware knob that inputs an absolute value. */ -declare interface AbsoluteHardwareKnob { +declare interface AbsoluteHardwareKnob extends AbsoluteHardwareControl { } /** Defines a means of recognizing when an absolute value is input by the user (for example, when moving a slider or turning a knob based on some MIDI message). This matcher can then be set on an {@link AbsoluteHardwareControl} using {@link AbsoluteHardwareControl#setAdjustValueMatcher(AbsoluteHardwareValueMatcher)}. */ -declare interface AbsoluteHardwareValueMatcher { +declare interface AbsoluteHardwareValueMatcher extends ContinuousHardwareValueMatcher { } /** Instances of this interface represent actions in Bitwig Studio, such as commands that can be launched from @@ -57,7 +57,7 @@ To receive the list of all actions provided by Bitwig Studio call {@link Applica list of actions that belong to a certain category can be queried by calling {@link ActionCategory#getActions()}. Access to specific actions is provided in {@link Application#getAction(String)}. */ -declare interface Action { +declare interface Action extends HardwareActionBindable { } /** Instances of this interface are used to categorize actions in Bitwig Studio. The list of action categories @@ -125,10 +125,113 @@ panel layouts depends on the active display profile. */ /** the name of the new panel layout*/ panelLayout: any, ): void + + createAudioTrack(position: number): void + createInstrumentTrack(position: number): void + createEffectTrack(position: number): void + getActions(): Action[] + getAction(id: string): Action + getActionCategories(): ActionCategory[] + getActionCategory(id: string): ActionCategory + activateEngine(): void + deactivateEngine(): void + hasActiveEngine(): BooleanValue + addHasActiveEngineObserver(callable: BooleanValueChangedCallback): void + projectName(): StringValue + addProjectNameObserver(callback: StringValueChangedCallback, maxChars: number): void + nextProject(): void + previousProject(): void + navigateIntoTrackGroup(track: Track): void + navigateToParentTrackGroup(): void + undo(): void + undoAction(): HardwareActionBindable + redo(): void + redoAction(): HardwareActionBindable + setPanelLayout(panelLayout: string): void + nextPanelLayout(): void + previousPanelLayout(): void + panelLayout(): StringValue + addPanelLayoutObserver(callable: StringValueChangedCallback, maxChars: number): void + displayProfile(): StringValue + addDisplayProfileObserver(callable: StringValueChangedCallback, maxChars: number): void + toggleInspector(): void + toggleDevices(): void + toggleMixer(): void + toggleNoteEditor(): void + toggleAutomationEditor(): void + toggleBrowserVisibility(): void + previousSubPanel(): void + nextSubPanel(): void + arrowKeyLeft(): void + arrowKeyRight(): void + arrowKeyUp(): void + arrowKeyDown(): void + enter(): void + escape(): void + selectAll(): void + selectAllAction(): HardwareActionBindable + selectNone(): void + selectNoneAction(): HardwareActionBindable + selectPrevious(): void + selectPreviousAction(): HardwareActionBindable + selectNext(): void + selectNextAction(): HardwareActionBindable + selectFirst(): void + selectFirstAction(): HardwareActionBindable + selectLast(): void + selectLastAction(): HardwareActionBindable + cut(): void + cutAction(): HardwareActionBindable + copy(): void + copyAction(): HardwareActionBindable + paste(): void + pasteAction(): HardwareActionBindable + duplicate(): void + duplicateAction(): HardwareActionBindable + remove(): void + removeAction(): HardwareActionBindable + rename(): void + zoomIn(): void + zoomInAction(): HardwareActionBindable + zoomOut(): void + zoomOutAction(): HardwareActionBindable + zoomToSelection(): void + zoomToSelectionAction(): HardwareActionBindable + zoomToSelectionOrAll(): void + zoomToSelectionOrAllAction(): HardwareActionBindable + zoomToSelectionOrPrevious(): void + zoomToSelectionOrPreviousAction(): HardwareActionBindable + zoomToFit(): void + zoomToFitAction(): HardwareActionBindable + focusPanelToLeft(): void + focusPanelToRight(): void + focusPanelAbove(): void + focusPanelBelow(): void + toggleFullScreen(): void + setPerspective(perspective: string): void + nextPerspective(): void + previousPerspective(): void + addSelectedModeObserver(callable: StringValueChangedCallback, maxChars: number, fallbackText: string): void + recordQuantizationGrid(): SettableEnumValue + recordQuantizeNoteLength(): SettableBooleanValue } /** Proxy to an arpeggiator component. */ -declare interface Arpeggiator { +declare interface Arpeggiator extends ObjectProxy { + /** + * one of: all, up, up-down, up-then-down, down, down-up, down-then-up, + * flow, random, converge-up, converge-down, diverge-up, diverge-down, + * thumb-up, thumb-down, pinky-up, pinky-down + */ + mode(): SettableEnumValue + octaves(): SettableIntegerValue + isEnabled(): SettableBooleanValue + isFreeRunning(): SettableBooleanValue + shuffle(): SettableBooleanValue + rate(): SettableDoubleValue + gateLength(): SettableDoubleValue + usePressureToVelocity(): SettableBooleanValue + releaseNotes(): void } /** An interface representing various commands which can be performed on the Bitwig Studio arranger.
@@ -139,9 +242,22 @@ declare interface Arranger { /** Returns an object that provides access to a bank of successive cue markers using a window configured with the given size, that can be scrolled over the list of markers. */ createCueMarkerBank( - /** the number of simultaneously accessible items*/ - size: any, ): CueMarkerBank + size: number): CueMarkerBank + + isPlaybackFollowEnabled(): SettableBooleanValue + hasDoubleRowTrackHeight(): SettableBooleanValue + areCueMarkersVisible(): SettableBooleanValue + isClipLauncherVisible(): SettableBooleanValue + isTimelineVisible(): SettableBooleanValue + isIoSectionVisible(): SettableBooleanValue + areEffectTracksVisible(): SettableBooleanValue + addPlaybackFollowObserver(callback: BooleanValueChangedCallback): void + addTrackRowHeightObserver(callback: BooleanValueChangedCallback): void + addCueMarkerVisibilityObserver(callback: BooleanValueChangedCallback): void + togglePlaybackFollow(): void + toggleTrackRowHeight(): void + toggleCueMarkerVisibility(): void } /** Callback that is notified when an asynchronous transfer has completed. */ @@ -163,7 +279,7 @@ declare interface AutoDetectionMidiPortNamesList { fixed number of items and represent an excerpt of a larger list of items. Various methods are provided for scrolling to different sections of the item list. It basically acts like a window moving over the list of underlying items. */ -declare interface Bank { +declare interface Bank extends ObjectProxy, Scrollable { /** Sets the size of this bank */ setSizeOfBank( @@ -177,7 +293,6 @@ declare interface Bank { /** Defines a formatter for a beat time that can convert a beat time to a string for display to the user. */ declare interface BeatTimeFormatter { - /** Formats the supplied beat time as a string in the supplied time signature. */ formatBeatTime(beatTime: number, isAbsolute: boolean, timeSignatureNumerator: number, timeSignatureDenominator: number, timeSignatureTicks: number, ): string } @@ -185,14 +300,13 @@ declare interface BeatTimeFormatter { /** Instances of this interface represent beat time values. Beat time values are double-precision number representing the number of quarter notes, regardless of time-signature. */ -declare interface BeatTimeValue { - +declare interface BeatTimeValue extends DoubleValue { /** Gets the current beat time formatted according to the supplied formatter. */ getFormatted(formatter: BeatTimeFormatter, ): string } /** Represents a bitmap image which can be painted via {@link #render(Renderer)}. */ -declare interface Bitmap { +declare interface Bitmap extends Image { /** Call this method to start painting the bitmap. This method will take care of disposing allocated patterns during the rendering. */ @@ -209,7 +323,7 @@ This method will take care of disposing allocated patterns during the rendering. } /** Represents an output value shown on some hardware (for example, if an LED is on or off). */ -declare interface BooleanHardwareProperty { +declare interface BooleanHardwareProperty extends HardwareProperty { /** Specifies a callback that should be called with the value that needs to be sent to the hardware. This callback is called as a result of calling the {@link HardwareSurface#updateHardware()} method (typically @@ -223,16 +337,16 @@ from the flush method). */ setValueSupplier(supplier: (...args: any[]) => boolean, ): void } -declare interface BooleanValue extends Value { +declare interface BooleanValue extends Value { get(): boolean } -declare interface BooleanValueChangedCallback { +declare interface BooleanValueChangedCallback extends ValueChangedCallback { valueChanged(newValue: boolean, ): void } /** Instances of this interface are used to navigate a column in the Bitwig Studio browser. */ -declare interface BrowserColumn { +declare interface BrowserColumn extends ObjectProxy { /** Returns an object that provides access to a bank of successive entries using a window configured with the given size, that can be scrolled over the list of entries. */ @@ -243,7 +357,7 @@ the given size, that can be scrolled over the list of entries. */ } /** Instances of this interface are used to navigate a filter column in the Bitwig Studio browser. */ -declare interface BrowserFilterColumn { +declare interface BrowserFilterColumn extends BrowserColumn { /** Returns an object that provides access to a bank of successive entries using a window configured with the given size, that can be scrolled over the list of entries. */ @@ -254,7 +368,7 @@ the given size, that can be scrolled over the list of entries. */ } /** Instances of this interface represent entries in a browser filter column. */ -declare interface BrowserFilterItem { +declare interface BrowserFilterItem extends BrowserItem { } /** Instances of this interface are used to navigate a filter column in the Bitwig Studio browser. */ @@ -302,7 +416,12 @@ declare interface BrowsingSessionBank { /** This interface represents a chain selector device which can be: - instrument selector - effect selector */ -declare interface ChainSelector { +declare interface ChainSelector extends { + activeChainIndex(): SettableIntegerValue + chainCount(): IntegerValue + activeChain(): DeviceLayer + cycleNext(): void + cyclePrevious(): void } /** This interface defines access to the common attributes and operations of channels, such as tracks or nested @@ -4092,15 +4211,17 @@ declare interface UserControlBank { } /** The common interface that is shared by all value objects in the controller API. */ -declare interface Value { - - /** Registers an observer that reports the current value. */ - addValueObserver( - - /** a callback function that receives a single parameter*/ - callback: any, ): void +export interface Value { + markInterested(): void + addValueObserver(callback: ObserverType): void + /** + * this is actually only for Integer, but i couldn't figure out how to + * model that in ts + */ + addValueObserver(callback: ObserverType, valueWhenUnassigned: number): void } + declare enum CursorDeviceFollowMode { FOLLOW_SELECTION, FIRST_DEVICE,