<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Python on</title><link>https://squad51.us/tags/python/</link><description>Recent content in Python 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/python/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><item><title>UCSINFER for Renaming Sounds</title><link>https://squad51.us/notebook/ucsinfer_to_rename_sounds/</link><pubDate>Sat, 30 Aug 2025 21:23:54 -0700</pubDate><guid>https://squad51.us/notebook/ucsinfer_to_rename_sounds/</guid><description>&lt;p&gt;After goofing around a bit with the &lt;a href="https://git.squad51.us/jamie/ucsinfer"&gt;ucsinfer&lt;/a&gt; &lt;code&gt;gather&lt;/code&gt; and
&lt;code&gt;evaluate&lt;/code&gt; I&amp;rsquo;ve built out the &lt;code&gt;recommend&lt;/code&gt; feature a bit.&lt;/p&gt;
&lt;!-- more --&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Note 9/6/2025:&lt;/strong&gt; This article was written around the time ucsinfer was at
commit &lt;a href="https://git.squad51.us/jamie/ucsinfer/src/commit/1a42d7d9f1c33fbe6668c67349a16c5a68495d5d"&gt;1a42d7d9&lt;/a&gt;. There have been signififcant changes to the codebase since
that time, including enhancements to the &lt;code&gt;recommend&lt;/code&gt; feature, but it should
still mostly work the way depicted here. Check the online documentation for
all the latest updates.&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Category inference experiments with UCSINFER</title><link>https://squad51.us/notebook/category_inference_experiments_ucsinfer/</link><pubDate>Mon, 25 Aug 2025 14:24:06 -0700</pubDate><guid>https://squad51.us/notebook/category_inference_experiments_ucsinfer/</guid><description>&lt;p&gt;I&amp;rsquo;ve had some success auto-categorizing sounds into their corresponding
&lt;a href="https://universalcategorysystem.com"&gt;UCS categories&lt;/a&gt; by using an LLM and the technique of sentence embedding.
I&amp;rsquo;m writing up my process here and hope people find it useful and can maybe
take this forward to do other things.&lt;/p&gt;
&lt;p&gt;This is also my first post to the &amp;ldquo;Notebook&amp;rdquo; and am testing the posting system.&lt;/p&gt;
&lt;!-- more --&gt;
&lt;h3 id="how-i-learned-what-chatgpt-cant-do"&gt;How I Learned What ChatGPT Can&amp;rsquo;t Do&lt;/h3&gt;
&lt;p&gt;One of my original experiments with ChatGPT was to try to use it to
automatically select a UCS category for a given text description. This &lt;em&gt;seemed&lt;/em&gt;
like exactly the kind of problem ChatGPT should be able to solve well: it knows
that a Ford is a car, that explosions go bang and may invovlve gasoline or
black powder, inferring a category given the text description should be easy.&lt;/p&gt;</description></item></channel></rss>