81 lines
2.3 KiB
Python
81 lines
2.3 KiB
Python
import bpy
|
|
import ptsl
|
|
from ptsl import PTSL_pb2 as pt
|
|
|
|
|
|
def mixdown_speaker(speaker: bpy.types.Object, scene: bpy.types.Scene) -> str:
|
|
return ""
|
|
|
|
|
|
def create_clip(audio_file_path: str, client: ptsl.Client) -> str:
|
|
return ""
|
|
|
|
|
|
def spot_clip(speaker: bpy.types.Object, clip_id: str, track_id: str,
|
|
client: ptsl.Client):
|
|
pass
|
|
|
|
def create_track(speaker: bpy.types.Object, client: ptsl.Client):
|
|
assert speaker.data
|
|
|
|
result = client.run_command(pt.CId_CreateNewTracks,
|
|
{'numuer_of_tracks': 1,
|
|
'track_name': speaker.data.name,
|
|
'track_format': "TFormat_Mono",
|
|
'track_type': "TType_Audio",
|
|
'track_timebase': "TTimebase_Samples",
|
|
'pagination_request': {
|
|
'limit': 1,
|
|
'offset': 0,
|
|
},
|
|
'insertion_point_position': "TIPoint_Unknown",
|
|
'insertion_point_track_name': ""
|
|
})
|
|
|
|
print(result)
|
|
assert result
|
|
assert 'created_track_ids' in result.keys()
|
|
assert len(result['created_track_ids']) == 1
|
|
|
|
return result['created_track_ids'][0]
|
|
|
|
|
|
def insert_audio(speaker: bpy.types.Object, scene: bpy.types.Scene,
|
|
track_id: str, client: ptsl.Client):
|
|
|
|
rendered_audio_file = mixdown_speaker(speaker, scene)
|
|
clip_id = create_clip(rendered_audio_file, client)
|
|
spot_clip(speaker, clip_id, track_id, client)
|
|
|
|
|
|
|
|
def apply_pan_automation(speaker: bpy.types.Object, scene: bpy.types.Scene,
|
|
track_id: str, client: ptsl.Client):
|
|
|
|
pass
|
|
|
|
|
|
def send_to_pro_tools(speakers: list[bpy.types.Object],
|
|
room_size: float) -> bool:
|
|
try:
|
|
print("About to create client.")
|
|
client = ptsl.Client(company_name="Squad 51",
|
|
application_name="Send to Pro Tools Blender Extension")
|
|
|
|
scene = bpy.context.scene
|
|
|
|
for speaker in speakers:
|
|
new_track_id = create_track(speaker, client)
|
|
insert_audio(speaker, scene, new_track_id, client)
|
|
apply_pan_automation(speaker, scene, new_track_id, client)
|
|
|
|
client.close()
|
|
return True
|
|
|
|
except ptsl.CommandError as e:
|
|
print("Command Error: {}".format(e))
|
|
return False
|
|
|
|
except AssertionError as e:
|
|
raise e
|