<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Ptsl on</title><link>https://squad51.us/tags/ptsl/</link><description>Recent content in Ptsl on</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><lastBuildDate>Thu, 06 Nov 2025 19:49:39 -0800</lastBuildDate><atom:link href="https://squad51.us/tags/ptsl/index.xml" rel="self" type="application/rss+xml"/><item><title>Pro Tools Markers from Resolve CSV Markers</title><link>https://squad51.us/notebook/markers_from_csv/</link><pubDate>Thu, 06 Nov 2025 19:49:39 -0800</pubDate><guid>https://squad51.us/notebook/markers_from_csv/</guid><description>&lt;p&gt;Just a little sketch of this; it&amp;rsquo;s very easy to whip something like this up
in a few minutes with &lt;a href="https://github.com/iluvcapra/py-ptsl"&gt;py-ptsl&lt;/a&gt;.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#fff;background-color:#1f1f24;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#fc5fa3"&gt;import&lt;/span&gt; csv
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#fc5fa3"&gt;import&lt;/span&gt; sys, re
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#fc5fa3"&gt;import&lt;/span&gt; ptsl
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#fc5fa3"&gt;from&lt;/span&gt; ptsl &lt;span style="color:#fc5fa3"&gt;import&lt;/span&gt; PTSL_pb2 &lt;span style="color:#fc5fa3"&gt;as&lt;/span&gt; pt
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#fc5fa3"&gt;def&lt;/span&gt; &lt;span style="color:#41a1c0"&gt;create_marker&lt;/span&gt;(client: ptsl.Client, time: &lt;span style="color:#d0a8ff"&gt;str&lt;/span&gt;, notes: &lt;span style="color:#d0a8ff"&gt;str&lt;/span&gt;):
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#d0a8ff"&gt;print&lt;/span&gt;(&lt;span style="color:#fc6a5d"&gt;&amp;#34;Time: &lt;/span&gt;&lt;span style="color:#fc6a5d"&gt;{}&lt;/span&gt;&lt;span style="color:#fc6a5d"&gt;\n\t&lt;/span&gt;&lt;span style="color:#fc6a5d"&gt;{}&lt;/span&gt;&lt;span style="color:#fc6a5d"&gt;&amp;#34;&lt;/span&gt;.format(time, notes))
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; result = client.run_command(pt.CId_CreateMemoryLocation, {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#fc6a5d"&gt;&amp;#39;name&amp;#39;&lt;/span&gt;: notes[&lt;span style="color:#d0bf69"&gt;0&lt;/span&gt;:&lt;span style="color:#d0bf69"&gt;32&lt;/span&gt;],
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#fc6a5d"&gt;&amp;#39;start_time&amp;#39;&lt;/span&gt;: time,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#fc6a5d"&gt;&amp;#39;end_time&amp;#39;&lt;/span&gt;: time,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#fc6a5d"&gt;&amp;#39;time_properties&amp;#39;&lt;/span&gt;: &lt;span style="color:#fc6a5d"&gt;&amp;#39;TProperties_Marker&amp;#39;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#fc6a5d"&gt;&amp;#39;reference&amp;#39;&lt;/span&gt;: &lt;span style="color:#fc6a5d"&gt;&amp;#39;MLReference_Absolute&amp;#39;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#fc6a5d"&gt;&amp;#39;comments&amp;#39;&lt;/span&gt;: notes,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#fc6a5d"&gt;&amp;#39;color_index&amp;#39;&lt;/span&gt;: &lt;span style="color:#d0bf69"&gt;7&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#fc6a5d"&gt;&amp;#39;location&amp;#39;&lt;/span&gt;: &lt;span style="color:#fc6a5d"&gt;&amp;#39;MarkerLocation_NamedRuler&amp;#39;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#fc6a5d"&gt;&amp;#39;track_name&amp;#39;&lt;/span&gt;: &lt;span style="color:#fc6a5d"&gt;&amp;#39;Robert Notes&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; })
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#d0a8ff"&gt;print&lt;/span&gt;(result)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#fc5fa3"&gt;def&lt;/span&gt; &lt;span style="color:#41a1c0"&gt;main&lt;/span&gt;():
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; client = ptsl.Client(company_name=&lt;span style="color:#fc6a5d"&gt;&amp;#34;Squad 51&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; application_name=&lt;span style="color:#fc6a5d"&gt;&amp;#39;csv_import&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#fc5fa3"&gt;for&lt;/span&gt; p in sys.argv[&lt;span style="color:#d0bf69"&gt;1&lt;/span&gt;:]:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#fc5fa3"&gt;with&lt;/span&gt; &lt;span style="color:#d0a8ff"&gt;open&lt;/span&gt;(p, &lt;span style="color:#fc6a5d"&gt;&amp;#34;r&amp;#34;&lt;/span&gt;) &lt;span style="color:#fc5fa3"&gt;as&lt;/span&gt; f:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; table = csv.DictReader(f)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#fc5fa3"&gt;for&lt;/span&gt; row in table:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; time = row[&lt;span style="color:#fc6a5d"&gt;&amp;#39;Record In&amp;#39;&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; notes = row[&lt;span style="color:#fc6a5d"&gt;&amp;#39;Notes&amp;#39;&lt;/span&gt;].strip()
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#fc5fa3"&gt;if&lt;/span&gt; md := re.&lt;span style="color:#fc5fa3"&gt;match&lt;/span&gt;(&lt;span style="color:#fc6a5d"&gt;r&lt;/span&gt;&lt;span style="color:#fc6a5d"&gt;&amp;#39;^Marker \d+ - (.*)$&amp;#39;&lt;/span&gt;, notes):
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; notes = md.group(&lt;span style="color:#d0bf69"&gt;1&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; create_marker(client, time, notes)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; client.close()
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#fc5fa3"&gt;if&lt;/span&gt; &lt;span style="color:#41a1c0"&gt;__name__&lt;/span&gt; == &lt;span style="color:#fc6a5d"&gt;&amp;#34;__main__&amp;#34;&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; main()
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item></channel></rss>