<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://en.xen.wiki/index.php?action=history&amp;feed=atom&amp;title=Superparticular_samchillian</id>
	<title>Superparticular samchillian - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://en.xen.wiki/index.php?action=history&amp;feed=atom&amp;title=Superparticular_samchillian"/>
	<link rel="alternate" type="text/html" href="https://en.xen.wiki/index.php?title=Superparticular_samchillian&amp;action=history"/>
	<updated>2026-06-28T19:13:33Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>https://en.xen.wiki/index.php?title=Superparticular_samchillian&amp;diff=168886&amp;oldid=prev</id>
		<title>BudjarnLambeth at 10:37, 4 December 2024</title>
		<link rel="alternate" type="text/html" href="https://en.xen.wiki/index.php?title=Superparticular_samchillian&amp;diff=168886&amp;oldid=prev"/>
		<updated>2024-12-04T10:37:29Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 10:37, 4 December 2024&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l279&quot;&gt;Line 279:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 279:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== See also ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== See also ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Jacob Barton]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Jacob Barton]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* [[Software]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:chuck]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:chuck]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:code]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:code]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:todo:link]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:todo:link]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>BudjarnLambeth</name></author>
	</entry>
	<entry>
		<id>https://en.xen.wiki/index.php?title=Superparticular_samchillian&amp;diff=168885&amp;oldid=prev</id>
		<title>BudjarnLambeth: Add outgoing links to dead end page</title>
		<link rel="alternate" type="text/html" href="https://en.xen.wiki/index.php?title=Superparticular_samchillian&amp;diff=168885&amp;oldid=prev"/>
		<updated>2024-12-04T10:36:56Z</updated>

		<summary type="html">&lt;p&gt;Add outgoing links to dead end page&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 10:36, 4 December 2024&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l277&quot;&gt;Line 277:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 277:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;== See also ==&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* [[Jacob Barton]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:chuck]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:chuck]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:code]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:code]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:todo:link]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:todo:link]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>BudjarnLambeth</name></author>
	</entry>
	<entry>
		<id>https://en.xen.wiki/index.php?title=Superparticular_samchillian&amp;diff=161375&amp;oldid=prev</id>
		<title>BudjarnLambeth: Todo link</title>
		<link rel="alternate" type="text/html" href="https://en.xen.wiki/index.php?title=Superparticular_samchillian&amp;diff=161375&amp;oldid=prev"/>
		<updated>2024-10-20T08:00:41Z</updated>

		<summary type="html">&lt;p&gt;Todo link&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 08:00, 20 October 2024&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{todo|link}}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;//ChucK code for Superparticular Samchillian&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;//ChucK code for Superparticular Samchillian&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>BudjarnLambeth</name></author>
	</entry>
	<entry>
		<id>https://en.xen.wiki/index.php?title=Superparticular_samchillian&amp;diff=31073&amp;oldid=prev</id>
		<title>PreImportHandFixes&gt;Battaglia01: Mike - replaced broken parse with history</title>
		<link rel="alternate" type="text/html" href="https://en.xen.wiki/index.php?title=Superparticular_samchillian&amp;diff=31073&amp;oldid=prev"/>
		<updated>2018-08-19T19:51:53Z</updated>

		<summary type="html">&lt;p&gt;Mike - replaced broken parse with history&lt;/p&gt;
&lt;a href=&quot;https://en.xen.wiki/index.php?title=Superparticular_samchillian&amp;amp;diff=31073&amp;amp;oldid=3593&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>PreImportHandFixes&gt;Battaglia01</name></author>
	</entry>
	<entry>
		<id>https://en.xen.wiki/index.php?title=Superparticular_samchillian&amp;diff=3593&amp;oldid=prev</id>
		<title>Wikispaces&gt;FREEZE at 00:00, 17 July 2018</title>
		<link rel="alternate" type="text/html" href="https://en.xen.wiki/index.php?title=Superparticular_samchillian&amp;diff=3593&amp;oldid=prev"/>
		<updated>2018-07-17T00:00:00Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 00:00, 17 July 2018&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;h2&amp;gt;IMPORTED REVISION FROM WIKISPACES&amp;lt;/h2&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;pre&amp;gt; &amp;lt;span style=&quot;&quot;&amp;gt;//ChucK code for Superparticular Samchillian&amp;lt;/span&amp;gt;&amp;lt;span style=&quot;&quot;&amp;gt;//Samchillian idea by Leon Gruenbaum&amp;lt;/&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;This is an imported revision from Wikispaces. The revision metadata is included below for reference:&amp;lt;br&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;: This revision was by author [[User:xenjacob|xenjacob]] and made on &amp;lt;tt&amp;gt;2012-06-07 19:38:40 UTC&amp;lt;/tt&amp;gt;.&amp;lt;br&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;: The original revision id was &amp;lt;tt&amp;gt;343680102&amp;lt;/tt&amp;gt;.&amp;lt;br&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;: The revision comment was: &amp;lt;tt&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;The revision contents are below, presented both in the original Wikispaces Wikitext format, and in HTML exactly as Wikispaces rendered it.&amp;lt;br&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;h4&amp;gt;Original Wikitext content:&amp;lt;/h4&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;div style=&quot;width:100%; max-height:400pt; overflow:auto; background-color:#f8f9fa; border: 1px solid #eaecf0; padding:0em&quot;&amp;gt;&amp;lt;pre style=&quot;margin:0px;border:none;background:none;word-wrap:break-word;white-space: pre-wrap ! important&quot; class=&quot;old-revision-html&quot;&amp;gt;[[code format=&quot;java&quot;]]&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;//ChucK code for Superparticular Samchillian&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;//Samchillian idea by Leon Gruenbaum&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;//superparticular-ratio implementation by Jacob Barton&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;//paste these lines into a new document in miniAudicle, or save text as a .ck to run in command-line&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;//change these to match your input/output device&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;0 =&amp;amp;gt; int inDeviceNum;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;1 =&amp;amp;gt; int outDeviceNum;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;class MicroRobinMidiIO&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    MidiIn min;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    MidiOut mouse;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    MidiMsg inmsg, outmsg;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    0 =&amp;amp;gt; int ctr;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    &lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    //int rr[128][3]; don&#039;t think we need this now.&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    // index = note number?&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    // column 0 = channel sent to&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    // column 1 = note number sent&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    int chans[14]; // list of channels used&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    float holds[16];     // pitches of on notes, zero if off.&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    [0,1,2,3,4,5,6,7,8,10,11,12,13,14] @=&amp;amp;gt; chans; //exclude channel 10 (drums) &amp;amp;amp; 16 (send channel)&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    &lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    //microtuning stuff&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    &lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    // PitchBend&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    // input: pitch (midi note number float) &amp;amp;amp; velocity of desired note&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    // action: sends appropriate pitchbend message&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    //         (assuming pitchbend range = +/- 2 semitones)&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    // output: note number required for correct frequency to be realized&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    // sends pitchbend, assuming +/- wholestep pitchbend range&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Wikispaces&gt;FREEZE</name></author>
	</entry>
	<entry>
		<id>https://en.xen.wiki/index.php?title=Superparticular_samchillian&amp;diff=26870&amp;oldid=prev</id>
		<title>Wikispaces&gt;xenjacob: **Imported revision 343680102 - Original comment: **</title>
		<link rel="alternate" type="text/html" href="https://en.xen.wiki/index.php?title=Superparticular_samchillian&amp;diff=26870&amp;oldid=prev"/>
		<updated>2012-06-07T19:38:40Z</updated>

		<summary type="html">&lt;p&gt;**Imported revision 343680102 - Original comment: **&lt;/p&gt;
&lt;a href=&quot;https://en.xen.wiki/index.php?title=Superparticular_samchillian&amp;amp;diff=26870&amp;amp;oldid=26871&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>Wikispaces&gt;xenjacob</name></author>
	</entry>
	<entry>
		<id>https://en.xen.wiki/index.php?title=Superparticular_samchillian&amp;diff=26871&amp;oldid=prev</id>
		<title>Wikispaces&gt;xenjacob: **Imported revision 343572870 - Original comment: **</title>
		<link rel="alternate" type="text/html" href="https://en.xen.wiki/index.php?title=Superparticular_samchillian&amp;diff=26871&amp;oldid=prev"/>
		<updated>2012-06-07T12:40:57Z</updated>

		<summary type="html">&lt;p&gt;**Imported revision 343572870 - Original comment: **&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;h2&amp;gt;IMPORTED REVISION FROM WIKISPACES&amp;lt;/h2&amp;gt;&lt;br /&gt;
