diff --git a/OpenTimelineIO-Sample/OpenTimelineIO-Reader/Views/ContentView.swift b/OpenTimelineIO-Sample/OpenTimelineIO-Reader/Views/ContentView.swift index 647a297..66c887e 100644 --- a/OpenTimelineIO-Sample/OpenTimelineIO-Reader/Views/ContentView.swift +++ b/OpenTimelineIO-Sample/OpenTimelineIO-Reader/Views/ContentView.swift @@ -33,9 +33,7 @@ struct ContentView: View self.fileURL = fileURL guard let fileURL = fileURL else { return } - - - + self.document.setupPlayerWithBaseDocumentURL(fileURL) } @@ -65,6 +63,7 @@ struct ContentView: View self.controlsViewStack() } } + } detail: { ItemInspectorView(selectedItem: self.$selectedItem) diff --git a/OpenTimelineIO-Sample/OpenTimelineIO-Reader/Views/ItemInspectorView.swift b/OpenTimelineIO-Sample/OpenTimelineIO-Reader/Views/ItemInspectorView.swift index 7020708..633d253 100644 --- a/OpenTimelineIO-Sample/OpenTimelineIO-Reader/Views/ItemInspectorView.swift +++ b/OpenTimelineIO-Sample/OpenTimelineIO-Reader/Views/ItemInspectorView.swift @@ -129,7 +129,6 @@ struct ItemInspectorView: View } .font(.system(size: 10)) .listRowSeparator(.hidden) - } func safeToJSON(item: Item) -> String diff --git a/OpenTimelineIO-Sample/OpenTimelineIO-Reader/Views/ItemView.swift b/OpenTimelineIO-Sample/OpenTimelineIO-Reader/Views/ItemView.swift index 6d1da6f..cdca6fb 100644 --- a/OpenTimelineIO-Sample/OpenTimelineIO-Reader/Views/ItemView.swift +++ b/OpenTimelineIO-Sample/OpenTimelineIO-Reader/Views/ItemView.swift @@ -13,47 +13,42 @@ import SwiftUI struct ItemView : View { let item:OpenTimelineIO.Item - @State var backgroundColor:Color - @State var selected:Bool + let backgroundColor:Color + let selected:Bool + + private var isGap: Bool { + item.isKind(of: Gap.self) + } @Binding var secondsToPixels:Double var body: some View { - - ZStack { - - if let _ = item as? Gap - { - RoundedRectangle(cornerRadius: 3) - .fill(Color("GapTrackBaseColor")) // Fill the RoundedRectangle with color - .overlay( - RoundedRectangle(cornerRadius: 3) - .stroke(self.selected ? .white : .clear, lineWidth: 1) // Add stroke/outline - ) - .frame(width: self.getSafeWidth() - 2) - } - else - { + ZStack + { + let fill:AnyShapeStyle = ( isGap ) ? AnyShapeStyle( Color("GapTrackBaseColor") ) : AnyShapeStyle(self.backgroundColor.gradient) + let textGapOpacity:Double = ( isGap ) ? 0.0 : 1.0 + + RoundedRectangle(cornerRadius: 3) + .fill(fill, style: FillStyle()) + .overlay( RoundedRectangle(cornerRadius: 3) - .fill(self.backgroundColor.gradient) // Fill the RoundedRectangle with color - .overlay( - RoundedRectangle(cornerRadius: 3) - .stroke(self.selected ? .white : .clear, lineWidth: 1) // Add stroke/outline - ) + .strokeBorder(self.selected ? .orange : .clear, lineWidth: 1) // Add stroke/outline .frame(width: self.getSafeWidth() - 2) - - if self.getSafeWidth() > 40 - { - Text(item.name) - .lineLimit(1) - .font(.system(size: 10)) - .frame(width: self.getSafeWidth()) - } - } - } - .frame(width: self.getSafeWidth()) -// .offset(x:self.getSafePositionX() )//, y:geometry.size.height * 0.5 ) + ) + .frame(width: self.getSafeWidth() - 2) + + Text(item.name) + .lineLimit(1) + .font(.system(size: 10)) + .frame(width: self.getSafeWidth()) + .opacity(self.getSafeWidth() > 40 ? textGapOpacity : 0.0) + } + .frame(width: self.getSafeWidth(), alignment: .leading ) + .overlay { + // TODO: Get item marker coordinate system working +// self.getMarkerView() + } } func getSafeRange() -> OpenTimelineIO.TimeRange @@ -81,4 +76,18 @@ struct ItemView : View { { return self.getSafeRange().startTime.toSeconds() * self.secondsToPixels// + self.getSafeWidth()/2.0 } + + @ViewBuilder func getMarkerView() -> some View + { + HStack(alignment: .top) + { + let markerRange = self.item.markers.startIndex ..< self.item.markers.endIndex + ForEach(markerRange, id:\.self) { markerIndex in + MarkerView(marker: self.item.markers[markerIndex], + secondsToPixels: self.$secondsToPixels) + } + } + .frame(width: self.getSafeWidth(), alignment: .leading ) + + } } diff --git a/OpenTimelineIO-Sample/OpenTimelineIO-Reader/Views/MarkerView.swift b/OpenTimelineIO-Sample/OpenTimelineIO-Reader/Views/MarkerView.swift new file mode 100644 index 0000000..348d3ef --- /dev/null +++ b/OpenTimelineIO-Sample/OpenTimelineIO-Reader/Views/MarkerView.swift @@ -0,0 +1,58 @@ +// +// MarkerView.swift +// OpenTimelineIO-Reader +// +// Created by Anton Marini on 7/1/25. +// + +import OpenTimelineIO_AVFoundation +import OpenTimelineIO +import TimecodeKit +import SwiftUI + +struct MarkerView : View { + + let marker:OpenTimelineIO.Marker + + @Binding var secondsToPixels:Double + + var body: some View + { + self.colorForMarker() + .frame(width: self.getSafeWidth(), height: 7.0 ) + .offset(x:self.getSafePositionX() ) + } + + func getSafeWidth() -> CGFloat + { + return max(self.marker.markedRange.duration.toSeconds() * self.secondsToPixels, 5.0) + } + + func getSafePositionX() -> CGFloat + { + return self.marker.markedRange.startTime.toSeconds() * self.secondsToPixels// + self.getSafeWidth()/2.0 + } + + func colorForMarker() -> Color + { + if let color:Marker.Color = Marker.Color(rawValue: marker.color) + { + switch color + { + case .pink : return Color.pink + case .red : return Color.red + case .orange : return Color.orange + case .yellow : return Color.yellow + case .green : return Color.green + case .cyan : return Color.cyan + case .blue : return Color.blue + case .purple : return Color.purple + case .magenta : return Color(red: 1.0, green: 0, blue: 1.0) + case .black : return Color.black + case .white : return Color.white + } + } + + return Color.red + } +} diff --git a/OpenTimelineIO-Sample/OpenTimelineIO-Reader/Views/TimeRulerView.swift b/OpenTimelineIO-Sample/OpenTimelineIO-Reader/Views/TimeRulerView.swift index e972c36..aef8ba9 100644 --- a/OpenTimelineIO-Sample/OpenTimelineIO-Reader/Views/TimeRulerView.swift +++ b/OpenTimelineIO-Sample/OpenTimelineIO-Reader/Views/TimeRulerView.swift @@ -11,6 +11,9 @@ import TimecodeKit import SwiftUI struct TimeRulerView: View { + + static let VerticalPadding:CGFloat = 100 + let timeline: OpenTimelineIO.Timeline @Binding var secondsToPixels: Double @Binding var currentTime: OpenTimelineIO.RationalTime @@ -19,22 +22,85 @@ struct TimeRulerView: View { Canvas { context, size in + context.translateBy(x: TrackView.trackHeaderWidth, y: 0) + let safeRange = getSafeRange() let startSeconds = safeRange.startTime.toSeconds() let endSeconds = safeRange.endTimeInclusive().toSeconds() - // Draw playhead - drawPlayhead(context: context, currentTime: currentTime, secondsToPixels: secondsToPixels, size: size) - // Draw ticks (including frame-level ticks) drawTicks(context: context, startSeconds: startSeconds, endSeconds: endSeconds, secondsToPixels: secondsToPixels, size: size) + // Draw playhead + drawPlayhead(context: context, currentTime: currentTime, secondsToPixels: secondsToPixels, size: size) + + drawMarkers(context: context, startSeconds: startSeconds, endSeconds: endSeconds, secondsToPixels: secondsToPixels, size: size) + } - .frame(width: self.getSafeWidth()) + .frame(width: self.getSafeWidth() + TrackView.trackHeaderWidth) } + + func drawMarkers(context: GraphicsContext, startSeconds: Double, endSeconds: Double, secondsToPixels: Double, size: CGSize) + { + let y = 20.0 + if let tracks = self.timeline.tracks + { + let markerRange = tracks.markers.startIndex ..< tracks.markers.endIndex + for markerIndex in markerRange + { + let marker = tracks.markers[markerIndex] + let x = marker.markedRange.startTime.toSeconds() * self.secondsToPixels + + let text = marker.name + + if #available(macOS 14.0, *) + { + context.draw( + Text("\(Image(systemName: "arrowtriangle.down.fill"))") + .font(.system(size: 10)) + .foregroundStyle(.red), + at: CGPoint(x: x + 0.5, y: y) + ) + + + context.draw( + Text(text) + .font(.system(size: 10)) + .foregroundStyle(.red), + at: CGPoint(x: x + 9 , y: y - 2.0), + anchor: UnitPoint(x: 0, y: 0.5) +) + } + else + { + context.draw( + Text("\(Image(systemName: "arrowtriangle.down.fill"))") + .font(.system(size: 10)) + .foregroundColor(.red), + at: CGPoint(x: x + 0.5, y: y) + ) + + context.draw( + Text(text) + .font(.system(size: 10)) + .foregroundColor(.red), + at: CGPoint(x: x + 9 , y: y - 2.0), + anchor: UnitPoint(x: 0, y: 0.5) + ) + } + + let tickHeight = 24.0 + + // Draw tick line + let tickRect = CGRect(x: x, y: size.height - tickHeight, width: 1, height: tickHeight) + context.fill(Path(tickRect), with: .color(.red)) + } + } + } + func drawTicks(context: GraphicsContext, startSeconds: Double, endSeconds: Double, secondsToPixels: Double, size: CGSize) { - if self.secondsToPixels > 100 + if self.secondsToPixels > 75 { self.drawFrameTicks(context: context, startSeconds: startSeconds, endSeconds: endSeconds, secondsToPixels: secondsToPixels, size: size) } @@ -66,7 +132,7 @@ struct TimeRulerView: View context.fill(Path(tickRect), with: .color(.white)) // Draw label if it's an hour or minute - if self.secondsToPixels > 50 + if self.secondsToPixels > 75 { context.draw(Text(label).font(.system(size: 10)), at: CGPoint(x: positionX + 2, y: size.height - tickHeight - 10)) } @@ -93,9 +159,10 @@ struct TimeRulerView: View let tickRect = CGRect(x: positionX, y: size.height - tickHeight, width: 1, height: tickHeight) context.fill(Path(tickRect), with: .color(.white)) - if self.secondsToPixels > 400 + if self.secondsToPixels > 500 { - context.draw(Text(String(frameNum)).font(.system(size: 10)), at: CGPoint(x: positionX, y: size.height - tickHeight - 5)) + context.draw(Text(String(frameNum)).font(.system(size: 10)), + at: CGPoint(x: positionX, y: size.height - tickHeight - 5)) } } } @@ -114,7 +181,7 @@ struct TimeRulerView: View } let playheadPositionX = currentTime.toSeconds() * secondsToPixels - let playheadRect = CGRect(x: playheadPositionX, y: 20, width: 1, height: size.height-20) + let playheadRect = CGRect(x: playheadPositionX, y: 22, width: 1, height: size.height - 22) // context.fill(Path(playheadRect), with: .color(.orange)) if #available(macOS 14.0, *) @@ -127,7 +194,7 @@ struct TimeRulerView: View context.draw( Text(currentTimeLabel) - .font(.system(size: 10)) + .font(.system(size: 10, weight: .bold)) .foregroundStyle(.orange), at: CGPoint(x: playheadPositionX, y: 5)) } @@ -141,7 +208,7 @@ struct TimeRulerView: View context.draw( Text(currentTimeLabel) - .font(.system(size: 10)) + .font(.system(size: 10, weight: .bold)) .foregroundColor(.orange), at: CGPoint(x: playheadPositionX, y: 5)) } diff --git a/OpenTimelineIO-Sample/OpenTimelineIO-Reader/Views/TimelineView.swift b/OpenTimelineIO-Sample/OpenTimelineIO-Reader/Views/TimelineView.swift index 6b9694f..eb16a86 100644 --- a/OpenTimelineIO-Sample/OpenTimelineIO-Reader/Views/TimelineView.swift +++ b/OpenTimelineIO-Sample/OpenTimelineIO-Reader/Views/TimelineView.swift @@ -32,7 +32,7 @@ struct TimelineView : View { { self.timelineView() .allowsHitTesting(self.hitTestEnabled) - .drawingGroup(opaque: true) +// .drawingGroup(opaque: true) } .onScrollPhaseChange({ oldPhase, newPhase, context in @@ -40,6 +40,8 @@ struct TimelineView : View { self.hitTestEnabled = !newPhase.isScrolling }) + .frame(idealHeight: ( CGFloat((timeline.videoTracks.count + timeline.audioTracks.count)) * TrackView.trackHeight) + TimeRulerView.VerticalPadding ) + } else { @@ -48,47 +50,46 @@ struct TimelineView : View { { self.timelineView() } + .frame(idealHeight: ( CGFloat((timeline.videoTracks.count + timeline.audioTracks.count)) * TrackView.trackHeight) + TimeRulerView.VerticalPadding ) + } } - func timelineView() -> some View + @ViewBuilder func timelineView() -> some View { let videoTracks = timeline.videoTracks let audioTracks = timeline.audioTracks - return - VStack(alignment:.leading, spacing: 3) - { - TimeRulerView(timeline: self.timeline, secondsToPixels: self.$secondsToPixels, currentTime: self.$currentTime ) - .frame(height: 40) - .offset(x:100) - // + VStack(alignment:.leading, spacing: 3) + { + TimeRulerView(timeline: self.timeline, secondsToPixels: self.$secondsToPixels, currentTime: self.$currentTime ) + .frame(height: 50) + + ForEach(0.. CGFloat { - return self.getSafeRange().duration.toSeconds() * self.secondsToPixels + 100 + return self.getSafeRange().duration.toSeconds() * self.secondsToPixels + TrackView.trackHeaderWidth } func getSafePositionX() -> CGFloat { return self.getSafeRange().startTime.toSeconds() * self.secondsToPixels - self.getSafeWidth()/2.0 } + + @ViewBuilder func getMarkerView() -> some View + { + HStack(alignment: .top) + { + let markerRange = self.track.markers.startIndex ..< self.track.markers.endIndex + ForEach(markerRange, id:\.self) { markerIndex in + MarkerView(marker: self.track.markers[markerIndex], + secondsToPixels: self.$secondsToPixels) + } + } + } } diff --git a/Tests/OpenTimelineIO-AVFoundationTests/Assets/premiere_example.otio b/Tests/OpenTimelineIO-AVFoundationTests/Assets/premiere_example.otio new file mode 100644 index 0000000..17f96ee --- /dev/null +++ b/Tests/OpenTimelineIO-AVFoundationTests/Assets/premiere_example.otio @@ -0,0 +1,2369 @@ +{ + "OTIO_SCHEMA": "Timeline.1", + "metadata": { + "fcp_xml": { + "@MZ.EditLine": "0", + "@MZ.Sequence.AudioTimeDisplayFormat": "200", + "@MZ.Sequence.EditingModeGUID": "9678af98-a7b7-4bdb-b477-7ac9c8df4a4e", + "@MZ.Sequence.PreviewFrameSizeHeight": "720", + "@MZ.Sequence.PreviewFrameSizeWidth": "1280", + "@MZ.Sequence.PreviewRenderingClassID": "1297106761", + "@MZ.Sequence.PreviewRenderingPresetCodec": "1297107278", + "@MZ.Sequence.PreviewRenderingPresetPath": "EncoderPresets\\SequencePreview\\9678af98-a7b7-4bdb-b477-7ac9c8df4a4e\\I-Frame Only MPEG.epr", + "@MZ.Sequence.PreviewUseMaxBitDepth": "false", + "@MZ.Sequence.PreviewUseMaxRenderQuality": "false", + "@MZ.Sequence.VideoTimeDisplayFormat": "104", + "@MZ.WorkInPoint": "0", + "@MZ.WorkOutPoint": "10550131200000", + "@Monitor.ProgramZoomIn": "0", + "@Monitor.ProgramZoomOut": "10550131200000", + "@TL.SQAVDividerPosition": "0.5", + "@TL.SQAudioVisibleBase": "0", + "@TL.SQHeaderWidth": "184", + "@TL.SQHideShyTracks": "0", + "@TL.SQTimePerPixel": "0.033806825568230996", + "@TL.SQVideoVisibleBase": "0", + "@TL.SQVisibleBaseTime": "0", + "@explodedTracks": "true", + "@id": "sequence-1", + "labels": { + "label2": "Forest" + }, + "media": { + "audio": { + "format": { + "samplecharacteristics": { + "depth": "16", + "samplerate": "48000" + } + }, + "numOutputChannels": "2", + "outputs": { + "group": [ + { + "channel": { + "index": "1" + }, + "downmix": "0", + "index": "1", + "numchannels": "1" + }, + { + "channel": { + "index": "2" + }, + "downmix": "0", + "index": "2", + "numchannels": "1" + } + ] + } + }, + "video": { + "format": { + "samplecharacteristics": { + "anamorphic": "FALSE", + "codec": { + "appspecificdata": { + "appmanufacturer": "Apple Inc.", + "appname": "Final Cut Pro", + "appversion": "7.0", + "data": { + "qtcodec": { + "codecname": "Apple ProRes 422", + "codectypecode": "apcn", + "codectypename": "Apple ProRes 422", + "codecvendorcode": "appl", + "datarate": "0", + "keyframerate": "0", + "spatialquality": "1024", + "temporalquality": "0" + } + } + }, + "name": "Apple ProRes 422" + }, + "colordepth": "24", + "fielddominance": "none", + "height": "720", + "pixelaspectratio": "square", + "rate": { + "ntsc": "FALSE", + "timebase": "30" + }, + "width": "1280" + } + } + } + }, + "rate": { + "ntsc": "FALSE", + "timebase": "30" + }, + "timecode": { + "displayformat": "NDF", + "rate": { + "ntsc": "FALSE", + "timebase": "30" + } + }, + "uuid": "5ea30a6b-552f-4722-be92-6dfdb66c97e6" + } + }, + "name": "sc01_sh010_layerA", + "global_start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 30.0, + "value": 0.0 + }, + "tracks": { + "OTIO_SCHEMA": "Stack.1", + "metadata": {}, + "name": "sc01_sh010_layerA", + "source_range": null, + "effects": [], + "markers": [ + { + "OTIO_SCHEMA": "Marker.2", + "metadata": { + "fcp_xml": { + "comment": "so, this happened" + } + }, + "name": "My MArker 1", + "color": "RED", + "marked_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 30.0, + "value": 0.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 30.0, + "value": 113.0 + } + } + }, + { + "OTIO_SCHEMA": "Marker.2", + "metadata": { + "fcp_xml": { + "comment": "fsfsfs" + } + }, + "name": "dsf", + "color": "RED", + "marked_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 30.0, + "value": 0.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 30.0, + "value": 492.0 + } + } + }, + { + "OTIO_SCHEMA": "Marker.2", + "metadata": { + "fcp_xml": { + "comment": null + } + }, + "name": "", + "color": "RED", + "marked_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 30.0, + "value": 0.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 30.0, + "value": 298.0 + } + } + } + ], + "enabled": true, + "children": [ + { + "OTIO_SCHEMA": "Track.1", + "metadata": { + "fcp_xml": { + "@MZ.TrackTargeted": "1", + "@TL.SQTrackExpanded": "0", + "@TL.SQTrackExpandedHeight": "25", + "@TL.SQTrackShy": "0", + "enabled": "TRUE", + "locked": "FALSE" + } + }, + "name": "", + "source_range": null, + "effects": [], + "markers": [], + "enabled": true, + "children": [ + { + "OTIO_SCHEMA": "Gap.1", + "metadata": {}, + "name": "", + "source_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 30.0, + "value": 536.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 30.0, + "value": 0.0 + } + }, + "effects": [], + "markers": [], + "enabled": true + }, + { + "OTIO_SCHEMA": "Clip.2", + "metadata": { + "fcp_xml": { + "@frameBlend": "FALSE", + "@id": "clipitem-1", + "alphatype": "none", + "anamorphic": "FALSE", + "enabled": "TRUE", + "labels": { + "label2": "Iris" + }, + "link": [ + { + "clipindex": "1", + "linkclipref": "clipitem-1", + "mediatype": "video", + "trackindex": "1" + }, + { + "clipindex": "2", + "groupindex": "1", + "linkclipref": "clipitem-14", + "mediatype": "audio", + "trackindex": "1" + }, + { + "clipindex": "2", + "groupindex": "1", + "linkclipref": "clipitem-16", + "mediatype": "audio", + "trackindex": "2" + } + ], + "logginginfo": { + "description": null, + "lognote": null, + "scene": null, + "shottake": null + }, + "masterclipid": "masterclip-1", + "pixelaspectratio": "square", + "pproTicksIn": "0", + "pproTicksOut": "846720000000" + }, + "my_hook_function_was_here": true + }, + "name": "sc01_sh010_anim.mov", + "source_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 15.0, + "value": 50.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 15.0, + "value": 0.0 + } + }, + "effects": [], + "markers": [], + "enabled": true, + "media_references": { + "DEFAULT_MEDIA": { + "OTIO_SCHEMA": "ExternalReference.1", + "metadata": { + "fcp_xml": { + "@id": "file-1", + "media": { + "audio": { + "channelcount": "2", + "samplecharacteristics": { + "depth": "16", + "samplerate": "48000" + } + }, + "video": { + "samplecharacteristics": { + "anamorphic": "FALSE", + "fielddominance": "none", + "height": "720", + "pixelaspectratio": "square", + "rate": { + "ntsc": "FALSE", + "timebase": "30" + }, + "width": "1280" + } + } + }, + "rate": { + "ntsc": "FALSE", + "timebase": "30" + }, + "timecode": { + "displayformat": "NDF", + "rate": { + "ntsc": "FALSE", + "timebase": "30" + }, + "reel": { + "name": null + } + } + } + }, + "name": "sc01_sh010_anim.mov", + "available_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 30.0, + "value": 100.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 30.0, + "value": 0.0 + } + }, + "available_image_bounds": null, + "target_url": "file://localhost/D%3a/media/sc01_sh010_anim.mov" + } + }, + "active_media_reference_key": "DEFAULT_MEDIA" + } + ], + "kind": "Video" + }, + { + "OTIO_SCHEMA": "Track.1", + "metadata": { + "fcp_xml": { + "@MZ.TrackTargeted": "0", + "@TL.SQTrackExpanded": "0", + "@TL.SQTrackExpandedHeight": "25", + "@TL.SQTrackShy": "0", + "enabled": "TRUE", + "locked": "FALSE" + } + }, + "name": "", + "source_range": null, + "effects": [], + "markers": [], + "enabled": true, + "children": [ + { + "OTIO_SCHEMA": "Gap.1", + "metadata": {}, + "name": "", + "source_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 30.0, + "value": 13.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 30.0, + "value": 0.0 + } + }, + "effects": [], + "markers": [], + "enabled": true + }, + { + "OTIO_SCHEMA": "Clip.2", + "metadata": { + "fcp_xml": { + "@frameBlend": "FALSE", + "@id": "clipitem-2", + "alphatype": "none", + "enabled": "TRUE", + "labels": { + "label2": "Iris" + }, + "link": [ + { + "clipindex": "1", + "linkclipref": "clipitem-2", + "mediatype": "video", + "trackindex": "2" + }, + { + "clipindex": "1", + "groupindex": "1", + "linkclipref": "clipitem-13", + "mediatype": "audio", + "trackindex": "1" + }, + { + "clipindex": "1", + "groupindex": "1", + "linkclipref": "clipitem-15", + "mediatype": "audio", + "trackindex": "2" + } + ], + "logginginfo": { + "description": null, + "lognote": null, + "scene": null, + "shottake": null + }, + "masterclipid": "masterclip-1", + "pproTicksIn": "0", + "pproTicksOut": "846720000000" + }, + "my_hook_function_was_here": true + }, + "name": "sc01_sh010_anim.mov", + "source_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 30.0, + "value": 100.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 30.0, + "value": 0.0 + } + }, + "effects": [], + "markers": [], + "enabled": true, + "media_references": { + "DEFAULT_MEDIA": { + "OTIO_SCHEMA": "ExternalReference.1", + "metadata": { + "fcp_xml": { + "@id": "file-1", + "media": { + "audio": { + "channelcount": "2", + "samplecharacteristics": { + "depth": "16", + "samplerate": "48000" + } + }, + "video": { + "samplecharacteristics": { + "anamorphic": "FALSE", + "fielddominance": "none", + "height": "720", + "pixelaspectratio": "square", + "rate": { + "ntsc": "FALSE", + "timebase": "30" + }, + "width": "1280" + } + } + }, + "rate": { + "ntsc": "FALSE", + "timebase": "30" + }, + "timecode": { + "displayformat": "NDF", + "rate": { + "ntsc": "FALSE", + "timebase": "30" + }, + "reel": { + "name": null + } + } + } + }, + "name": "sc01_sh010_anim.mov", + "available_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 30.0, + "value": 100.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 30.0, + "value": 0.0 + } + }, + "available_image_bounds": null, + "target_url": "file://localhost/D%3a/media/sc01_sh010_anim.mov" + } + }, + "active_media_reference_key": "DEFAULT_MEDIA" + }, + { + "OTIO_SCHEMA": "Gap.1", + "metadata": {}, + "name": "", + "source_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 30.0, + "value": 52.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 30.0, + "value": 0.0 + } + }, + "effects": [], + "markers": [], + "enabled": true + }, + { + "OTIO_SCHEMA": "Clip.2", + "metadata": { + "fcp_xml": { + "@frameBlend": "FALSE", + "@id": "clipitem-3", + "alphatype": "none", + "anamorphic": "FALSE", + "enabled": "TRUE", + "labels": { + "label2": "Iris" + }, + "logginginfo": { + "description": null, + "lognote": null, + "scene": null, + "shottake": null + }, + "masterclipid": "masterclip-2", + "pixelaspectratio": "square", + "pproTicksIn": "0", + "pproTicksOut": "1329350400000" + }, + "my_hook_function_was_here": true + }, + "name": "sc01_sh020_anim.mov", + "source_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 30.0, + "value": 157.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 30.0, + "value": 0.0 + } + }, + "effects": [], + "markers": [], + "enabled": true, + "media_references": { + "DEFAULT_MEDIA": { + "OTIO_SCHEMA": "ExternalReference.1", + "metadata": { + "fcp_xml": { + "@id": "file-2", + "media": { + "audio": { + "channelcount": "2", + "samplecharacteristics": { + "depth": "16", + "samplerate": "48000" + } + }, + "video": { + "samplecharacteristics": { + "anamorphic": "FALSE", + "fielddominance": "none", + "height": "720", + "pixelaspectratio": "square", + "rate": { + "ntsc": "FALSE", + "timebase": "30" + }, + "width": "1280" + } + } + }, + "rate": { + "ntsc": "FALSE", + "timebase": "30" + }, + "timecode": { + "displayformat": "NDF", + "rate": { + "ntsc": "FALSE", + "timebase": "30" + }, + "reel": { + "name": null + } + } + } + }, + "name": "sc01_sh020_anim.mov", + "available_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 30.0, + "value": 175.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 30.0, + "value": 0.0 + } + }, + "available_image_bounds": null, + "target_url": "file://localhost/D%3a/media/sc01_sh020_anim.mov" + } + }, + "active_media_reference_key": "DEFAULT_MEDIA" + }, + { + "OTIO_SCHEMA": "Clip.2", + "metadata": { + "fcp_xml": { + "@frameBlend": "FALSE", + "@id": "clipitem-4", + "alphatype": "none", + "anamorphic": "FALSE", + "enabled": "TRUE", + "labels": { + "label2": "Iris" + }, + "logginginfo": { + "description": null, + "lognote": null, + "scene": null, + "shottake": null + }, + "masterclipid": "masterclip-3", + "pixelaspectratio": "square", + "pproTicksIn": "0", + "pproTicksOut": "1989792000000" + }, + "my_hook_function_was_here": true + }, + "name": "sc01_sh030_anim.mov", + "source_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 30.0, + "value": 235.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 30.0, + "value": 0.0 + } + }, + "effects": [], + "markers": [ + { + "OTIO_SCHEMA": "Marker.2", + "metadata": { + "fcp_xml": { + "comment": null + } + }, + "name": "", + "color": "RED", + "marked_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 30.0, + "value": 0.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 30.0, + "value": 73.0 + } + } + } + ], + "enabled": true, + "media_references": { + "DEFAULT_MEDIA": { + "OTIO_SCHEMA": "ExternalReference.1", + "metadata": { + "fcp_xml": { + "@id": "file-3", + "media": { + "audio": { + "channelcount": "2", + "samplecharacteristics": { + "depth": "16", + "samplerate": "48000" + } + }, + "video": { + "samplecharacteristics": { + "anamorphic": "FALSE", + "fielddominance": "none", + "height": "720", + "pixelaspectratio": "square", + "rate": { + "ntsc": "FALSE", + "timebase": "30" + }, + "width": "1280" + } + } + }, + "rate": { + "ntsc": "FALSE", + "timebase": "30" + }, + "timecode": { + "displayformat": "NDF", + "rate": { + "ntsc": "FALSE", + "timebase": "30" + }, + "reel": { + "name": null + } + } + } + }, + "name": "sc01_sh030_anim.mov", + "available_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 30.0, + "value": 400.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 30.0, + "value": 0.0 + } + }, + "available_image_bounds": null, + "target_url": "file://localhost/D%3a/media/sc01_sh030_anim.mov" + } + }, + "active_media_reference_key": "DEFAULT_MEDIA" + }, + { + "OTIO_SCHEMA": "Transition.1", + "metadata": { + "fcp_xml": { + "alignment": "end-black", + "cutPointTicks": "160876800000" + } + }, + "name": "Cross Dissolve", + "in_offset": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 30.0, + "value": 19.0 + }, + "out_offset": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 30.0, + "value": 0.0 + }, + "transition_type": "SMPTE_Dissolve" + }, + { + "OTIO_SCHEMA": "Gap.1", + "metadata": {}, + "name": "", + "source_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 30.0, + "value": 79.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 30.0, + "value": 0.0 + } + }, + "effects": [], + "markers": [], + "enabled": true + }, + { + "OTIO_SCHEMA": "Stack.1", + "metadata": { + "fcp_xml": { + "@frameBlend": "FALSE", + "@id": "clipitem-5", + "enabled": "TRUE", + "labels": { + "label2": "Forest" + }, + "masterclipid": "masterclip-4", + "pproTicksIn": "0", + "pproTicksOut": "2709504000000" + } + }, + "name": "sc01_sh010_anim", + "source_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 30.0, + "value": 320.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 30.0, + "value": 0.0 + } + }, + "effects": [], + "markers": [], + "enabled": true, + "children": [] + } + ], + "kind": "Video" + }, + { + "OTIO_SCHEMA": "Track.1", + "metadata": { + "fcp_xml": { + "@MZ.TrackTargeted": "0", + "@TL.SQTrackExpanded": "0", + "@TL.SQTrackExpandedHeight": "25", + "@TL.SQTrackShy": "0", + "enabled": "TRUE", + "locked": "FALSE" + } + }, + "name": "", + "source_range": null, + "effects": [], + "markers": [], + "enabled": true, + "children": [ + { + "OTIO_SCHEMA": "Gap.1", + "metadata": {}, + "name": "", + "source_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 30.0, + "value": 15.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 30.0, + "value": 0.0 + } + }, + "effects": [], + "markers": [], + "enabled": true + }, + { + "OTIO_SCHEMA": "Clip.2", + "metadata": { + "fcp_xml": { + "@frameBlend": "FALSE", + "@id": "clipitem-10", + "alphatype": "straight", + "anamorphic": "FALSE", + "enabled": "TRUE", + "labels": { + "label2": "Lavender" + }, + "logginginfo": { + "description": null, + "lognote": null, + "scene": null, + "shottake": null + }, + "masterclipid": "masterclip-5", + "pixelaspectratio": "square", + "pproTicksIn": "914457600000000", + "pproTicksOut": "922425235200000" + }, + "my_hook_function_was_here": true + }, + "name": "test_title", + "source_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 30.0, + "value": 941.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 30.0, + "value": 108000.0 + } + }, + "effects": [], + "markers": [], + "enabled": true, + "media_references": { + "DEFAULT_MEDIA": { + "OTIO_SCHEMA": "GeneratorReference.1", + "metadata": { + "fcp_xml": { + "@id": "file-4", + "media": { + "video": { + "samplecharacteristics": { + "anamorphic": "FALSE", + "fielddominance": "none", + "height": "720", + "pixelaspectratio": "square", + "rate": { + "ntsc": "FALSE", + "timebase": "30" + }, + "width": "1280" + } + } + }, + "rate": { + "ntsc": "FALSE", + "timebase": "30" + }, + "timecode": { + "displayformat": "DF", + "rate": { + "ntsc": "FALSE", + "timebase": "30" + }, + "reel": { + "name": null + } + } + } + }, + "name": "test_title", + "available_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 30.0, + "value": 0.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 30.0, + "value": 0.0 + } + }, + "available_image_bounds": null, + "generator_kind": "Slug", + "parameters": {} + } + }, + "active_media_reference_key": "DEFAULT_MEDIA" + } + ], + "kind": "Video" + }, + { + "OTIO_SCHEMA": "Track.1", + "metadata": { + "fcp_xml": { + "@MZ.TrackTargeted": "0", + "@TL.SQTrackExpanded": "0", + "@TL.SQTrackExpandedHeight": "25", + "@TL.SQTrackShy": "0", + "enabled": "TRUE", + "locked": "FALSE" + } + }, + "name": "", + "source_range": null, + "effects": [], + "markers": [], + "enabled": true, + "children": [ + { + "OTIO_SCHEMA": "Gap.1", + "metadata": {}, + "name": "", + "source_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 30.0, + "value": 956.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 30.0, + "value": 0.0 + } + }, + "effects": [], + "markers": [], + "enabled": true + }, + { + "OTIO_SCHEMA": "Clip.2", + "metadata": { + "fcp_xml": { + "@frameBlend": "FALSE", + "@id": "clipitem-11", + "alphatype": "none", + "anamorphic": "FALSE", + "enabled": "TRUE", + "labels": { + "label2": "Iris" + }, + "link": [ + { + "clipindex": "1", + "linkclipref": "clipitem-11", + "mediatype": "video", + "trackindex": "4" + }, + { + "clipindex": "1", + "groupindex": "1", + "linkclipref": "clipitem-23", + "mediatype": "audio", + "trackindex": "7" + }, + { + "clipindex": "1", + "groupindex": "1", + "linkclipref": "clipitem-25", + "mediatype": "audio", + "trackindex": "8" + } + ], + "logginginfo": { + "description": null, + "lognote": null, + "scene": null, + "shottake": null + }, + "masterclipid": "masterclip-6", + "pixelaspectratio": "square", + "pproTicksIn": "287884800000", + "pproTicksOut": "2159136000000" + }, + "my_hook_function_was_here": true + }, + "name": "sc01_master_layerA_sh030_temp.mov", + "source_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 30.0, + "value": 208.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 30.0, + "value": 133.0 + } + }, + "effects": [], + "markers": [], + "enabled": true, + "media_references": { + "DEFAULT_MEDIA": { + "OTIO_SCHEMA": "ExternalReference.1", + "metadata": { + "fcp_xml": { + "@id": "file-5", + "media": { + "audio": { + "channelcount": "2", + "samplecharacteristics": { + "depth": "16", + "samplerate": "48000" + } + }, + "video": { + "samplecharacteristics": { + "anamorphic": "FALSE", + "fielddominance": "none", + "height": "720", + "pixelaspectratio": "square", + "rate": { + "ntsc": "FALSE", + "timebase": "30" + }, + "width": "1280" + } + } + }, + "rate": { + "ntsc": "FALSE", + "timebase": "30" + }, + "timecode": { + "displayformat": "NDF", + "rate": { + "ntsc": "FALSE", + "timebase": "30" + }, + "reel": { + "name": null + } + } + } + }, + "name": "sc01_master_layerA_sh030_temp.mov", + "available_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 30.0, + "value": 400.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 30.0, + "value": 99.0 + } + }, + "available_image_bounds": null, + "target_url": "file://localhost/D%3a/media/sc01_master_layerA_sh030_temp.mov" + } + }, + "active_media_reference_key": "DEFAULT_MEDIA" + }, + { + "OTIO_SCHEMA": "Transition.1", + "metadata": { + "fcp_xml": { + "alignment": "center", + "cutPointTicks": "101606400000" + } + }, + "name": "Cross Dissolve", + "in_offset": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 30.0, + "value": 12.0 + }, + "out_offset": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 30.0, + "value": 13.0 + }, + "transition_type": "SMPTE_Dissolve" + }, + { + "OTIO_SCHEMA": "Clip.2", + "metadata": { + "fcp_xml": { + "@frameBlend": "FALSE", + "@id": "clipitem-12", + "alphatype": "none", + "enabled": "TRUE", + "labels": { + "label2": "Iris" + }, + "link": [ + { + "clipindex": "3", + "linkclipref": "clipitem-12", + "mediatype": "video", + "trackindex": "4" + }, + { + "clipindex": "2", + "groupindex": "1", + "linkclipref": "clipitem-24", + "mediatype": "audio", + "trackindex": "7" + }, + { + "clipindex": "2", + "groupindex": "1", + "linkclipref": "clipitem-26", + "mediatype": "audio", + "trackindex": "8" + } + ], + "logginginfo": { + "description": null, + "lognote": null, + "scene": null, + "shottake": null + }, + "masterclipid": "masterclip-1", + "pproTicksIn": "50803200000", + "pproTicksOut": "846720000000" + }, + "my_hook_function_was_here": true + }, + "name": "sc01_sh010_anim.mov", + "source_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 30.0, + "value": 82.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 30.0, + "value": 18.0 + } + }, + "effects": [], + "markers": [], + "enabled": true, + "media_references": { + "DEFAULT_MEDIA": { + "OTIO_SCHEMA": "ExternalReference.1", + "metadata": { + "fcp_xml": { + "@id": "file-1", + "media": { + "audio": { + "channelcount": "2", + "samplecharacteristics": { + "depth": "16", + "samplerate": "48000" + } + }, + "video": { + "samplecharacteristics": { + "anamorphic": "FALSE", + "fielddominance": "none", + "height": "720", + "pixelaspectratio": "square", + "rate": { + "ntsc": "FALSE", + "timebase": "30" + }, + "width": "1280" + } + } + }, + "rate": { + "ntsc": "FALSE", + "timebase": "30" + }, + "timecode": { + "displayformat": "NDF", + "rate": { + "ntsc": "FALSE", + "timebase": "30" + }, + "reel": { + "name": null + } + } + } + }, + "name": "sc01_sh010_anim.mov", + "available_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 30.0, + "value": 100.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 30.0, + "value": 0.0 + } + }, + "available_image_bounds": null, + "target_url": "file://localhost/D%3a/media/sc01_sh010_anim.mov" + } + }, + "active_media_reference_key": "DEFAULT_MEDIA" + } + ], + "kind": "Video" + }, + { + "OTIO_SCHEMA": "Track.1", + "metadata": { + "fcp_xml": { + "@MZ.TrackTargeted": "1", + "@PannerCurrentValue": "0.5", + "@PannerIsInverted": "true", + "@PannerName": "Balance", + "@PannerStartKeyframe": "-91445760000000000,0.5,0,0,0,0,0,0", + "@TL.SQTrackAudioKeyframeStyle": "0", + "@TL.SQTrackExpanded": "0", + "@TL.SQTrackExpandedHeight": "25", + "@TL.SQTrackShy": "0", + "@currentExplodedTrackIndex": "0", + "@premiereTrackType": "Stereo", + "@totalExplodedTrackCount": "2", + "enabled": "TRUE", + "locked": "FALSE", + "outputchannelindex": "1" + } + }, + "name": "", + "source_range": null, + "effects": [], + "markers": [], + "enabled": true, + "children": [ + { + "OTIO_SCHEMA": "Gap.1", + "metadata": {}, + "name": "", + "source_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 30.0, + "value": 13.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 30.0, + "value": 0.0 + } + }, + "effects": [], + "markers": [], + "enabled": true + }, + { + "OTIO_SCHEMA": "Clip.2", + "metadata": { + "fcp_xml": { + "@frameBlend": "FALSE", + "@id": "clipitem-13", + "@premiereChannelType": "stereo", + "enabled": "TRUE", + "labels": { + "label2": "Iris" + }, + "link": [ + { + "clipindex": "1", + "linkclipref": "clipitem-2", + "mediatype": "video", + "trackindex": "2" + }, + { + "clipindex": "1", + "groupindex": "1", + "linkclipref": "clipitem-13", + "mediatype": "audio", + "trackindex": "1" + }, + { + "clipindex": "1", + "groupindex": "1", + "linkclipref": "clipitem-15", + "mediatype": "audio", + "trackindex": "2" + } + ], + "logginginfo": { + "description": null, + "lognote": null, + "scene": null, + "shottake": null + }, + "masterclipid": "masterclip-1", + "pproTicksIn": "0", + "pproTicksOut": "846720000000", + "sourcetrack": { + "mediatype": "audio", + "trackindex": "1" + } + }, + "my_hook_function_was_here": true + }, + "name": "sc01_sh010_anim.mov", + "source_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 30.0, + "value": 100.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 30.0, + "value": 0.0 + } + }, + "effects": [], + "markers": [], + "enabled": true, + "media_references": { + "DEFAULT_MEDIA": { + "OTIO_SCHEMA": "ExternalReference.1", + "metadata": { + "fcp_xml": { + "@id": "file-1", + "media": { + "audio": { + "channelcount": "2", + "samplecharacteristics": { + "depth": "16", + "samplerate": "48000" + } + }, + "video": { + "samplecharacteristics": { + "anamorphic": "FALSE", + "fielddominance": "none", + "height": "720", + "pixelaspectratio": "square", + "rate": { + "ntsc": "FALSE", + "timebase": "30" + }, + "width": "1280" + } + } + }, + "rate": { + "ntsc": "FALSE", + "timebase": "30" + }, + "timecode": { + "displayformat": "NDF", + "rate": { + "ntsc": "FALSE", + "timebase": "30" + }, + "reel": { + "name": null + } + } + } + }, + "name": "sc01_sh010_anim.mov", + "available_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 30.0, + "value": 100.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 30.0, + "value": 0.0 + } + }, + "available_image_bounds": null, + "target_url": "file://localhost/D%3a/media/sc01_sh010_anim.mov" + } + }, + "active_media_reference_key": "DEFAULT_MEDIA" + }, + { + "OTIO_SCHEMA": "Gap.1", + "metadata": {}, + "name": "", + "source_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 30.0, + "value": 423.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 30.0, + "value": 0.0 + } + }, + "effects": [], + "markers": [], + "enabled": true + }, + { + "OTIO_SCHEMA": "Clip.2", + "metadata": { + "fcp_xml": { + "@frameBlend": "FALSE", + "@id": "clipitem-14", + "@premiereChannelType": "stereo", + "enabled": "TRUE", + "labels": { + "label2": "Iris" + }, + "link": [ + { + "clipindex": "1", + "linkclipref": "clipitem-1", + "mediatype": "video", + "trackindex": "1" + }, + { + "clipindex": "2", + "groupindex": "1", + "linkclipref": "clipitem-14", + "mediatype": "audio", + "trackindex": "1" + }, + { + "clipindex": "2", + "groupindex": "1", + "linkclipref": "clipitem-16", + "mediatype": "audio", + "trackindex": "2" + } + ], + "logginginfo": { + "description": null, + "lognote": null, + "scene": null, + "shottake": null + }, + "masterclipid": "masterclip-1", + "pproTicksIn": "0", + "pproTicksOut": "846720000000", + "sourcetrack": { + "mediatype": "audio", + "trackindex": "1" + } + }, + "my_hook_function_was_here": true + }, + "name": "sc01_sh010_anim.mov", + "source_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 30.0, + "value": 100.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 30.0, + "value": 0.0 + } + }, + "effects": [], + "markers": [], + "enabled": true, + "media_references": { + "DEFAULT_MEDIA": { + "OTIO_SCHEMA": "ExternalReference.1", + "metadata": { + "fcp_xml": { + "@id": "file-1", + "media": { + "audio": { + "channelcount": "2", + "samplecharacteristics": { + "depth": "16", + "samplerate": "48000" + } + }, + "video": { + "samplecharacteristics": { + "anamorphic": "FALSE", + "fielddominance": "none", + "height": "720", + "pixelaspectratio": "square", + "rate": { + "ntsc": "FALSE", + "timebase": "30" + }, + "width": "1280" + } + } + }, + "rate": { + "ntsc": "FALSE", + "timebase": "30" + }, + "timecode": { + "displayformat": "NDF", + "rate": { + "ntsc": "FALSE", + "timebase": "30" + }, + "reel": { + "name": null + } + } + } + }, + "name": "sc01_sh010_anim.mov", + "available_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 30.0, + "value": 100.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 30.0, + "value": 0.0 + } + }, + "available_image_bounds": null, + "target_url": "file://localhost/D%3a/media/sc01_sh010_anim.mov" + } + }, + "active_media_reference_key": "DEFAULT_MEDIA" + } + ], + "kind": "Audio" + }, + { + "OTIO_SCHEMA": "Track.1", + "metadata": { + "fcp_xml": { + "@MZ.TrackTargeted": "1", + "@PannerCurrentValue": "0.5", + "@PannerIsInverted": "true", + "@PannerName": "Balance", + "@PannerStartKeyframe": "-91445760000000000,0.5,0,0,0,0,0,0", + "@TL.SQTrackAudioKeyframeStyle": "0", + "@TL.SQTrackExpanded": "0", + "@TL.SQTrackExpandedHeight": "25", + "@TL.SQTrackShy": "0", + "@currentExplodedTrackIndex": "0", + "@premiereTrackType": "Stereo", + "@totalExplodedTrackCount": "2", + "enabled": "TRUE", + "locked": "FALSE", + "outputchannelindex": "1" + } + }, + "name": "", + "source_range": null, + "effects": [], + "markers": [], + "enabled": true, + "children": [ + { + "OTIO_SCHEMA": "Gap.1", + "metadata": {}, + "name": "", + "source_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 30.0, + "value": 335.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 30.0, + "value": 0.0 + } + }, + "effects": [], + "markers": [], + "enabled": true + }, + { + "OTIO_SCHEMA": "Clip.2", + "metadata": { + "fcp_xml": { + "@frameBlend": "FALSE", + "@id": "clipitem-17", + "@premiereChannelType": "stereo", + "enabled": "TRUE", + "labels": { + "label2": "Caribbean" + }, + "link": [ + { + "clipindex": "1", + "groupindex": "1", + "linkclipref": "clipitem-17", + "mediatype": "audio", + "trackindex": "3" + }, + { + "clipindex": "1", + "groupindex": "1", + "linkclipref": "clipitem-19", + "mediatype": "audio", + "trackindex": "4" + } + ], + "logginginfo": { + "description": null, + "lognote": null, + "scene": null, + "shottake": null + }, + "masterclipid": "masterclip-7", + "pproTicksIn": "0", + "pproTicksOut": "1439424000000", + "sourcetrack": { + "mediatype": "audio", + "trackindex": "1" + } + }, + "my_hook_function_was_here": true + }, + "name": "sc01_placeholder.wav", + "source_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 30.0, + "value": 170.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 30.0, + "value": 8497.0 + } + }, + "effects": [], + "markers": [], + "enabled": true, + "media_references": { + "DEFAULT_MEDIA": { + "OTIO_SCHEMA": "ExternalReference.1", + "metadata": { + "fcp_xml": { + "@id": "file-6", + "media": { + "audio": { + "channelcount": "2", + "samplecharacteristics": { + "depth": "16", + "samplerate": "48000" + } + } + }, + "rate": { + "ntsc": "FALSE", + "timebase": "30" + }, + "timecode": { + "displayformat": "DF", + "rate": { + "ntsc": "FALSE", + "timebase": "30" + }, + "reel": { + "name": null + } + } + } + }, + "name": "sc01_placeholder.wav", + "available_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 30.0, + "value": 170.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 30.0, + "value": 8497.0 + } + }, + "available_image_bounds": null, + "target_url": "file://localhost/D%3a/media/sc01_placeholder.wav" + } + }, + "active_media_reference_key": "DEFAULT_MEDIA" + }, + { + "OTIO_SCHEMA": "Gap.1", + "metadata": {}, + "name": "", + "source_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 30.0, + "value": 131.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 30.0, + "value": 0.0 + } + }, + "effects": [], + "markers": [], + "enabled": true + }, + { + "OTIO_SCHEMA": "Stack.1", + "metadata": { + "fcp_xml": { + "@frameBlend": "FALSE", + "@id": "clipitem-18", + "@premiereChannelType": "stereo", + "enabled": "TRUE", + "labels": { + "label2": "Forest" + }, + "link": [ + { + "clipindex": "2", + "groupindex": "1", + "linkclipref": "clipitem-18", + "mediatype": "audio", + "trackindex": "3" + }, + { + "clipindex": "2", + "groupindex": "1", + "linkclipref": "clipitem-20", + "mediatype": "audio", + "trackindex": "4" + } + ], + "masterclipid": "masterclip-4", + "pproTicksIn": "0", + "pproTicksOut": "2489356800000" + } + }, + "name": "sc01_sh010_anim", + "source_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 30.0, + "value": 294.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 30.0, + "value": 0.0 + } + }, + "effects": [], + "markers": [], + "enabled": true, + "children": [] + } + ], + "kind": "Audio" + }, + { + "OTIO_SCHEMA": "Track.1", + "metadata": { + "fcp_xml": { + "@MZ.TrackTargeted": "1", + "@PannerCurrentValue": "0.5", + "@PannerIsInverted": "true", + "@PannerName": "Balance", + "@PannerStartKeyframe": "-91445760000000000,0.5,0,0,0,0,0,0", + "@TL.SQTrackAudioKeyframeStyle": "0", + "@TL.SQTrackExpanded": "0", + "@TL.SQTrackExpandedHeight": "25", + "@TL.SQTrackShy": "0", + "@currentExplodedTrackIndex": "0", + "@premiereTrackType": "Stereo", + "@totalExplodedTrackCount": "2", + "enabled": "TRUE", + "locked": "FALSE", + "outputchannelindex": "1" + } + }, + "name": "", + "source_range": null, + "effects": [], + "markers": [], + "enabled": true, + "children": [ + { + "OTIO_SCHEMA": "Gap.1", + "metadata": {}, + "name": "", + "source_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 30.0, + "value": 153.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 30.0, + "value": 0.0 + } + }, + "effects": [], + "markers": [], + "enabled": true + }, + { + "OTIO_SCHEMA": "Clip.2", + "metadata": { + "fcp_xml": { + "@frameBlend": "FALSE", + "@id": "clipitem-21", + "@premiereChannelType": "stereo", + "enabled": "TRUE", + "labels": { + "label2": "Caribbean" + }, + "link": [ + { + "clipindex": "1", + "groupindex": "1", + "linkclipref": "clipitem-21", + "mediatype": "audio", + "trackindex": "5" + }, + { + "clipindex": "1", + "groupindex": "1", + "linkclipref": "clipitem-22", + "mediatype": "audio", + "trackindex": "6" + } + ], + "logginginfo": { + "description": null, + "lognote": null, + "scene": null, + "shottake": null + }, + "masterclipid": "masterclip-8", + "pproTicksIn": "0", + "pproTicksOut": "1676505600000", + "sourcetrack": { + "mediatype": "audio", + "trackindex": "1" + } + }, + "my_hook_function_was_here": true + }, + "name": "track_08.wav", + "source_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 30.0, + "value": 198.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 30.0, + "value": 6896.0 + } + }, + "effects": [], + "markers": [], + "enabled": true, + "media_references": { + "DEFAULT_MEDIA": { + "OTIO_SCHEMA": "ExternalReference.1", + "metadata": { + "fcp_xml": { + "@id": "file-7", + "media": { + "audio": { + "channelcount": "2", + "samplecharacteristics": { + "depth": "16", + "samplerate": "48000" + } + } + }, + "rate": { + "ntsc": "FALSE", + "timebase": "30" + }, + "timecode": { + "displayformat": "DF", + "rate": { + "ntsc": "FALSE", + "timebase": "30" + }, + "reel": { + "name": null + } + } + } + }, + "name": "track_08.wav", + "available_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 30.0, + "value": 198.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 30.0, + "value": 6896.0 + } + }, + "available_image_bounds": null, + "target_url": "file://localhost/D%3a/media/track_08.wav" + } + }, + "active_media_reference_key": "DEFAULT_MEDIA" + } + ], + "kind": "Audio" + }, + { + "OTIO_SCHEMA": "Track.1", + "metadata": { + "fcp_xml": { + "@MZ.TrackTargeted": "0", + "@PannerCurrentValue": "0.5", + "@PannerIsInverted": "true", + "@PannerName": "Balance", + "@PannerStartKeyframe": "-91445760000000000,0.5,0,0,0,0,0,0", + "@TL.SQTrackAudioKeyframeStyle": "0", + "@TL.SQTrackExpanded": "0", + "@TL.SQTrackExpandedHeight": "25", + "@TL.SQTrackShy": "0", + "@currentExplodedTrackIndex": "0", + "@premiereTrackType": "Stereo", + "@totalExplodedTrackCount": "2", + "enabled": "TRUE", + "locked": "FALSE", + "outputchannelindex": "1" + } + }, + "name": "", + "source_range": null, + "effects": [], + "markers": [], + "enabled": true, + "children": [ + { + "OTIO_SCHEMA": "Gap.1", + "metadata": {}, + "name": "", + "source_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 30.0, + "value": 956.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 30.0, + "value": 0.0 + } + }, + "effects": [], + "markers": [], + "enabled": true + }, + { + "OTIO_SCHEMA": "Clip.2", + "metadata": { + "fcp_xml": { + "@frameBlend": "FALSE", + "@id": "clipitem-23", + "@premiereChannelType": "stereo", + "enabled": "TRUE", + "labels": { + "label2": "Iris" + }, + "link": [ + { + "clipindex": "1", + "linkclipref": "clipitem-11", + "mediatype": "video", + "trackindex": "4" + }, + { + "clipindex": "1", + "groupindex": "1", + "linkclipref": "clipitem-23", + "mediatype": "audio", + "trackindex": "7" + }, + { + "clipindex": "1", + "groupindex": "1", + "linkclipref": "clipitem-25", + "mediatype": "audio", + "trackindex": "8" + } + ], + "logginginfo": { + "description": null, + "lognote": null, + "scene": null, + "shottake": null + }, + "masterclipid": "masterclip-6", + "pproTicksIn": "287884800000", + "pproTicksOut": "2049062400000", + "sourcetrack": { + "mediatype": "audio", + "trackindex": "1" + } + }, + "my_hook_function_was_here": true + }, + "name": "sc01_master_layerA_sh030_temp.mov", + "source_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 30.0, + "value": 221.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 30.0, + "value": 133.0 + } + }, + "effects": [], + "markers": [], + "enabled": true, + "media_references": { + "DEFAULT_MEDIA": { + "OTIO_SCHEMA": "ExternalReference.1", + "metadata": { + "fcp_xml": { + "@id": "file-5", + "media": { + "audio": { + "channelcount": "2", + "samplecharacteristics": { + "depth": "16", + "samplerate": "48000" + } + }, + "video": { + "samplecharacteristics": { + "anamorphic": "FALSE", + "fielddominance": "none", + "height": "720", + "pixelaspectratio": "square", + "rate": { + "ntsc": "FALSE", + "timebase": "30" + }, + "width": "1280" + } + } + }, + "rate": { + "ntsc": "FALSE", + "timebase": "30" + }, + "timecode": { + "displayformat": "NDF", + "rate": { + "ntsc": "FALSE", + "timebase": "30" + }, + "reel": { + "name": null + } + } + } + }, + "name": "sc01_master_layerA_sh030_temp.mov", + "available_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 30.0, + "value": 400.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 30.0, + "value": 99.0 + } + }, + "available_image_bounds": null, + "target_url": "file://localhost/D%3a/media/sc01_master_layerA_sh030_temp.mov" + } + }, + "active_media_reference_key": "DEFAULT_MEDIA" + }, + { + "OTIO_SCHEMA": "Clip.2", + "metadata": { + "fcp_xml": { + "@frameBlend": "FALSE", + "@id": "clipitem-24", + "@premiereChannelType": "stereo", + "enabled": "TRUE", + "labels": { + "label2": "Iris" + }, + "link": [ + { + "clipindex": "3", + "linkclipref": "clipitem-12", + "mediatype": "video", + "trackindex": "4" + }, + { + "clipindex": "2", + "groupindex": "1", + "linkclipref": "clipitem-24", + "mediatype": "audio", + "trackindex": "7" + }, + { + "clipindex": "2", + "groupindex": "1", + "linkclipref": "clipitem-26", + "mediatype": "audio", + "trackindex": "8" + } + ], + "logginginfo": { + "description": null, + "lognote": null, + "scene": null, + "shottake": null + }, + "masterclipid": "masterclip-1", + "pproTicksIn": "152409600000", + "pproTicksOut": "846720000000", + "sourcetrack": { + "mediatype": "audio", + "trackindex": "1" + } + }, + "my_hook_function_was_here": true + }, + "name": "sc01_sh010_anim.mov", + "source_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 30.0, + "value": 94.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 30.0, + "value": 6.0 + } + }, + "effects": [], + "markers": [], + "enabled": true, + "media_references": { + "DEFAULT_MEDIA": { + "OTIO_SCHEMA": "ExternalReference.1", + "metadata": { + "fcp_xml": { + "@id": "file-1", + "media": { + "audio": { + "channelcount": "2", + "samplecharacteristics": { + "depth": "16", + "samplerate": "48000" + } + }, + "video": { + "samplecharacteristics": { + "anamorphic": "FALSE", + "fielddominance": "none", + "height": "720", + "pixelaspectratio": "square", + "rate": { + "ntsc": "FALSE", + "timebase": "30" + }, + "width": "1280" + } + } + }, + "rate": { + "ntsc": "FALSE", + "timebase": "30" + }, + "timecode": { + "displayformat": "NDF", + "rate": { + "ntsc": "FALSE", + "timebase": "30" + }, + "reel": { + "name": null + } + } + } + }, + "name": "sc01_sh010_anim.mov", + "available_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 30.0, + "value": 100.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 30.0, + "value": 0.0 + } + }, + "available_image_bounds": null, + "target_url": "file://localhost/D%3a/media/sc01_sh010_anim.mov" + } + }, + "active_media_reference_key": "DEFAULT_MEDIA" + } + ], + "kind": "Audio" + } + ] + } +} \ No newline at end of file