From 53ea9e17381967b00ba5aa23dc62a71b1f9573f4 Mon Sep 17 00:00:00 2001 From: Sam Watkinson Date: Sat, 18 May 2024 05:57:43 -0700 Subject: [PATCH] Get `song.view.get('detail_clip')` working (#118) get detail_clip working --- midi-script/SongView.py | 7 +++++++ src/ns/song-view.ts | 24 ++++++++++++++---------- 2 files changed, 21 insertions(+), 10 deletions(-) diff --git a/midi-script/SongView.py b/midi-script/SongView.py index f0eba86..6f8aabf 100755 --- a/midi-script/SongView.py +++ b/midi-script/SongView.py @@ -3,6 +3,7 @@ from .DeviceParameter import DeviceParameter from .Scene import Scene from .Track import Track +from .Clip import Clip from .ClipSlot import ClipSlot @@ -13,6 +14,12 @@ def __init__(self, c_instance, socket): def get_ns(self, nsid): return self.ableton.song().view + def get_detail_clip(self, ns): + return Clip.serialize_clip(ns.detail_clip) + + def set_detail_clip(self, ns, clip_id): + ns.detail_clip = Interface.get_obj(clip_id) + def select_device(self, ns, device_id): return ns.select_device(Interface.get_obj(device_id)) diff --git a/src/ns/song-view.ts b/src/ns/song-view.ts index 395a3e7..0c18844 100644 --- a/src/ns/song-view.ts +++ b/src/ns/song-view.ts @@ -1,13 +1,14 @@ -import { Ableton } from ".."; import { Namespace } from "."; -import { Device } from "./device"; -import { Track, RawTrack } from "./track"; -import { Scene, RawScene } from "./scene"; -import { RawDeviceParameter, DeviceParameter } from "./device-parameter"; +import { Ableton } from ".."; +import { Clip, RawClip } from "./clip"; import { ClipSlot, RawClipSlot } from "./clip-slot"; +import { Device } from "./device"; +import { DeviceParameter, RawDeviceParameter } from "./device-parameter"; +import { RawScene, Scene } from "./scene"; +import { RawTrack, Track } from "./track"; export interface GettableProperties { - detail_clip: any /* Todo: Implement Clip class */; + detail_clip: RawClip; draw_mode: boolean; follow_song: boolean; highlighted_clip_slot: RawClipSlot; @@ -18,6 +19,7 @@ export interface GettableProperties { } export interface TransformedProperties { + detail_clip: Clip; selected_parameter: DeviceParameter; selected_scene: Scene; selected_track: Track; @@ -25,16 +27,16 @@ export interface TransformedProperties { } export interface SettableProperties { - detail_clip: any; + detail_clip: RawClip["id"]; draw_mode: boolean; follow_song: boolean; highlighted_clip_slot: number; - selected_scene: RawScene['id']; - selected_track: RawTrack['id']; + selected_scene: RawScene["id"]; + selected_track: RawTrack["id"]; } export interface ObservableProperties { - detail_clip: any; + detail_clip: RawClip | null; draw_mode: any; follow_song: any; highlighted_clip_slot: any; @@ -58,9 +60,11 @@ export class SongView extends Namespace< selected_track: (track) => new Track(ableton, track), selected_scene: (scene) => new Scene(ableton, scene), highlighted_clip_slot: (slot) => new ClipSlot(ableton, slot), + detail_clip: (clip) => new Clip(ableton, clip), }; this.cachedProps = { + detail_clip: true, selected_parameter: true, selected_track: true, selected_scene: true,