This is an imported revision from Wikispaces. The revision metadata is included below for reference:&amp;lt;br&amp;gt;&lt;br /&gt;
: This revision was by author [[User:xenjacob|xenjacob]] and made on &amp;lt;tt&amp;gt;2012-06-07 12:40:57 UTC&amp;lt;/tt&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
: The original revision id was &amp;lt;tt&amp;gt;343572870&amp;lt;/tt&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
: The revision comment was: &amp;lt;tt&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The revision contents are below, presented both in the original Wikispaces Wikitext format, and in HTML exactly as Wikispaces rendered it.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;h4&amp;gt;Original Wikitext content:&amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%; max-height:400pt; overflow:auto; background-color:#f8f9fa; border: 1px solid #eaecf0; padding:0em&amp;quot;&amp;gt;&amp;lt;pre style=&amp;quot;margin:0px;border:none;background:none;word-wrap:break-word;white-space: pre-wrap ! important&amp;quot; class=&amp;quot;old-revision-html&amp;quot;&amp;gt;&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;// ChucK code for Superparticular Samchillian&amp;amp;lt;/span&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;// Samchillian idea by Leon Gruenbaum&amp;amp;lt;/span&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;// superparticular-ratio implementation by Jacob Barton&amp;amp;lt;/span&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
// paste these into a new document in miniAudicle, or save text as a .ck to run in command-line&lt;br /&gt;
&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;// change these to match your input/output device&amp;amp;lt;/span&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;0 =&amp;amp;gt; int inDeviceNum;&amp;amp;lt;/span&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;1 =&amp;amp;gt; int outDeviceNum;&amp;amp;lt;/span&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;class&amp;amp;lt;/span&amp;amp;gt; MicroRobinMidiIO&lt;br /&gt;
{&lt;br /&gt;
MidiIn min;&lt;br /&gt;
MidiOut mouse;&lt;br /&gt;
MidiMsg inmsg, outmsg;&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;0&amp;amp;lt;/span&amp;amp;gt; =&amp;amp;gt; &amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;int&amp;amp;lt;/span&amp;amp;gt; ctr;&lt;br /&gt;
//int rr[128][3]; don&amp;#039;t think we need this now.&lt;br /&gt;
// index = note number?&lt;br /&gt;
// column 0 = channel sent to&lt;br /&gt;
// column 1 = note number sent&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;int&amp;amp;lt;/span&amp;amp;gt;&amp;amp;lt;span class=&amp;quot;s3&amp;quot;&amp;amp;gt; chans[&amp;amp;lt;/span&amp;amp;gt;&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;14&amp;amp;lt;/span&amp;amp;gt;&amp;amp;lt;span class=&amp;quot;s3&amp;quot;&amp;amp;gt;]; &amp;amp;lt;/span&amp;amp;gt;// list of channels used&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;float&amp;amp;lt;/span&amp;amp;gt;&amp;amp;lt;span class=&amp;quot;s3&amp;quot;&amp;amp;gt; holds[&amp;amp;lt;/span&amp;amp;gt;&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;16&amp;amp;lt;/span&amp;amp;gt;&amp;amp;lt;span class=&amp;quot;s3&amp;quot;&amp;amp;gt;]; &amp;amp;lt;/span&amp;amp;gt;// pitches of on notes, zero if off.&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s3&amp;quot;&amp;amp;gt; [&amp;amp;lt;/span&amp;amp;gt;&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;0&amp;amp;lt;/span&amp;amp;gt;&amp;amp;lt;span class=&amp;quot;s3&amp;quot;&amp;amp;gt;,&amp;amp;lt;/span&amp;amp;gt;&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;1&amp;amp;lt;/span&amp;amp;gt;&amp;amp;lt;span class=&amp;quot;s3&amp;quot;&amp;amp;gt;,&amp;amp;lt;/span&amp;amp;gt;&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;2&amp;amp;lt;/span&amp;amp;gt;&amp;amp;lt;span class=&amp;quot;s3&amp;quot;&amp;amp;gt;,&amp;amp;lt;/span&amp;amp;gt;&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;3&amp;amp;lt;/span&amp;amp;gt;&amp;amp;lt;span class=&amp;quot;s3&amp;quot;&amp;amp;gt;,&amp;amp;lt;/span&amp;amp;gt;&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;4&amp;amp;lt;/span&amp;amp;gt;&amp;amp;lt;span class=&amp;quot;s3&amp;quot;&amp;amp;gt;,&amp;amp;lt;/span&amp;amp;gt;&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;5&amp;amp;lt;/span&amp;amp;gt;&amp;amp;lt;span class=&amp;quot;s3&amp;quot;&amp;amp;gt;,&amp;amp;lt;/span&amp;amp;gt;&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;6&amp;amp;lt;/span&amp;amp;gt;&amp;amp;lt;span class=&amp;quot;s3&amp;quot;&amp;amp;gt;,&amp;amp;lt;/span&amp;amp;gt;&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;7&amp;amp;lt;/span&amp;amp;gt;&amp;amp;lt;span class=&amp;quot;s3&amp;quot;&amp;amp;gt;,&amp;amp;lt;/span&amp;amp;gt;&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;8&amp;amp;lt;/span&amp;amp;gt;&amp;amp;lt;span class=&amp;quot;s3&amp;quot;&amp;amp;gt;,&amp;amp;lt;/span&amp;amp;gt;&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;10&amp;amp;lt;/span&amp;amp;gt;&amp;amp;lt;span class=&amp;quot;s3&amp;quot;&amp;amp;gt;,&amp;amp;lt;/span&amp;amp;gt;&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;11&amp;amp;lt;/span&amp;amp;gt;&amp;amp;lt;span class=&amp;quot;s3&amp;quot;&amp;amp;gt;,&amp;amp;lt;/span&amp;amp;gt;&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;12&amp;amp;lt;/span&amp;amp;gt;&amp;amp;lt;span class=&amp;quot;s3&amp;quot;&amp;amp;gt;,&amp;amp;lt;/span&amp;amp;gt;&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;13&amp;amp;lt;/span&amp;amp;gt;&amp;amp;lt;span class=&amp;quot;s3&amp;quot;&amp;amp;gt;,&amp;amp;lt;/span&amp;amp;gt;&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;14&amp;amp;lt;/span&amp;amp;gt;&amp;amp;lt;span class=&amp;quot;s3&amp;quot;&amp;amp;gt;] @=&amp;amp;gt; chans; &amp;amp;lt;/span&amp;amp;gt;//exclude channel 10 (drums) &amp;amp;amp; 16 (send channel)&lt;br /&gt;
//microtuning stuff&lt;br /&gt;
// PitchBend&lt;br /&gt;
// input: pitch (midi note number float) &amp;amp;amp; velocity of desired note&lt;br /&gt;
// action: sends appropriate pitchbend message&lt;br /&gt;
// (assuming pitchbend range = +/- 2 semitones)&lt;br /&gt;
// output: note number required for correct frequency to be realized&lt;br /&gt;
// sends pitchbend, assuming +/- wholestep pitchbend range&lt;br /&gt;
// returns note number required for correct frequency&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;fun int&amp;amp;lt;/span&amp;amp;gt; PitchBend(&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;float&amp;amp;lt;/span&amp;amp;gt; pitch, &amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;int&amp;amp;lt;/span&amp;amp;gt; velocity)&lt;br /&gt;
{&lt;br /&gt;
//send pitchbend&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;224&amp;amp;lt;/span&amp;amp;gt; + chans[ctr] =&amp;amp;gt; outmsg.data1;&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;0&amp;amp;lt;/span&amp;amp;gt; =&amp;amp;gt; outmsg.data2;&lt;br /&gt;
Math.round((pitch % &amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;1&amp;amp;lt;/span&amp;amp;gt;.&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;0&amp;amp;lt;/span&amp;amp;gt;) * &amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;32&amp;amp;lt;/span&amp;amp;gt;.&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;0&amp;amp;lt;/span&amp;amp;gt; + &amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;64&amp;amp;lt;/span&amp;amp;gt;.&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;0&amp;amp;lt;/span&amp;amp;gt;) $ &amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;int&amp;amp;lt;/span&amp;amp;gt; =&amp;amp;gt; outmsg.data3;&lt;br /&gt;
mouse.send(outmsg);&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;return&amp;amp;lt;/span&amp;amp;gt; Math.floor(pitch) $ &amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;int&amp;amp;lt;/span&amp;amp;gt;;&lt;br /&gt;
}&lt;br /&gt;
// StartRelay&lt;br /&gt;
// input: number of MIDI device, MidiTransform to be used&lt;br /&gt;
// creates a loop ~ should be sporked&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;fun void&amp;amp;lt;/span&amp;amp;gt; StartRelay(&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;int&amp;amp;lt;/span&amp;amp;gt; deviceNum, MidiTransform mt)&lt;br /&gt;
{&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;if&amp;amp;lt;/span&amp;amp;gt;( !min.open(&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;inDeviceNum&amp;amp;lt;/span&amp;amp;gt;)) &amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;me&amp;amp;lt;/span&amp;amp;gt;.exit();&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;if&amp;amp;lt;/span&amp;amp;gt;( !mouse.open(outDeviceNum)) &amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;me&amp;amp;lt;/span&amp;amp;gt;.exit();&lt;br /&gt;
// print out device that was opened&lt;br /&gt;
&amp;amp;lt;&amp;amp;lt;&amp;amp;lt; min.num(), &amp;amp;lt;span class=&amp;quot;s4&amp;quot;&amp;amp;gt;&amp;quot; -&amp;amp;gt; &amp;quot;&amp;amp;lt;/span&amp;amp;gt;, min.name() &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;;&lt;br /&gt;
&amp;amp;lt;&amp;amp;lt;&amp;amp;lt; mouse.num(), &amp;amp;lt;span class=&amp;quot;s4&amp;quot;&amp;amp;gt;&amp;quot; -&amp;amp;gt; &amp;quot;&amp;amp;lt;/span&amp;amp;gt;, mouse.name() &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;;&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;while&amp;amp;lt;/span&amp;amp;gt; ( &amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;true&amp;amp;lt;/span&amp;amp;gt;)&lt;br /&gt;
{&lt;br /&gt;
min =&amp;amp;gt; &amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;now&amp;amp;lt;/span&amp;amp;gt;;&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;while&amp;amp;lt;/span&amp;amp;gt;( min.recv(inmsg))&lt;br /&gt;
{ &lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;if&amp;amp;lt;/span&amp;amp;gt;( inmsg.data1 % &amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;16&amp;amp;lt;/span&amp;amp;gt; == &amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;0&amp;amp;lt;/span&amp;amp;gt;) &amp;amp;lt;span class=&amp;quot;s5&amp;quot;&amp;amp;gt;// only receive on channel 1&amp;amp;lt;/span&amp;amp;gt;&lt;br /&gt;
{&lt;br /&gt;
&amp;amp;lt;&amp;amp;lt;&amp;amp;lt; &amp;amp;lt;span class=&amp;quot;s4&amp;quot;&amp;amp;gt;&amp;quot;r &amp;quot;&amp;amp;lt;/span&amp;amp;gt;, inmsg.data1 / &amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;16&amp;amp;lt;/span&amp;amp;gt;, inmsg.data1 % &amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;16&amp;amp;lt;/span&amp;amp;gt;, inmsg.data2, inmsg.data3&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;;&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;if&amp;amp;lt;/span&amp;amp;gt;( inmsg.data1 / &amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;16&amp;amp;lt;/span&amp;amp;gt; == &amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;9&amp;amp;lt;/span&amp;amp;gt;)&lt;br /&gt;
{ &lt;br /&gt;
mt.NoteOn(inmsg.data2, inmsg.data3);&lt;br /&gt;
}&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;if&amp;amp;lt;/span&amp;amp;gt;( inmsg.data1 / &amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;16&amp;amp;lt;/span&amp;amp;gt; == &amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;8&amp;amp;lt;/span&amp;amp;gt;)&lt;br /&gt;
{&lt;br /&gt;
mt.NoteOff(inmsg.data2, inmsg.data3);&lt;br /&gt;
}&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;if&amp;amp;lt;/span&amp;amp;gt;( inmsg.data1 / &amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;16&amp;amp;lt;/span&amp;amp;gt; == &amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;12&amp;amp;lt;/span&amp;amp;gt;)&lt;br /&gt;
{&lt;br /&gt;
//prog change apply to channels 1-16&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s5&amp;quot;&amp;amp;gt;//works!&amp;amp;lt;/span&amp;amp;gt;&lt;br /&gt;
inmsg.data1 - (inmsg.data1 % &amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;16&amp;amp;lt;/span&amp;amp;gt;) =&amp;amp;gt; &amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;int&amp;amp;lt;/span&amp;amp;gt; base;&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;for&amp;amp;lt;/span&amp;amp;gt;(&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;0&amp;amp;lt;/span&amp;amp;gt;=&amp;amp;gt;&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;int&amp;amp;lt;/span&amp;amp;gt; i; i&amp;amp;lt;&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;15&amp;amp;lt;/span&amp;amp;gt;; i++)&lt;br /&gt;
{&lt;br /&gt;
base + chans[i] =&amp;amp;gt; outmsg.data1;&lt;br /&gt;
inmsg.data2 =&amp;amp;gt; outmsg.data2;&lt;br /&gt;
i++;&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;if&amp;amp;lt;/span&amp;amp;gt;( i == &amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;15&amp;amp;lt;/span&amp;amp;gt;) &lt;br /&gt;
{ &lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;0&amp;amp;lt;/span&amp;amp;gt; =&amp;amp;gt; outmsg.data3;&lt;br /&gt;
mouse.send(outmsg);&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;break&amp;amp;lt;/span&amp;amp;gt;; &lt;br /&gt;
}&lt;br /&gt;
base + chans[i] =&amp;amp;gt; outmsg.data3;&lt;br /&gt;
mouse.send(outmsg);&lt;br /&gt;
inmsg.data2 =&amp;amp;gt; outmsg.data1;&lt;br /&gt;
i++;&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;if&amp;amp;lt;/span&amp;amp;gt;( i == &amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;15&amp;amp;lt;/span&amp;amp;gt;)&lt;br /&gt;
{&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;0&amp;amp;lt;/span&amp;amp;gt; =&amp;amp;gt; outmsg.data2 =&amp;amp;gt; outmsg.data3;&lt;br /&gt;
mouse.send(outmsg);&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;break&amp;amp;lt;/span&amp;amp;gt;;&lt;br /&gt;
}&lt;br /&gt;
base + chans[i] =&amp;amp;gt; outmsg.data2;&lt;br /&gt;
inmsg.data2 =&amp;amp;gt; outmsg.data3;&lt;br /&gt;
mouse.send(outmsg);&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;if&amp;amp;lt;/span&amp;amp;gt;( inmsg.data1 / &amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;16&amp;amp;lt;/span&amp;amp;gt; == &amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;11&amp;amp;lt;/span&amp;amp;gt;)&lt;br /&gt;
{&lt;br /&gt;
//apply any controller data to channels 1-16&lt;br /&gt;
inmsg.data1 - (inmsg.data1 % &amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;16&amp;amp;lt;/span&amp;amp;gt;) =&amp;amp;gt; &amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;int&amp;amp;lt;/span&amp;amp;gt; base;&lt;br /&gt;
inmsg.data2 =&amp;amp;gt; outmsg.data2;&lt;br /&gt;
inmsg.data3 =&amp;amp;gt; outmsg.data3;&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;for&amp;amp;lt;/span&amp;amp;gt;(&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;0&amp;amp;lt;/span&amp;amp;gt;=&amp;amp;gt;&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;int&amp;amp;lt;/span&amp;amp;gt; i; i&amp;amp;lt;&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;16&amp;amp;lt;/span&amp;amp;gt;; i++)&lt;br /&gt;
{&lt;br /&gt;
base + i =&amp;amp;gt; outmsg.data1;&lt;br /&gt;
mouse.send(outmsg);&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
// NoteOn&lt;br /&gt;
// input: pitch in midi note-number extended, velocity&lt;br /&gt;
// action: sends a MIDI pitchbend + note-on message to mouse on the current channel&lt;br /&gt;
// keeping track of holds&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;fun void&amp;amp;lt;/span&amp;amp;gt; NoteOn(&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;float&amp;amp;lt;/span&amp;amp;gt; nn, &amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;int&amp;amp;lt;/span&amp;amp;gt; velocity)&lt;br /&gt;
{&lt;br /&gt;
IncrementCtr();&lt;br /&gt;
nn =&amp;amp;gt; holds[chans[ctr%&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;14&amp;amp;lt;/span&amp;amp;gt;]];&lt;br /&gt;
PitchBend(nn, velocity) =&amp;amp;gt; outmsg.data2;&lt;br /&gt;
// note on, right channel&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;144&amp;amp;lt;/span&amp;amp;gt; + chans[ctr%&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;14&amp;amp;lt;/span&amp;amp;gt;] =&amp;amp;gt; outmsg.data1; &lt;br /&gt;
velocity =&amp;amp;gt; outmsg.data3;&lt;br /&gt;
mouse.send(outmsg);&lt;br /&gt;
//&amp;amp;lt;&amp;amp;lt;&amp;amp;lt; &amp;quot;s &amp;quot;, outmsg.data1 / 16, outmsg.data1 % 16, outmsg.data2, outmsg.data3&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;;&lt;br /&gt;
}&lt;br /&gt;
// increments mod-14 counter, skipping over channels with&lt;br /&gt;
// notes already on them, if possible.&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;fun void&amp;amp;lt;/span&amp;amp;gt; IncrementCtr()&lt;br /&gt;
{&lt;br /&gt;
ctr;&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;0&amp;amp;lt;/span&amp;amp;gt; =&amp;amp;gt; &amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;int&amp;amp;lt;/span&amp;amp;gt; i;&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;for&amp;amp;lt;/span&amp;amp;gt;( i; i&amp;amp;lt;&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;14&amp;amp;lt;/span&amp;amp;gt;; i++)&lt;br /&gt;
{&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;if&amp;amp;lt;/span&amp;amp;gt; ( holds[chans[(ctr+i) % &amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;14&amp;amp;lt;/span&amp;amp;gt;]] == &amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;0&amp;amp;lt;/span&amp;amp;gt;.&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;0&amp;amp;lt;/span&amp;amp;gt;)&lt;br /&gt;
{ (ctr + i) % &amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;14&amp;amp;lt;/span&amp;amp;gt; =&amp;amp;gt; ctr; &amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;return&amp;amp;lt;/span&amp;amp;gt;; }&lt;br /&gt;
}&lt;br /&gt;
(ctr + &amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;1&amp;amp;lt;/span&amp;amp;gt;) % &amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;14&amp;amp;lt;/span&amp;amp;gt; =&amp;amp;gt; ctr;&lt;br /&gt;
}&lt;br /&gt;
// NoteOff&lt;br /&gt;
// input: pitch &amp;amp;amp; note-off velocity&lt;br /&gt;
// action: finds the pitch &amp;amp;amp; offs it.&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;fun void&amp;amp;lt;/span&amp;amp;gt; NoteOff(&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;float&amp;amp;lt;/span&amp;amp;gt; nn, &amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;int&amp;amp;lt;/span&amp;amp;gt; velocity)&lt;br /&gt;
{&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;0&amp;amp;lt;/span&amp;amp;gt; =&amp;amp;gt; &amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;int&amp;amp;lt;/span&amp;amp;gt; c;&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;for&amp;amp;lt;/span&amp;amp;gt;(c; c&amp;amp;lt;&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;16&amp;amp;lt;/span&amp;amp;gt;; c++)&lt;br /&gt;
{&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;if&amp;amp;lt;/span&amp;amp;gt;(holds[c] == nn) &amp;amp;lt;span class=&amp;quot;s5&amp;quot;&amp;amp;gt;// we found the pitch!&amp;amp;lt;/span&amp;amp;gt;&lt;br /&gt;
{&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;128&amp;amp;lt;/span&amp;amp;gt; + c =&amp;amp;gt; outmsg.data1;&lt;br /&gt;
Math.floor(nn) $ &amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;int&amp;amp;lt;/span&amp;amp;gt; =&amp;amp;gt; outmsg.data2;&lt;br /&gt;
velocity =&amp;amp;gt; outmsg.data3;&lt;br /&gt;
mouse.send(outmsg);&lt;br /&gt;
//&amp;amp;lt;&amp;amp;lt;&amp;amp;lt; &amp;quot;s &amp;quot;, outmsg.data1 / 16, outmsg.data1 % 16, outmsg.data2, outmsg.data3&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;;&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;0&amp;amp;lt;/span&amp;amp;gt;.&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;0&amp;amp;lt;/span&amp;amp;gt; =&amp;amp;gt; holds[c];&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;return&amp;amp;lt;/span&amp;amp;gt;;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&amp;amp;lt;&amp;amp;lt;&amp;amp;lt;&amp;amp;lt;span class=&amp;quot;s4&amp;quot;&amp;amp;gt;&amp;quot;MISS&amp;quot;&amp;amp;lt;/span&amp;amp;gt;, nn&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;;&lt;br /&gt;
// we couldn&amp;#039;t find the pitch!&lt;br /&gt;
// don&amp;#039;t do anything. &lt;br /&gt;
}&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;fun void&amp;amp;lt;/span&amp;amp;gt; ControlChange(&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;int&amp;amp;lt;/span&amp;amp;gt; channel, &amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;int&amp;amp;lt;/span&amp;amp;gt; prognum, &amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;int&amp;amp;lt;/span&amp;amp;gt; val)&lt;br /&gt;
{&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;128&amp;amp;lt;/span&amp;amp;gt; + channel =&amp;amp;gt; outmsg.data1;&lt;br /&gt;
prognum =&amp;amp;gt; outmsg.data2;&lt;br /&gt;
val =&amp;amp;gt; outmsg.data3;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;class&amp;amp;lt;/span&amp;amp;gt; MidiTransform&lt;br /&gt;
{&lt;br /&gt;
// superclass for MIDI transformers to be used by MicroRobinMidiIO&lt;br /&gt;
MicroRobinMidiIO myIO;&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;fun void&amp;amp;lt;/span&amp;amp;gt; LinkToIO(MicroRobinMidiIO io)&lt;br /&gt;
{&lt;br /&gt;
io @=&amp;amp;gt; myIO;&lt;br /&gt;
}&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;fun void&amp;amp;lt;/span&amp;amp;gt; NoteOn( &amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;int&amp;amp;lt;/span&amp;amp;gt; nn, &amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;int&amp;amp;lt;/span&amp;amp;gt; vel)&lt;br /&gt;
{&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;return&amp;amp;lt;/span&amp;amp;gt;;&lt;br /&gt;
}&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;fun void&amp;amp;lt;/span&amp;amp;gt; NoteOff( &amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;int&amp;amp;lt;/span&amp;amp;gt; nn, &amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;int&amp;amp;lt;/span&amp;amp;gt; vel)&lt;br /&gt;
{&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;return&amp;amp;lt;/span&amp;amp;gt;;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;class&amp;amp;lt;/span&amp;amp;gt; SuperparticularSamchillian &amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;extends&amp;amp;lt;/span&amp;amp;gt; MidiTransform&lt;br /&gt;
{&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;57&amp;amp;lt;/span&amp;amp;gt;. =&amp;amp;gt; &amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;float&amp;amp;lt;/span&amp;amp;gt; resentFreq;&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;57&amp;amp;lt;/span&amp;amp;gt;. =&amp;amp;gt; &amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;float&amp;amp;lt;/span&amp;amp;gt; prevFreq; &lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;62&amp;amp;lt;/span&amp;amp;gt; =&amp;amp;gt; &amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;int&amp;amp;lt;/span&amp;amp;gt; keyboardCenterNN;&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;float&amp;amp;lt;/span&amp;amp;gt; prevFreqsByKey[&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;128&amp;amp;lt;/span&amp;amp;gt;];&lt;br /&gt;
//set pans funky&lt;br /&gt;
//for(0=&amp;amp;gt;int f; f&amp;amp;lt;16; f++)&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s5&amp;quot;&amp;amp;gt;//{&amp;amp;lt;/span&amp;amp;gt;&lt;br /&gt;
// myIO.ControlChange(f, 9, f*8);&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s5&amp;quot;&amp;amp;gt;//}&amp;amp;lt;/span&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;fun void&amp;amp;lt;/span&amp;amp;gt; NoteOn( &amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;int&amp;amp;lt;/span&amp;amp;gt; nn, &amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;int&amp;amp;lt;/span&amp;amp;gt; vel)&lt;br /&gt;
{&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;if&amp;amp;lt;/span&amp;amp;gt;(nn == keyboardCenterNN)&lt;br /&gt;
{&lt;br /&gt;
myIO.NoteOn( Std.ftom(prevFreq), vel);&lt;br /&gt;
}&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;else&amp;amp;lt;/span&amp;amp;gt;&lt;br /&gt;
{&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;if&amp;amp;lt;/span&amp;amp;gt;(nn &amp;amp;lt; keyboardCenterNN)&lt;br /&gt;
{&lt;br /&gt;
// superparticular!&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;1&amp;amp;lt;/span&amp;amp;gt;. + &amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;1&amp;amp;lt;/span&amp;amp;gt;./(keyboardCenterNN - nn) /=&amp;amp;gt; prevFreq;&lt;br /&gt;
myIO.NoteOn( Std.ftom(prevFreq), vel);&lt;br /&gt;
}&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;else&amp;amp;lt;/span&amp;amp;gt;&lt;br /&gt;
{ &lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;if&amp;amp;lt;/span&amp;amp;gt;(nn &amp;amp;gt; keyboardCenterNN)&lt;br /&gt;
{&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;1&amp;amp;lt;/span&amp;amp;gt;. + &amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;1&amp;amp;lt;/span&amp;amp;gt;./(nn - keyboardCenterNN) *=&amp;amp;gt; prevFreq;&lt;br /&gt;
myIO.NoteOn( Std.ftom(prevFreq), vel);&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
Std.ftom(prevFreq) =&amp;amp;gt; prevFreqsByKey[nn];&lt;br /&gt;
}&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;fun void&amp;amp;lt;/span&amp;amp;gt; NoteOff( &amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;int&amp;amp;lt;/span&amp;amp;gt; nn, &amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;int&amp;amp;lt;/span&amp;amp;gt; vel)&lt;br /&gt;
{&lt;br /&gt;
myIO.NoteOff( prevFreqsByKey[nn], vel);&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
MicroRobinMidiIO mrmio;&lt;br /&gt;
SuperparticularSamchillian easy;&lt;br /&gt;
easy.LinkToIO(mrmio);&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;spork&amp;amp;lt;/span&amp;amp;gt; ~ mrmio.StartRelay( &amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;1&amp;amp;lt;/span&amp;amp;gt;, easy);&lt;br /&gt;
&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;1&amp;amp;lt;/span&amp;amp;gt;&amp;amp;lt;span class=&amp;quot;s3&amp;quot;&amp;amp;gt;::&amp;amp;lt;/span&amp;amp;gt;second&amp;amp;lt;span class=&amp;quot;s3&amp;quot;&amp;amp;gt; =&amp;amp;gt; &amp;amp;lt;/span&amp;amp;gt;now&amp;amp;lt;span class=&amp;quot;s3&amp;quot;&amp;amp;gt;;&amp;amp;lt;/span&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
KBHit kb; &lt;br /&gt;
&lt;br /&gt;
while&amp;amp;lt;span class=&amp;quot;s3&amp;quot;&amp;amp;gt;(&amp;amp;lt;/span&amp;amp;gt;true&amp;amp;lt;span class=&amp;quot;s3&amp;quot;&amp;amp;gt;)&amp;amp;lt;/span&amp;amp;gt;&lt;br /&gt;
{&lt;br /&gt;
kb =&amp;amp;gt; &amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;now&amp;amp;lt;/span&amp;amp;gt;;&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;while&amp;amp;lt;/span&amp;amp;gt;( kb.more() )&lt;br /&gt;
{&lt;br /&gt;
kb.getchar() =&amp;amp;gt; &amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;int&amp;amp;lt;/span&amp;amp;gt; c;&lt;br /&gt;
&amp;amp;lt;&amp;amp;lt;&amp;amp;lt; &amp;amp;lt;span class=&amp;quot;s4&amp;quot;&amp;amp;gt;&amp;quot;ascii:&amp;quot;&amp;amp;lt;/span&amp;amp;gt;, c&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;;&lt;br /&gt;
easy.NoteOn(c, &amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;88&amp;amp;lt;/span&amp;amp;gt;);&lt;br /&gt;
}&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;h4&amp;gt;Original HTML content:&amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%; max-height:400pt; overflow:auto; background-color:#f8f9fa; border: 1px solid #eaecf0; padding:0em&amp;quot;&amp;gt;&amp;lt;pre style=&amp;quot;margin:0px;border:none;background:none;word-wrap:break-word;width:200%;white-space: pre-wrap ! important&amp;quot; class=&amp;quot;old-revision-html&amp;quot;&amp;gt;&amp;amp;lt;html&amp;amp;gt;&amp;amp;lt;head&amp;amp;gt;&amp;amp;lt;title&amp;amp;gt;superparticular samchillian&amp;amp;lt;/title&amp;amp;gt;&amp;amp;lt;/head&amp;amp;gt;&amp;amp;lt;body&amp;amp;gt;&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;&amp;amp;lt;em&amp;amp;gt; ChucK code for Superparticular Samchillian&amp;amp;lt;/span&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;&amp;amp;lt;/em&amp;amp;gt; Samchillian idea by Leon Gruenbaum&amp;amp;lt;/span&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;&amp;amp;lt;em&amp;amp;gt; superparticular-ratio implementation by Jacob Barton&amp;amp;lt;/span&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/em&amp;amp;gt; paste these into a new document in miniAudicle, or save text as a .ck to run in command-line&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;&amp;amp;lt;em&amp;amp;gt; change these to match your input/output device&amp;amp;lt;/span&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;0 =&amp;amp;amp;gt; int inDeviceNum;&amp;amp;lt;/span&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;1 =&amp;amp;amp;gt; int outDeviceNum;&amp;amp;lt;/span&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;class&amp;amp;lt;/span&amp;amp;gt; MicroRobinMidiIO&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
{&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
MidiIn min;&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
MidiOut mouse;&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
MidiMsg inmsg, outmsg;&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;0&amp;amp;lt;/span&amp;amp;gt; =&amp;amp;amp;gt; &amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;int&amp;amp;lt;/span&amp;amp;gt; ctr;&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/em&amp;amp;gt;int rr[128][3]; don&amp;#039;t think we need this now.&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;em&amp;amp;gt; index = note number?&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/em&amp;amp;gt; column 0 = channel sent to&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;em&amp;amp;gt; column 1 = note number sent&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;int&amp;amp;lt;/span&amp;amp;gt;&amp;amp;lt;span class=&amp;quot;s3&amp;quot;&amp;amp;gt; chans[&amp;amp;lt;/span&amp;amp;gt;&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;14&amp;amp;lt;/span&amp;amp;gt;&amp;amp;lt;span class=&amp;quot;s3&amp;quot;&amp;amp;gt;]; &amp;amp;lt;/span&amp;amp;gt;&amp;amp;lt;/em&amp;amp;gt; list of channels used&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;float&amp;amp;lt;/span&amp;amp;gt;&amp;amp;lt;span class=&amp;quot;s3&amp;quot;&amp;amp;gt; holds[&amp;amp;lt;/span&amp;amp;gt;&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;16&amp;amp;lt;/span&amp;amp;gt;&amp;amp;lt;span class=&amp;quot;s3&amp;quot;&amp;amp;gt;]; &amp;amp;lt;/span&amp;amp;gt;&amp;amp;lt;em&amp;amp;gt; pitches of on notes, zero if off.&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s3&amp;quot;&amp;amp;gt; [&amp;amp;lt;/span&amp;amp;gt;&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;0&amp;amp;lt;/span&amp;amp;gt;&amp;amp;lt;span class=&amp;quot;s3&amp;quot;&amp;amp;gt;,&amp;amp;lt;/span&amp;amp;gt;&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;1&amp;amp;lt;/span&amp;amp;gt;&amp;amp;lt;span class=&amp;quot;s3&amp;quot;&amp;amp;gt;,&amp;amp;lt;/span&amp;amp;gt;&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;2&amp;amp;lt;/span&amp;amp;gt;&amp;amp;lt;span class=&amp;quot;s3&amp;quot;&amp;amp;gt;,&amp;amp;lt;/span&amp;amp;gt;&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;3&amp;amp;lt;/span&amp;amp;gt;&amp;amp;lt;span class=&amp;quot;s3&amp;quot;&amp;amp;gt;,&amp;amp;lt;/span&amp;amp;gt;&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;4&amp;amp;lt;/span&amp;amp;gt;&amp;amp;lt;span class=&amp;quot;s3&amp;quot;&amp;amp;gt;,&amp;amp;lt;/span&amp;amp;gt;&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;5&amp;amp;lt;/span&amp;amp;gt;&amp;amp;lt;span class=&amp;quot;s3&amp;quot;&amp;amp;gt;,&amp;amp;lt;/span&amp;amp;gt;&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;6&amp;amp;lt;/span&amp;amp;gt;&amp;amp;lt;span class=&amp;quot;s3&amp;quot;&amp;amp;gt;,&amp;amp;lt;/span&amp;amp;gt;&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;7&amp;amp;lt;/span&amp;amp;gt;&amp;amp;lt;span class=&amp;quot;s3&amp;quot;&amp;amp;gt;,&amp;amp;lt;/span&amp;amp;gt;&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;8&amp;amp;lt;/span&amp;amp;gt;&amp;amp;lt;span class=&amp;quot;s3&amp;quot;&amp;amp;gt;,&amp;amp;lt;/span&amp;amp;gt;&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;10&amp;amp;lt;/span&amp;amp;gt;&amp;amp;lt;span class=&amp;quot;s3&amp;quot;&amp;amp;gt;,&amp;amp;lt;/span&amp;amp;gt;&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;11&amp;amp;lt;/span&amp;amp;gt;&amp;amp;lt;span class=&amp;quot;s3&amp;quot;&amp;amp;gt;,&amp;amp;lt;/span&amp;amp;gt;&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;12&amp;amp;lt;/span&amp;amp;gt;&amp;amp;lt;span class=&amp;quot;s3&amp;quot;&amp;amp;gt;,&amp;amp;lt;/span&amp;amp;gt;&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;13&amp;amp;lt;/span&amp;amp;gt;&amp;amp;lt;span class=&amp;quot;s3&amp;quot;&amp;amp;gt;,&amp;amp;lt;/span&amp;amp;gt;&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;14&amp;amp;lt;/span&amp;amp;gt;&amp;amp;lt;span class=&amp;quot;s3&amp;quot;&amp;amp;gt;] @=&amp;amp;amp;gt; chans; &amp;amp;lt;/span&amp;amp;gt;&amp;amp;lt;/em&amp;amp;gt;exclude channel 10 (drums) &amp;amp;amp;amp; 16 (send channel)&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;em&amp;amp;gt;microtuning stuff&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/em&amp;amp;gt; PitchBend&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;em&amp;amp;gt; input: pitch (midi note number float) &amp;amp;amp;amp; velocity of desired note&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/em&amp;amp;gt; action: sends appropriate pitchbend message&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;em&amp;amp;gt; (assuming pitchbend range = +/- 2 semitones)&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/em&amp;amp;gt; output: note number required for correct frequency to be realized&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;em&amp;amp;gt; sends pitchbend, assuming +/- wholestep pitchbend range&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/em&amp;amp;gt; returns note number required for correct frequency&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;fun int&amp;amp;lt;/span&amp;amp;gt; PitchBend(&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;float&amp;amp;lt;/span&amp;amp;gt; pitch, &amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;int&amp;amp;lt;/span&amp;amp;gt; velocity)&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
{&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;em&amp;amp;gt;send pitchbend&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;224&amp;amp;lt;/span&amp;amp;gt; + chans[ctr] =&amp;amp;amp;gt; outmsg.data1;&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;0&amp;amp;lt;/span&amp;amp;gt; =&amp;amp;amp;gt; outmsg.data2;&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
Math.round((pitch % &amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;1&amp;amp;lt;/span&amp;amp;gt;.&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;0&amp;amp;lt;/span&amp;amp;gt;) * &amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;32&amp;amp;lt;/span&amp;amp;gt;.&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;0&amp;amp;lt;/span&amp;amp;gt; + &amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;64&amp;amp;lt;/span&amp;amp;gt;.&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;0&amp;amp;lt;/span&amp;amp;gt;) $ &amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;int&amp;amp;lt;/span&amp;amp;gt; =&amp;amp;amp;gt; outmsg.data3;&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
mouse.send(outmsg);&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;return&amp;amp;lt;/span&amp;amp;gt; Math.floor(pitch) $ &amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;int&amp;amp;lt;/span&amp;amp;gt;;&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
}&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/em&amp;amp;gt; StartRelay&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;em&amp;amp;gt; input: number of MIDI device, MidiTransform to be used&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/em&amp;amp;gt; creates a loop ~ should be sporked&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;fun void&amp;amp;lt;/span&amp;amp;gt; StartRelay(&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;int&amp;amp;lt;/span&amp;amp;gt; deviceNum, MidiTransform mt)&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
{&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;if&amp;amp;lt;/span&amp;amp;gt;( !min.open(&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;inDeviceNum&amp;amp;lt;/span&amp;amp;gt;)) &amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;me&amp;amp;lt;/span&amp;amp;gt;.exit();&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;if&amp;amp;lt;/span&amp;amp;gt;( !mouse.open(outDeviceNum)) &amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;me&amp;amp;lt;/span&amp;amp;gt;.exit();&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;em&amp;amp;gt; print out device that was opened&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;amp;lt;&amp;amp;amp;lt;&amp;amp;amp;lt; min.num(), &amp;amp;lt;span class=&amp;quot;s4&amp;quot;&amp;amp;gt;&amp;amp;amp;quot; -&amp;amp;amp;gt; &amp;amp;amp;quot;&amp;amp;lt;/span&amp;amp;gt;, min.name() &amp;amp;amp;gt;&amp;amp;amp;gt;&amp;amp;amp;gt;;&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;amp;lt;&amp;amp;amp;lt;&amp;amp;amp;lt; mouse.num(), &amp;amp;lt;span class=&amp;quot;s4&amp;quot;&amp;amp;gt;&amp;amp;amp;quot; -&amp;amp;amp;gt; &amp;amp;amp;quot;&amp;amp;lt;/span&amp;amp;gt;, mouse.name() &amp;amp;amp;gt;&amp;amp;amp;gt;&amp;amp;amp;gt;;&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;while&amp;amp;lt;/span&amp;amp;gt; ( &amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;true&amp;amp;lt;/span&amp;amp;gt;)&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
{&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
min =&amp;amp;amp;gt; &amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;now&amp;amp;lt;/span&amp;amp;gt;;&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;while&amp;amp;lt;/span&amp;amp;gt;( min.recv(inmsg))&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
{ &amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;if&amp;amp;lt;/span&amp;amp;gt;( inmsg.data1 % &amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;16&amp;amp;lt;/span&amp;amp;gt; == &amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;0&amp;amp;lt;/span&amp;amp;gt;) &amp;amp;lt;span class=&amp;quot;s5&amp;quot;&amp;amp;gt;&amp;amp;lt;/em&amp;amp;gt; only receive on channel 1&amp;amp;lt;/span&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
{&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;amp;lt;&amp;amp;amp;lt;&amp;amp;amp;lt; &amp;amp;lt;span class=&amp;quot;s4&amp;quot;&amp;amp;gt;&amp;amp;amp;quot;r &amp;amp;amp;quot;&amp;amp;lt;/span&amp;amp;gt;, inmsg.data1 / &amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;16&amp;amp;lt;/span&amp;amp;gt;, inmsg.data1 % &amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;16&amp;amp;lt;/span&amp;amp;gt;, inmsg.data2, inmsg.data3&amp;amp;amp;gt;&amp;amp;amp;gt;&amp;amp;amp;gt;;&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;if&amp;amp;lt;/span&amp;amp;gt;( inmsg.data1 / &amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;16&amp;amp;lt;/span&amp;amp;gt; == &amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;9&amp;amp;lt;/span&amp;amp;gt;)&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
{ &amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
mt.NoteOn(inmsg.data2, inmsg.data3);&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
}&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;if&amp;amp;lt;/span&amp;amp;gt;( inmsg.data1 / &amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;16&amp;amp;lt;/span&amp;amp;gt; == &amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;8&amp;amp;lt;/span&amp;amp;gt;)&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
{&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
mt.NoteOff(inmsg.data2, inmsg.data3);&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
}&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;if&amp;amp;lt;/span&amp;amp;gt;( inmsg.data1 / &amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;16&amp;amp;lt;/span&amp;amp;gt; == &amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;12&amp;amp;lt;/span&amp;amp;gt;)&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
{&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;em&amp;amp;gt;prog change apply to channels 1-16&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s5&amp;quot;&amp;amp;gt;&amp;amp;lt;/em&amp;amp;gt;works!&amp;amp;lt;/span&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
inmsg.data1 - (inmsg.data1 % &amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;16&amp;amp;lt;/span&amp;amp;gt;) =&amp;amp;amp;gt; &amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;int&amp;amp;lt;/span&amp;amp;gt; base;&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;for&amp;amp;lt;/span&amp;amp;gt;(&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;0&amp;amp;lt;/span&amp;amp;gt;=&amp;amp;amp;gt;&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;int&amp;amp;lt;/span&amp;amp;gt; i; i&amp;amp;amp;lt;&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;15&amp;amp;lt;/span&amp;amp;gt;; i++)&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
{&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
base + chans[i] =&amp;amp;amp;gt; outmsg.data1;&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
inmsg.data2 =&amp;amp;amp;gt; outmsg.data2;&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
i++;&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;if&amp;amp;lt;/span&amp;amp;gt;( i == &amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;15&amp;amp;lt;/span&amp;amp;gt;) &amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
{ &amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;0&amp;amp;lt;/span&amp;amp;gt; =&amp;amp;amp;gt; outmsg.data3;&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
mouse.send(outmsg);&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;break&amp;amp;lt;/span&amp;amp;gt;; &amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
}&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
base + chans[i] =&amp;amp;amp;gt; outmsg.data3;&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
mouse.send(outmsg);&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
inmsg.data2 =&amp;amp;amp;gt; outmsg.data1;&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
i++;&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;if&amp;amp;lt;/span&amp;amp;gt;( i == &amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;15&amp;amp;lt;/span&amp;amp;gt;)&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
{&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;0&amp;amp;lt;/span&amp;amp;gt; =&amp;amp;amp;gt; outmsg.data2 =&amp;amp;amp;gt; outmsg.data3;&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
mouse.send(outmsg);&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;break&amp;amp;lt;/span&amp;amp;gt;;&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
}&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
base + chans[i] =&amp;amp;amp;gt; outmsg.data2;&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
inmsg.data2 =&amp;amp;amp;gt; outmsg.data3;&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
mouse.send(outmsg);&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
}&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
}&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;if&amp;amp;lt;/span&amp;amp;gt;( inmsg.data1 / &amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;16&amp;amp;lt;/span&amp;amp;gt; == &amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;11&amp;amp;lt;/span&amp;amp;gt;)&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
{&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;em&amp;amp;gt;apply any controller data to channels 1-16&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
inmsg.data1 - (inmsg.data1 % &amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;16&amp;amp;lt;/span&amp;amp;gt;) =&amp;amp;amp;gt; &amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;int&amp;amp;lt;/span&amp;amp;gt; base;&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
inmsg.data2 =&amp;amp;amp;gt; outmsg.data2;&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
inmsg.data3 =&amp;amp;amp;gt; outmsg.data3;&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;for&amp;amp;lt;/span&amp;amp;gt;(&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;0&amp;amp;lt;/span&amp;amp;gt;=&amp;amp;amp;gt;&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;int&amp;amp;lt;/span&amp;amp;gt; i; i&amp;amp;amp;lt;&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;16&amp;amp;lt;/span&amp;amp;gt;; i++)&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
{&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
base + i =&amp;amp;amp;gt; outmsg.data1;&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
mouse.send(outmsg);&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
}&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
}&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
}&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
}&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
}&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
}&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/em&amp;amp;gt; NoteOn&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;em&amp;amp;gt; input: pitch in midi note-number extended, velocity&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/em&amp;amp;gt; action: sends a MIDI pitchbend + note-on message to mouse on the current channel&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;em&amp;amp;gt; keeping track of holds&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;fun void&amp;amp;lt;/span&amp;amp;gt; NoteOn(&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;float&amp;amp;lt;/span&amp;amp;gt; nn, &amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;int&amp;amp;lt;/span&amp;amp;gt; velocity)&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
{&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
IncrementCtr();&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
nn =&amp;amp;amp;gt; holds[chans[ctr%&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;14&amp;amp;lt;/span&amp;amp;gt;]];&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
PitchBend(nn, velocity) =&amp;amp;amp;gt; outmsg.data2;&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/em&amp;amp;gt; note on, right channel&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;144&amp;amp;lt;/span&amp;amp;gt; + chans[ctr%&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;14&amp;amp;lt;/span&amp;amp;gt;] =&amp;amp;amp;gt; outmsg.data1; &amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
velocity =&amp;amp;amp;gt; outmsg.data3;&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
mouse.send(outmsg);&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;em&amp;amp;gt;&amp;amp;amp;lt;&amp;amp;amp;lt;&amp;amp;amp;lt; &amp;amp;amp;quot;s &amp;amp;amp;quot;, outmsg.data1 / 16, outmsg.data1 % 16, outmsg.data2, outmsg.data3&amp;amp;amp;gt;&amp;amp;amp;gt;&amp;amp;amp;gt;;&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
}&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/em&amp;amp;gt; increments mod-14 counter, skipping over channels with&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;em&amp;amp;gt; notes already on them, if possible.&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;fun void&amp;amp;lt;/span&amp;amp;gt; IncrementCtr()&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
{&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
ctr;&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;0&amp;amp;lt;/span&amp;amp;gt; =&amp;amp;amp;gt; &amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;int&amp;amp;lt;/span&amp;amp;gt; i;&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;for&amp;amp;lt;/span&amp;amp;gt;( i; i&amp;amp;amp;lt;&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;14&amp;amp;lt;/span&amp;amp;gt;; i++)&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
{&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;if&amp;amp;lt;/span&amp;amp;gt; ( holds[chans[(ctr+i) % &amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;14&amp;amp;lt;/span&amp;amp;gt;]] == &amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;0&amp;amp;lt;/span&amp;amp;gt;.&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;0&amp;amp;lt;/span&amp;amp;gt;)&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
{ (ctr + i) % &amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;14&amp;amp;lt;/span&amp;amp;gt; =&amp;amp;amp;gt; ctr; &amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;return&amp;amp;lt;/span&amp;amp;gt;; }&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
}&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
(ctr + &amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;1&amp;amp;lt;/span&amp;amp;gt;) % &amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;14&amp;amp;lt;/span&amp;amp;gt; =&amp;amp;amp;gt; ctr;&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
}&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/em&amp;amp;gt; NoteOff&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;em&amp;amp;gt; input: pitch &amp;amp;amp;amp; note-off velocity&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/em&amp;amp;gt; action: finds the pitch &amp;amp;amp;amp; offs it.&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;fun void&amp;amp;lt;/span&amp;amp;gt; NoteOff(&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;float&amp;amp;lt;/span&amp;amp;gt; nn, &amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;int&amp;amp;lt;/span&amp;amp;gt; velocity)&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
{&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;0&amp;amp;lt;/span&amp;amp;gt; =&amp;amp;amp;gt; &amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;int&amp;amp;lt;/span&amp;amp;gt; c;&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;for&amp;amp;lt;/span&amp;amp;gt;(c; c&amp;amp;amp;lt;&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;16&amp;amp;lt;/span&amp;amp;gt;; c++)&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
{&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;if&amp;amp;lt;/span&amp;amp;gt;(holds[c] == nn) &amp;amp;lt;span class=&amp;quot;s5&amp;quot;&amp;amp;gt;&amp;amp;lt;em&amp;amp;gt; we found the pitch!&amp;amp;lt;/span&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
{&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;128&amp;amp;lt;/span&amp;amp;gt; + c =&amp;amp;amp;gt; outmsg.data1;&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
Math.floor(nn) $ &amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;int&amp;amp;lt;/span&amp;amp;gt; =&amp;amp;amp;gt; outmsg.data2;&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
velocity =&amp;amp;amp;gt; outmsg.data3;&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
mouse.send(outmsg);&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/em&amp;amp;gt;&amp;amp;amp;lt;&amp;amp;amp;lt;&amp;amp;amp;lt; &amp;amp;amp;quot;s &amp;amp;amp;quot;, outmsg.data1 / 16, outmsg.data1 % 16, outmsg.data2, outmsg.data3&amp;amp;amp;gt;&amp;amp;amp;gt;&amp;amp;amp;gt;;&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;0&amp;amp;lt;/span&amp;amp;gt;.&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;0&amp;amp;lt;/span&amp;amp;gt; =&amp;amp;amp;gt; holds[c];&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;return&amp;amp;lt;/span&amp;amp;gt;;&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
}&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
}&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;amp;lt;&amp;amp;amp;lt;&amp;amp;amp;lt;&amp;amp;lt;span class=&amp;quot;s4&amp;quot;&amp;amp;gt;&amp;amp;amp;quot;MISS&amp;amp;amp;quot;&amp;amp;lt;/span&amp;amp;gt;, nn&amp;amp;amp;gt;&amp;amp;amp;gt;&amp;amp;amp;gt;;&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;em&amp;amp;gt; we couldn&amp;#039;t find the pitch!&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/em&amp;amp;gt; don&amp;#039;t do anything. &amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
}&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;fun void&amp;amp;lt;/span&amp;amp;gt; ControlChange(&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;int&amp;amp;lt;/span&amp;amp;gt; channel, &amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;int&amp;amp;lt;/span&amp;amp;gt; prognum, &amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;int&amp;amp;lt;/span&amp;amp;gt; val)&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
{&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;128&amp;amp;lt;/span&amp;amp;gt; + channel =&amp;amp;amp;gt; outmsg.data1;&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
prognum =&amp;amp;amp;gt; outmsg.data2;&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
val =&amp;amp;amp;gt; outmsg.data3;&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
}&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
}&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;class&amp;amp;lt;/span&amp;amp;gt; MidiTransform&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
{&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;em&amp;amp;gt; superclass for MIDI transformers to be used by MicroRobinMidiIO&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
MicroRobinMidiIO myIO;&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;fun void&amp;amp;lt;/span&amp;amp;gt; LinkToIO(MicroRobinMidiIO io)&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
{&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
io @=&amp;amp;amp;gt; myIO;&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
}&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;fun void&amp;amp;lt;/span&amp;amp;gt; NoteOn( &amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;int&amp;amp;lt;/span&amp;amp;gt; nn, &amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;int&amp;amp;lt;/span&amp;amp;gt; vel)&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
{&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;return&amp;amp;lt;/span&amp;amp;gt;;&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
}&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;fun void&amp;amp;lt;/span&amp;amp;gt; NoteOff( &amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;int&amp;amp;lt;/span&amp;amp;gt; nn, &amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;int&amp;amp;lt;/span&amp;amp;gt; vel)&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
{&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;return&amp;amp;lt;/span&amp;amp;gt;;&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
}&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
}&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;class&amp;amp;lt;/span&amp;amp;gt; SuperparticularSamchillian &amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;extends&amp;amp;lt;/span&amp;amp;gt; MidiTransform&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
{&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;57&amp;amp;lt;/span&amp;amp;gt;. =&amp;amp;amp;gt; &amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;float&amp;amp;lt;/span&amp;amp;gt; resentFreq;&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;57&amp;amp;lt;/span&amp;amp;gt;. =&amp;amp;amp;gt; &amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;float&amp;amp;lt;/span&amp;amp;gt; prevFreq; &amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;62&amp;amp;lt;/span&amp;amp;gt; =&amp;amp;amp;gt; &amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;int&amp;amp;lt;/span&amp;amp;gt; keyboardCenterNN;&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;float&amp;amp;lt;/span&amp;amp;gt; prevFreqsByKey[&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;128&amp;amp;lt;/span&amp;amp;gt;];&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/em&amp;amp;gt;set pans funky&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;em&amp;amp;gt;for(0=&amp;amp;amp;gt;int f; f&amp;amp;amp;lt;16; f++)&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s5&amp;quot;&amp;amp;gt;&amp;amp;lt;/em&amp;amp;gt;{&amp;amp;lt;/span&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;em&amp;amp;gt; myIO.ControlChange(f, 9, f*8);&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s5&amp;quot;&amp;amp;gt;&amp;amp;lt;/em&amp;amp;gt;}&amp;amp;lt;/span&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;fun void&amp;amp;lt;/span&amp;amp;gt; NoteOn( &amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;int&amp;amp;lt;/span&amp;amp;gt; nn, &amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;int&amp;amp;lt;/span&amp;amp;gt; vel)&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
{&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;if&amp;amp;lt;/span&amp;amp;gt;(nn == keyboardCenterNN)&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
{&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
myIO.NoteOn( Std.ftom(prevFreq), vel);&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
}&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;else&amp;amp;lt;/span&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
{&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;if&amp;amp;lt;/span&amp;amp;gt;(nn &amp;amp;amp;lt; keyboardCenterNN)&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
{&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
// superparticular!&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;1&amp;amp;lt;/span&amp;amp;gt;. + &amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;1&amp;amp;lt;/span&amp;amp;gt;./(keyboardCenterNN - nn) /=&amp;amp;amp;gt; prevFreq;&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
myIO.NoteOn( Std.ftom(prevFreq), vel);&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
}&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;else&amp;amp;lt;/span&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
{ &amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;if&amp;amp;lt;/span&amp;amp;gt;(nn &amp;amp;amp;gt; keyboardCenterNN)&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
{&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;1&amp;amp;lt;/span&amp;amp;gt;. + &amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;1&amp;amp;lt;/span&amp;amp;gt;./(nn - keyboardCenterNN) *=&amp;amp;amp;gt; prevFreq;&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
myIO.NoteOn( Std.ftom(prevFreq), vel);&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
}&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
}&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
}&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
Std.ftom(prevFreq) =&amp;amp;amp;gt; prevFreqsByKey[nn];&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
}&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;fun void&amp;amp;lt;/span&amp;amp;gt; NoteOff( &amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;int&amp;amp;lt;/span&amp;amp;gt; nn, &amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;int&amp;amp;lt;/span&amp;amp;gt; vel)&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
{&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
myIO.NoteOff( prevFreqsByKey[nn], vel);&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
}&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
}&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
MicroRobinMidiIO mrmio;&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
SuperparticularSamchillian easy;&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
easy.LinkToIO(mrmio);&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;spork&amp;amp;lt;/span&amp;amp;gt; ~ mrmio.StartRelay( &amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;1&amp;amp;lt;/span&amp;amp;gt;, easy);&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;1&amp;amp;lt;/span&amp;amp;gt;&amp;amp;lt;span class=&amp;quot;s3&amp;quot;&amp;amp;gt;::&amp;amp;lt;/span&amp;amp;gt;second&amp;amp;lt;span class=&amp;quot;s3&amp;quot;&amp;amp;gt; =&amp;amp;amp;gt; &amp;amp;lt;/span&amp;amp;gt;now&amp;amp;lt;span class=&amp;quot;s3&amp;quot;&amp;amp;gt;;&amp;amp;lt;/span&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
KBHit kb; &amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
while&amp;amp;lt;span class=&amp;quot;s3&amp;quot;&amp;amp;gt;(&amp;amp;lt;/span&amp;amp;gt;true&amp;amp;lt;span class=&amp;quot;s3&amp;quot;&amp;amp;gt;)&amp;amp;lt;/span&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
{&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
kb =&amp;amp;amp;gt; &amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;now&amp;amp;lt;/span&amp;amp;gt;;&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;while&amp;amp;lt;/span&amp;amp;gt;( kb.more() )&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
{&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
kb.getchar() =&amp;amp;amp;gt; &amp;amp;lt;span class=&amp;quot;s1&amp;quot;&amp;amp;gt;int&amp;amp;lt;/span&amp;amp;gt; c;&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
&amp;amp;amp;lt;&amp;amp;amp;lt;&amp;amp;amp;lt; &amp;amp;lt;span class=&amp;quot;s4&amp;quot;&amp;amp;gt;&amp;amp;amp;quot;ascii:&amp;amp;amp;quot;&amp;amp;lt;/span&amp;amp;gt;, c&amp;amp;amp;gt;&amp;amp;amp;gt;&amp;amp;amp;gt;;&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
easy.NoteOn(c, &amp;amp;lt;span class=&amp;quot;s2&amp;quot;&amp;amp;gt;88&amp;amp;lt;/span&amp;amp;gt;);&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
}&amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
}&amp;amp;lt;/body&amp;amp;gt;&amp;amp;lt;/html&amp;amp;gt;&amp;lt;/pre&amp;gt;&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wikispaces&gt;xenjacob</name></author>
	</entry>
</feed>