<?xml version="1.0" encoding="UTF-8"?>
	<rss version="2.0"
		xmlns:content="http://purl.org/rss/1.0/modules/content/"
		xmlns:wfw="http://wellformedweb.org/CommentAPI/"
		xmlns:dc="http://purl.org/dc/elements/1.1/"
		xmlns:atom="http://www.w3.org/2005/Atom"

			>

	<channel>
		<title>Cycling 74  &#187;  Topic: How to recall one value based on multiple values?</title>
		<atom:link href="http://cycling74.com/forums/topic/how-to-recall-one-value-based-on-multiple-values/feed" rel="self" type="application/rss+xml" />
		<link>http://cycling74.com/forums/topic/how-to-recall-one-value-based-on-multiple-values/feed</link>
		<description></description>
		<pubDate>Thu, 20 Jun 2013 04:20:32 +0000</pubDate>
		<generator>http://bbpress.org/?v=2.2.4</generator>
		<language></language>

		
														
					
				<item>
					<guid>http://cycling74.com/forums/topic/how-to-recall-one-value-based-on-multiple-values/#post-40115</guid>
					<title><![CDATA[How to recall one value based on multiple values?]]></title>
					<link>http://cycling74.com/forums/topic/how-to-recall-one-value-based-on-multiple-values/#post-40115</link>
					<pubDate>Wed, 01 Oct 2008 23:07:15 +0000</pubDate>
					<dc:creator>Peter Ostry</dc:creator>

					<description>
						<![CDATA[
						<p></p>
						]]>
					</description>

					
					
				</item>

			
				<item>
					<guid>http://cycling74.com/forums/topic/how-to-recall-one-value-based-on-multiple-values/#post-141622</guid>
					<title><![CDATA[Re: How to recall one value based on multiple values?]]></title>
					<link>http://cycling74.com/forums/topic/how-to-recall-one-value-based-on-multiple-values/#post-141622</link>
					<pubDate>Fri, 03 Oct 2008 07:59:05 +0000</pubDate>
					<dc:creator>Stefan Tiedje</dc:creator>

					<description>
						<![CDATA[
						<p>Peter Ostry schrieb:<br />
> For example: Port FCB1010, Control Change, Channel 1, Number 27 -<br />
> should return &#8220;CC#45&#8243; Port FCB1010, Program, Channel 1, Value 11 -<br />
> should return &#8220;CC#10&#8243;</p>
<p>The examples you describe are all a single event btw. after you&#8217;ve done <br />
the tutorials, just look also at the help files for ctlin, pgmin, select <br />
and coll&#8230;</p>
<p>You could also program your FCB to spit out exactly and directly what <br />
you need&#8230;</p>
<p>&#8211; <br />
Stefan Tiedje&#8212;&#8212;&#8212;&#8212;x&#8212;&#8212;-<br />
&#8211;_____&#8212;&#8212;&#8212;&#8211;|&#8212;&#8212;&#8212;&#8212;&#8211;<br />
&#8211;(_|_ &#8212;-|&#8212;&#8211;|&#8212;&#8211;()&#8212;&#8212;-<br />
&#8211; _|_)&#8212;-|&#8212;&#8211;()&#8212;&#8212;&#8212;&#8212;&#8211;<br />
&#8212;&#8212;&#8212;-()&#8212;&#8212;&#8211;www.ccmix.com</p>
						]]>
					</description>

					
					
				</item>

			
				<item>
					<guid>http://cycling74.com/forums/topic/how-to-recall-one-value-based-on-multiple-values/#post-141623</guid>
					<title><![CDATA[Re: How to recall one value based on multiple values?]]></title>
					<link>http://cycling74.com/forums/topic/how-to-recall-one-value-based-on-multiple-values/#post-141623</link>
					<pubDate>Fri, 03 Oct 2008 09:58:42 +0000</pubDate>
					<dc:creator>Peter Ostry</dc:creator>

					<description>
						<![CDATA[
						<p>Thank you Stefan, but programming the hardware is not an option in this case, the setup is too big. It involves several instruments and controllers, other hardware, Logic and TotalMix, many MIDI ports and channels and many user presets.</p>
<p>I have one way in Max yet, after I found an ancient database trick in my old rusty toolbox: For MIDI Learn I combine an incoming MIDI message to a long number and store it as index in a coll. The user can assign one or more functions (= numbers) to this message and this makes the data part. While playing, I parse each message, combine it also to this number and look for associated data in the coll. Works basically but I will end up with more than one coll. The port name for example cannot be part of the magic number as it is. I am afraid that I took a too complicated way.</p>
<p>Furthermore, I have of course to recall the data the other way round: The user selects a function and sees the associated message. Otherwise he would never know what he had assigned.</p>
<p>So a better question is:<br />
Is there an object or storage method in Max that allows me to send it a list to one &#8220;column&#8221; and get instantly a value or list of the other &#8220;column&#8221;? A bidirectional lookup if you want, like two arrays with lists where you can search either array and get the value of the other one by position.</p>
<p>Speed is an issue. There are a MIDI guitar and bass and a windcontroller plus 4 continuous pedals. Loads of data. I expect a limit somewhere but want go as close as possible before I reduce the features for security.</p>
						]]>
					</description>

					
					
				</item>

			
				<item>
					<guid>http://cycling74.com/forums/topic/how-to-recall-one-value-based-on-multiple-values/#post-141624</guid>
					<title><![CDATA[Re: How to recall one value based on multiple values?]]></title>
					<link>http://cycling74.com/forums/topic/how-to-recall-one-value-based-on-multiple-values/#post-141624</link>
					<pubDate>Sat, 04 Oct 2008 08:09:20 +0000</pubDate>
					<dc:creator>Stefan Tiedje</dc:creator>

					<description>
						<![CDATA[
						<p>Peter Ostry schrieb:<br />
> A bidirectional lookup if you want, like two arrays with lists where<br />
> you can search either array and get the value of the other one by<br />
> position.</p>
<p>coll can do that, if you need only one value (you could store lists as <br />
symbols eventually). I just fill it doubled with the data also <br />
associated as symbol. The other way would be to create two colls, one <br />
for each direction&#8230;<br />
Btw. for matching multiple dependencies look into [match] and all these <br />
new zl modes&#8230;</p>
<p>Stefan</p>
<p>
<div><span id="toggle141624-0" class="patchtoggle" onmousedown="toggleMaxPatch('post141624-0', 'er141624-0');">&#8211; Pasted Max <span id="maxversion141624-0"></span> Patch, click to <span id="er141624-0">expand</span>. &#8211;</span> <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"  width="110" height="14" class="clippy" ><param name="allowScriptAccess" value="always" /><param name="quality" value="high" /><param name="scale" value="noscale" /><param NAME="FlashVars" value="copied=copied!&#038;copyto=copy to clipboard"/><param name="bgcolor" value="#FFFFFF"/><param name="wmode" value="opaque"/><embed src="/wp-content/plugins/bbpress-copy-compressed/clippy.swf"  width="110" height="14"   name="clippy"  quality="high"  allowScriptAccess="always"  type="application/x-shockwave-flash"  pluginspage="http://www.macromedia.com/go/getflashplayer"  FlashVars="text=----------begin_max5_patcher----------%0A557.3ocyU0ziaBCD8L7q.48JcEFuafs8%2BPOU0KUUQFvahqv1HroMaWs%2B2qsw%0A70JSEoaRaODG3MSl7lGuY34v.Pg3DQBhdezWhBBdNLHvBY.Bb2G.X3Sk0XoM%0AM.m7CQw2.w8gTjSJKbqnSQhjOwJD0CAoU1P5ze2CCX7NlNyZhxVsTGZOj5oF%0AROU.fX8mnu5B%2Bnfq3XlMH3yj1JLGClESR%2BoMFDdahCtAqJOR4G12RJU8EMEh%0AzgifoOX%2BJIw7Up9b7%2BQSNJefaPC1Kggli32l3zzRZH7p0kmb%2BxCbU44BKMnd%0AMIK6poLcLBuySmm4uyQq04Ttx5M1r%2BfpHLmAGfM%2BrXyQw3UkGEsUxk0xinYn%0AfqLio5yikmazt6StdVrNVAo0iRt6LGwbJYAleXaJol3TVGyDJ4Oc36trI44x%0ApKLhThOP7HLn%2BwCWv7TqaX2bqQ9Z8d5kasSon12xFne83te6t33q6N4Dz1FX%0AbfR72GX2MezNEaa0HvGLG27Iy4i03CR8EvXsccdDMP%2BlfInzgUBSPnocCKqq%0ATIZI.WMfqDqvUTewFqJxlvXmZZpp85mPZ0YOVoZoE52oJcO2cO3C.D87e03T%0ARuUYvvXqEnlxe86zsRuAeoKRJ5ZKGTR26oifiLphHUTNVQE7Y4fVjyQZUEgO%0Aeo.iV0HzaWFWW50QeNLJ4%2BJFA2.iVx5qMix2.ifmGiPn7aueZhLMc7t2HWy1%0AfCK%2Bup5s6xqdKXj9lWB%2BEvWHYVL%0A-----------end_max5_patcher-----------&#038;copied=copied!&#038;;copyto=copy to clipboard"  bgcolor="#ffffff"  wmode="opaque" /> </object></div>
<div id="post141624-0" style="display:none;visibility:hidden;" >
<div class="patchtoggleInfo"><small>Copy <b>all</b> of the following text.Then, in Max, select <em>New From Clipboard</em>.</small></div>
<div class="patchtogglediv">
<pre><code id="pastedcode141624-0">----------begin_max5_patcher----------
557.3ocyU0ziaBCD8L7q.48JcEFuafs8+POU0KUUQFvahqv1HroMaWs+2qsw
70JSEoaRaODG3MSl7lGuY34v.Pg3DQBhdezWhBBdNLHvBY.Bb2G.X3Sk0XoM
M.m7CQw2.w8gTjSJKbqnSQhjOwJD0CAoU1P5ze2CCX7NlNyZhxVsTGZOj5oF
ROU.fX8mnu5B+nfq3XlMH3yj1JLGClESR+oMFDdahCtAqJOR4G12RJU8EMEh
zgifoOX+JIw7Up9b7+QSNJefaPC1Kggli32l3zzRZH7p0kmb+xCbU44BKMnd
MIK6poLcLBuySmm4uyQq04Ttx5M1r+fpHLmAGfM+rXyQw3UkGEsUxk0xinYn
fqLio5yikmazt6StdVrNVAo0iRt6LGwbJYAleXaJol3TVGyDJ4Oc36trI44x
pKLhThOP7HLn+wCWv7TqaX2bqQ9Z8d5kasSon12xFne83te6t33q6N4Dz1FX
bfR72GX2MezNEaa0HvGLG27Iy4i03CR8EvXsccdDMP+lfInzgUBSPnocCKqq
TIZI.WMfqDqvUTewFqJxlvXmZZpp85mPZ0YOVoZoE52oJcO2cO3C.D87e03T
RuUYvvXqEnlxe86zsRuAeoKRJ5ZKGTR26oifiLphHUTNVQE7Y4fVjyQZUEgO
eo.iV0HzaWFWW50QeNLJ4+JFA2.iVx5qMix2.ifmGiPn7aueZhLMc7t2HWy1
fCK+up5s6xqdKXj9lWB+EvWHYVL
-----------end_max5_patcher-----------</code></pre></div>
</div>
</p><p>
&#8211; <br />
Stefan Tiedje&#8212;&#8212;&#8212;&#8212;x&#8212;&#8212;-<br />
&#8211;_____&#8212;&#8212;&#8212;&#8211;|&#8212;&#8212;&#8212;&#8212;&#8211;<br />
&#8211;(_|_ &#8212;-|&#8212;&#8211;|&#8212;&#8211;()&#8212;&#8212;-<br />
&#8211; _|_)&#8212;-|&#8212;&#8211;()&#8212;&#8212;&#8212;&#8212;&#8211;<br />
&#8212;&#8212;&#8212;-()&#8212;&#8212;&#8211;www.ccmix.com</p>
						]]>
					</description>

					
					
				</item>

			
				<item>
					<guid>http://cycling74.com/forums/topic/how-to-recall-one-value-based-on-multiple-values/#post-141625</guid>
					<title><![CDATA[Re: How to recall one value based on multiple values?]]></title>
					<link>http://cycling74.com/forums/topic/how-to-recall-one-value-based-on-multiple-values/#post-141625</link>
					<pubDate>Sat, 04 Oct 2008 23:00:54 +0000</pubDate>
					<dc:creator>Peter Ostry</dc:creator>

					<description>
						<![CDATA[
						<p></p>
						]]>
					</description>

					
					
				</item>

			
				<item>
					<guid>http://cycling74.com/forums/topic/how-to-recall-one-value-based-on-multiple-values/#post-141626</guid>
					<title><![CDATA[Re: How to recall one value based on multiple values?]]></title>
					<link>http://cycling74.com/forums/topic/how-to-recall-one-value-based-on-multiple-values/#post-141626</link>
					<pubDate>Sun, 05 Oct 2008 21:47:40 +0000</pubDate>
					<dc:creator>johnpitcairn</dc:creator>

					<description>
						<![CDATA[
						<p>Bear in mind that the higher coll indexes take longer to search for (search always starts at the first index). I&#8217;ve found this can become quite inefficient for dense MIDI streams and large colls.</p>
<p>So if you start having that sort of problem, you might want stuff that really impacts performance (ie the densest MIDI messages &#8211; CC, pitch, pressure) to be stored lower in the coll, or use separate colls for different types and do a simple test on status bytes after midiin to decide which coll you need.</p>
<p>Another strategy for things like CC, where you&#8217;ll probably be getting a bunch of the same message in a row, is to cache the current coll lookup in [v] and only go back to the coll when you get a different message at input. Again, a simple test upfront.</p>
<p>All the old database hacks, huh?</p>
<p>I&#8217;ve been thinking about writing a very simple coll replacement that uses t_hashtab internally, so lookup time would be constant. I can see myself using something like that in 80% of the situations where I&#8217;d use coll now.</p>
						]]>
					</description>

					
					
				</item>

			
				<item>
					<guid>http://cycling74.com/forums/topic/how-to-recall-one-value-based-on-multiple-values/#post-141627</guid>
					<title><![CDATA[Re: How to recall one value based on multiple values?]]></title>
					<link>http://cycling74.com/forums/topic/how-to-recall-one-value-based-on-multiple-values/#post-141627</link>
					<pubDate>Sun, 05 Oct 2008 23:22:47 +0000</pubDate>
					<dc:creator>Peter Ostry</dc:creator>

					<description>
						<![CDATA[
						<p></p>
						]]>
					</description>

					
					
				</item>

					
		
	</channel>
	</rss>

