<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://ftm2.ircam.fr/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Laurens+van+der+Wee</id>
		<title>ftm - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="https://ftm2.ircam.fr/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Laurens+van+der+Wee"/>
		<link rel="alternate" type="text/html" href="https://ftm2.ircam.fr/index.php/Special:Contributions/Laurens_van_der_Wee"/>
		<updated>2026-06-06T11:58:13Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.28.0</generator>

	<entry>
		<id>https://ftm2.ircam.fr/index.php?title=How_can_I_work_with_lists_passed_to_an_ftm.mess_object%3F&amp;diff=2851</id>
		<title>How can I work with lists passed to an ftm.mess object?</title>
		<link rel="alternate" type="text/html" href="https://ftm2.ircam.fr/index.php?title=How_can_I_work_with_lists_passed_to_an_ftm.mess_object%3F&amp;diff=2851"/>
				<updated>2010-08-05T10:51:02Z</updated>
		
		<summary type="html">&lt;p&gt;Laurens van der Wee: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Working with inputs in the ftm.mess object is analogous to the standard Max message object: $1 refers to inlet 1 etc. Lists are also 'spread out', so&lt;br /&gt;
&lt;br /&gt;
($1 + $2)&lt;br /&gt;
&lt;br /&gt;
with '1 3' in the left inlet will give you the sum of 1 and 3. Let's say we would like to only let lists of a certain length go through, you need to somehow get the list as a whole. This can be done with $*i, which gets the input list at that specific inlet rather than the corresponding element from that list.&lt;br /&gt;
&lt;br /&gt;
($*1) will output the input list.&lt;br /&gt;
&lt;br /&gt;
Next, we check for the length and decide whether or not to output:&lt;br /&gt;
&lt;br /&gt;
(if ((llen $*1) == 3) $*1) --&amp;gt; this will NOT work!&lt;br /&gt;
&lt;br /&gt;
In this case, the order in which things get evaluated inside the ftm.mess object, is crucial. The two $*1 statements are independent, in that there is, in this case, no operation that actually modifies the input variables ($1, $2...). So you can safely ask for the length of the input for use in the if statement and use the input again to output if the statement is true. The problem in this case is that the list gets evaluated first and the first two elements are then used as the options for the if statement. So for example&lt;br /&gt;
&lt;br /&gt;
(if 1 $*1)&lt;br /&gt;
&lt;br /&gt;
with 4 5 6 as the input will give you 4, whereas&lt;br /&gt;
&lt;br /&gt;
(if 0 $*1)&lt;br /&gt;
&lt;br /&gt;
with the same input will give you 5. The 6 gets lost in this construction.&lt;br /&gt;
&lt;br /&gt;
So, what if we need to get the list through? We have to make it an object and pass it as a whole. This can be any ftm.object, let's say a tuple:&lt;br /&gt;
&lt;br /&gt;
(if ((llen $*1) == 3) {$*1}) --&amp;gt; this will work, but you end up with a tuple. So finally there are two ways to handle this inside the same object:&lt;br /&gt;
&lt;br /&gt;
    * check the output tuples as list checkbox in the ftm.mess inspector&lt;br /&gt;
    * (l (if ((llen $*1) == 3) {$*1}))&lt;/div&gt;</summary>
		<author><name>Laurens van der Wee</name></author>	</entry>

	<entry>
		<id>https://ftm2.ircam.fr/index.php?title=FAQ&amp;diff=2850</id>
		<title>FAQ</title>
		<link rel="alternate" type="text/html" href="https://ftm2.ircam.fr/index.php?title=FAQ&amp;diff=2850"/>
				<updated>2010-08-05T10:50:42Z</updated>
		
		<summary type="html">&lt;p&gt;Laurens van der Wee: /* The FTM Message Box ftm.mess */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This FAQ aims to be an interactively built-up documentation of how to use FTM. It depends on your (the user's) input, be it only with questions. (Just insert a new page with your question, and mark it in the title as unanswered.)&lt;br /&gt;
&lt;br /&gt;
* [[:Category:FAQ | FAQ Index]]&lt;br /&gt;
* [[Special:Categories | List of Documentation Categories]] &lt;br /&gt;
&lt;br /&gt;
== General ==&lt;br /&gt;
&lt;br /&gt;
* [[FTM, MnM, Gbr - What the hell does all this mean?]]&lt;br /&gt;
* [[How do I get help?]]&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
&lt;br /&gt;
* [[Why no sound from some tuturialpatches?]]&lt;br /&gt;
&lt;br /&gt;
=== Basic Concept ===&lt;br /&gt;
&lt;br /&gt;
=== Expressions ===&lt;br /&gt;
&lt;br /&gt;
* [[Expressions | What is the syntax in an FTM message box?]]&lt;br /&gt;
&lt;br /&gt;
=== Interaction with Max/MSP ===&lt;br /&gt;
&lt;br /&gt;
* [[Max objects having problems with FTM data objects | Why can't I route a singular FTM object?]]&lt;br /&gt;
&lt;br /&gt;
* other [[Pitfalls for Maxers]]&lt;br /&gt;
&lt;br /&gt;
=== Building Max Standalone with FTM inside ===&lt;br /&gt;
* [[How do I create Max standalones (collectives/applications) using FTM?]]&lt;br /&gt;
&lt;br /&gt;
== FTM External Objects ==&lt;br /&gt;
&lt;br /&gt;
=== The FTM Message Box [[ftm.mess]] ===&lt;br /&gt;
&lt;br /&gt;
* [[Expressions | What is the syntax in an FTM message box?]]&lt;br /&gt;
* [[Message_Box | How do I get multiple inlets for an FTM message box?]]&lt;br /&gt;
* [[How to insert several init expressions in ftm.mess's inspector?]]&lt;br /&gt;
* [[Expression Class Arguments| How to pass an argument in a method involving an expression object?]]&lt;br /&gt;
* [[How can I work with lists passed to an ftm.mess object?]]&lt;br /&gt;
&lt;br /&gt;
=== The FTM Object and Name Definition Box [[ftm.object]] ===&lt;br /&gt;
&lt;br /&gt;
* [[I have a global fmat in an abstraction and the main patch, but get the error &amp;quot;cannot globalize 'xxx' (name stays local)&amp;quot;?]]&lt;br /&gt;
&lt;br /&gt;
== FTM Data Classes ==&lt;br /&gt;
&lt;br /&gt;
=== The fmat Class: Matrix Operations ===&lt;br /&gt;
&lt;br /&gt;
* How to set and get values or vectors in an fmat?&lt;br /&gt;
* How do I import sound data into FTM?&lt;br /&gt;
* How does matrix import-export work in general?&lt;br /&gt;
* How to crop or access parts of an fmat?&lt;br /&gt;
&lt;br /&gt;
=== The track Class: Sequence of Values ===&lt;br /&gt;
&lt;br /&gt;
* How do I import markers into a track?&lt;br /&gt;
* [[How to retrieve the time index in a track]]?&lt;br /&gt;
* [[FTM_Classes#Class_track|How to access markers, bars, metrics and tempo in a track of type scoob]]&lt;br /&gt;
&lt;br /&gt;
=== The dict Class: Dictionary/Lookup Table/Associative Array ===&lt;br /&gt;
&lt;br /&gt;
* [[How do I access values stored on a dictionary?]]&lt;br /&gt;
&lt;br /&gt;
=== The expr Class: An expression as a data object ===&lt;br /&gt;
&lt;br /&gt;
* [[Expression Class Arguments| How do I pass arguments to an expression in an expr object?]]&lt;br /&gt;
&lt;br /&gt;
[Other Data Classes...]&lt;br /&gt;
&lt;br /&gt;
== Exchanging Data ==&lt;br /&gt;
&lt;br /&gt;
* How can I convert FTM data to Max data?&lt;br /&gt;
* How can I convert FTM data to and from Jitter?&lt;br /&gt;
&lt;br /&gt;
=== SDIF Integration ===&lt;br /&gt;
&lt;br /&gt;
* [[How do I import and export SDIF data into FTM]]?&lt;br /&gt;
* How do I import markers into a track?&lt;br /&gt;
* [[How to record multiple data streams into a single SDIF-file using ftm.sdif.write?]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:FAQ]]&lt;/div&gt;</summary>
		<author><name>Laurens van der Wee</name></author>	</entry>

	<entry>
		<id>https://ftm2.ircam.fr/index.php?title=Lists_%26_Tuples&amp;diff=2849</id>
		<title>Lists &amp; Tuples</title>
		<link rel="alternate" type="text/html" href="https://ftm2.ircam.fr/index.php?title=Lists_%26_Tuples&amp;diff=2849"/>
				<updated>2010-08-05T10:48:54Z</updated>
		
		<summary type="html">&lt;p&gt;Laurens van der Wee: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Working with inputs in the ftm.mess object is analogous to the standard Max message object: $1 refers to inlet 1 etc. Lists are also 'spread out', so &lt;br /&gt;
&lt;br /&gt;
($1 + $2)&lt;br /&gt;
&lt;br /&gt;
with '1 3' in the left inlet will give you the sum of 1 and 3.&lt;br /&gt;
Let's say we would like to only let lists of a certain length go through, you need to somehow get the list ''as a whole''. This can be done with $*i, which gets the input list at that specific inlet rather than the corresponding element from that list.&lt;br /&gt;
&lt;br /&gt;
($*1)&lt;br /&gt;
will output the input list.&lt;br /&gt;
&lt;br /&gt;
Next, we check for the length and decide whether or not to output:&lt;br /&gt;
&lt;br /&gt;
(if ((llen $*1) == 3) $*1) --&amp;gt; this will NOT work!&lt;br /&gt;
&lt;br /&gt;
In this case, the order in which things get evaluated inside the ftm.mess object, is crucial. &lt;br /&gt;
The two $*1 statements are independent, in that there is, in this case, no operation that actually modifies the input variables ($1, $2...).&lt;br /&gt;
So you can safely ask for the length of the input for use in the if statement and use the input again to output if the statement is true. The problem in this case is that the list gets evaluated first and the first two elements are then used as the options for the if statement. So for example&lt;br /&gt;
&lt;br /&gt;
(if 1 $*1) &lt;br /&gt;
&lt;br /&gt;
with 4 5 6 as the input will give you 4, whereas&lt;br /&gt;
&lt;br /&gt;
(if 0 $*1) &lt;br /&gt;
&lt;br /&gt;
with the same input will give you 5. The 6 gets lost in this construction.&lt;br /&gt;
&lt;br /&gt;
So, what if we need to get ''the list'' through?&lt;br /&gt;
We have to make it an object and pass it as a whole. This can be any ftm.object, let's say a tuple:&lt;br /&gt;
&lt;br /&gt;
(if ((llen $*1) == 3) {$*1}) --&amp;gt; this will work, but you end up with a tuple. So finally there are two ways to handle this inside the same object:&lt;br /&gt;
&lt;br /&gt;
* check the output tuples as list checkbox in the ftm.mess inspector&lt;br /&gt;
* (l (if ((llen $*1) == 3) {$*1}))&lt;/div&gt;</summary>
		<author><name>Laurens van der Wee</name></author>	</entry>

	<entry>
		<id>https://ftm2.ircam.fr/index.php?title=Lists_%26_Tuples&amp;diff=2848</id>
		<title>Lists &amp; Tuples</title>
		<link rel="alternate" type="text/html" href="https://ftm2.ircam.fr/index.php?title=Lists_%26_Tuples&amp;diff=2848"/>
				<updated>2010-08-05T10:47:38Z</updated>
		
		<summary type="html">&lt;p&gt;Laurens van der Wee: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Working with inputs in the ftm.mess object is analogous to the standard Max message object: $1 refers to inlet 1 etc. Lists are also 'spread out', so &lt;br /&gt;
&lt;br /&gt;
($1 + $2)&lt;br /&gt;
&lt;br /&gt;
with '1 3' in the left inlet will give you the sum of 1 and 3.&lt;br /&gt;
Let's say we would like to only let lists of a certain length go through, you need to somehow get the list ''as a whole''. This can be done with $*i, which gets the input list at that specific inlet rather than the corresponding element from that list.&lt;br /&gt;
&lt;br /&gt;
($*1)&lt;br /&gt;
will output the input list.&lt;br /&gt;
&lt;br /&gt;
Next, we check for the length and decide whether or not to output:&lt;br /&gt;
&lt;br /&gt;
(if ((llen $*1) == 3) $*1) --&amp;gt; this will NOT work!&lt;br /&gt;
&lt;br /&gt;
In this case, the order in which things get evaluated inside the ftm.mess object, is crucial. &lt;br /&gt;
The two $*1 statements are independent, in that there is, in this case, no operation that actually modifies the input variables ($1, $2...).&lt;br /&gt;
So you can safely ask for the length of the input for use in the if statement and use the input again to output if the statement is true. The problem in this case is that the list gets evaluated first and the first two elements are then used as the options for the if statement. So for example&lt;br /&gt;
&lt;br /&gt;
(if 1 $*1) &lt;br /&gt;
with 4 5 6 as the input will give you 4, whereas&lt;br /&gt;
(if 0 $*1) &lt;br /&gt;
with the same input will give you 5&lt;br /&gt;
&lt;br /&gt;
the 6 gets lost in this construction.&lt;br /&gt;
&lt;br /&gt;
So, what if we need to get ''the list'' through?&lt;br /&gt;
We have to make it an object and pass it as a whole. This can be any ftm.object, let's say a tuple:&lt;br /&gt;
&lt;br /&gt;
(if ((llen $*1) == 3) {$*1}) --&amp;gt; this will work, but you end up with a tuple. So finally there are two ways to handle this inside the same object:&lt;br /&gt;
&lt;br /&gt;
* check the output tuples as list checkbox in the ftm.mess inspector&lt;br /&gt;
* (l (if ((llen $*1) == 3) {$*1}))&lt;/div&gt;</summary>
		<author><name>Laurens van der Wee</name></author>	</entry>

	<entry>
		<id>https://ftm2.ircam.fr/index.php?title=Lists_%26_Tuples&amp;diff=2847</id>
		<title>Lists &amp; Tuples</title>
		<link rel="alternate" type="text/html" href="https://ftm2.ircam.fr/index.php?title=Lists_%26_Tuples&amp;diff=2847"/>
				<updated>2010-08-05T10:47:24Z</updated>
		
		<summary type="html">&lt;p&gt;Laurens van der Wee: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Working with inputs in the ftm.mess object is analogous to the standard Max message object: $1 refers to inlet 1 etc. Lists are also 'spread out', so &lt;br /&gt;
&lt;br /&gt;
($1 + $2)&lt;br /&gt;
&lt;br /&gt;
with '1 3' in the left inlet will give you the sum of 1 and 3.&lt;br /&gt;
Let's say we would like to only let lists of a certain length go through, you need to somehow get the list ''as a whole''. This can be done with $*i, which gets the input list at that specific inlet rather than the corresponding element from that list.&lt;br /&gt;
&lt;br /&gt;
($*1)&lt;br /&gt;
will output the input list.&lt;br /&gt;
&lt;br /&gt;
Next, we check for the length and decide whether or not to output:&lt;br /&gt;
&lt;br /&gt;
(if ((llen $*1) == 3) $*1) --&amp;gt; this will NOT work!&lt;br /&gt;
&lt;br /&gt;
In this case, the order in which things get evaluated inside the ftm.mess object, is crucial. &lt;br /&gt;
The two $*1 statements are independent, in that there is, in this case, no operation that actually modifies the input variables ($1, $2...).&lt;br /&gt;
So you can safely ask for the length of the input for use in the if statement and use the input again to output if the statement is true. The problem in this case is that the list gets evaluated first and the first two elements are then used as the options for the if statement. So for example&lt;br /&gt;
&lt;br /&gt;
(if 1 $*1) &lt;br /&gt;
with 4 5 6 as the input will give you 4, whereas&lt;br /&gt;
(if 0 $*1) &lt;br /&gt;
with the same input will give you 5&lt;br /&gt;
&lt;br /&gt;
the 6 gets lost in this construction.&lt;br /&gt;
&lt;br /&gt;
So, what if we need to get ''the list'' through?&lt;br /&gt;
We have to make it an object and pass it as a whole. This can be any ftm.object, let's say a tuple:&lt;br /&gt;
&lt;br /&gt;
(if ((llen $*1) == 3) {$*1}) --&amp;gt; this will work, but you end up with a tuple. So finally there are two ways to handle this inside the same object:&lt;br /&gt;
&lt;br /&gt;
* I  check the output tuples as list checkbox in the ftm.mess inspector&lt;br /&gt;
* II (l (if ((llen $*1) == 3) {$*1}))&lt;/div&gt;</summary>
		<author><name>Laurens van der Wee</name></author>	</entry>

	<entry>
		<id>https://ftm2.ircam.fr/index.php?title=Lists_%26_Tuples&amp;diff=2846</id>
		<title>Lists &amp; Tuples</title>
		<link rel="alternate" type="text/html" href="https://ftm2.ircam.fr/index.php?title=Lists_%26_Tuples&amp;diff=2846"/>
				<updated>2010-08-05T10:47:04Z</updated>
		
		<summary type="html">&lt;p&gt;Laurens van der Wee: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Working with inputs in the ftm.mess object is analogous to the standard Max message object: $1 refers to inlet 1 etc. Lists are also 'spread out', so &lt;br /&gt;
&lt;br /&gt;
($1 + $2)&lt;br /&gt;
&lt;br /&gt;
with '1 3' in the left inlet will give you the sum of 1 and 3.&lt;br /&gt;
Let's say we would like to only let lists of a certain length go through, you need to somehow get the list ''as a whole''. This can be done with $*i, which gets the input list at that specific inlet rather than the corresponding element from that list.&lt;br /&gt;
&lt;br /&gt;
($*1)&lt;br /&gt;
will output the input list.&lt;br /&gt;
&lt;br /&gt;
Next, we check for the length and decide whether or not to output:&lt;br /&gt;
&lt;br /&gt;
(if ((llen $*1) == 3) $*1) --&amp;gt; this will NOT work!&lt;br /&gt;
&lt;br /&gt;
In this case, the order in which things get evaluated inside the ftm.mess object, is crucial. &lt;br /&gt;
The two $*1 statements are independent, in that there is, in this case, no operation that actually modifies the input variables ($1, $2...).&lt;br /&gt;
So you can safely ask for the length of the input for use in the if statement and use the input again to output if the statement is true. The problem in this case is that the list gets evaluated first and the first two elements are then used as the options for the if statement. So for example&lt;br /&gt;
&lt;br /&gt;
(if 1 $*1) &lt;br /&gt;
with 4 5 6 as the input will give you 4, whereas&lt;br /&gt;
(if 0 $*1) &lt;br /&gt;
with the same input will give you 5&lt;br /&gt;
&lt;br /&gt;
the 6 gets lost in this construction.&lt;br /&gt;
&lt;br /&gt;
So, what if we need to get ''the list'' through?&lt;br /&gt;
We have to make it an object and pass it as a whole. This can be any ftm.object, let's say a tuple:&lt;br /&gt;
&lt;br /&gt;
(if ((llen $*1) == 3) {$*1}) --&amp;gt; this will work, but you end up with a tuple. So finally there are two ways to handle this inside the same object:&lt;br /&gt;
&lt;br /&gt;
I  check the output tuples as list checkbox in the ftm.mess inspector&lt;br /&gt;
&lt;br /&gt;
II (l (if ((llen $*1) == 3) {$*1}))&lt;/div&gt;</summary>
		<author><name>Laurens van der Wee</name></author>	</entry>

	<entry>
		<id>https://ftm2.ircam.fr/index.php?title=Lists_%26_Tuples&amp;diff=2845</id>
		<title>Lists &amp; Tuples</title>
		<link rel="alternate" type="text/html" href="https://ftm2.ircam.fr/index.php?title=Lists_%26_Tuples&amp;diff=2845"/>
				<updated>2010-08-05T10:46:40Z</updated>
		
		<summary type="html">&lt;p&gt;Laurens van der Wee: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Working with inputs in the ftm.mess object is analogous to the standard Max message object: $1 refers to inlet 1 etc. Lists are also 'spread out', so &lt;br /&gt;
&lt;br /&gt;
($1 + $2)&lt;br /&gt;
&lt;br /&gt;
with '1 3' in the left inlet will give you the sum of 1 and 3.&lt;br /&gt;
Let's say we would like to only let lists of a certain length go through, you need to somehow get the list ''as a whole''. This can be done with $*i, which gets the input list at that specific inlet rather than the corresponding element from that list.&lt;br /&gt;
&lt;br /&gt;
($*1)&lt;br /&gt;
will output the input list.&lt;br /&gt;
&lt;br /&gt;
Next, we check for the length and decide whether or not to output:&lt;br /&gt;
&lt;br /&gt;
(if ((llen $*1) == 3) $*1) --&amp;gt; this will NOT work!&lt;br /&gt;
&lt;br /&gt;
In this case, the order in which things get evaluated inside the ftm.mess object, is crucial. &lt;br /&gt;
The two $*1 statements are independent, in that there is, in this case, no operation that actually modifies the input variables ($1, $2...).&lt;br /&gt;
So you can safely ask for the length of the input for use in the if statement and use the input again to output if the statement is true. The problem in this case is that the list gets evaluated first and the first two elements are then used as the options for the if statement. So for example&lt;br /&gt;
&lt;br /&gt;
(if 1 $*1) &lt;br /&gt;
with 4 5 6 as the input will give you 4, whereas&lt;br /&gt;
(if 0 $*1) &lt;br /&gt;
with the same input will give you 5&lt;br /&gt;
&lt;br /&gt;
the 6 gets lost in this construction.&lt;br /&gt;
&lt;br /&gt;
So, what if we need to get ''the list'' through?&lt;br /&gt;
We have to make it an object and pass it as a whole. This can be any ftm.object, let's say a tuple:&lt;br /&gt;
&lt;br /&gt;
(if ((llen $*1) == 3) {$*1}) --&amp;gt; this will work, but you end up with a tuple. So finally there are two ways to handle this inside the same object:&lt;br /&gt;
&lt;br /&gt;
I  check the output tuples as list checkbox in the ftm.mess inspector&lt;br /&gt;
II (l (if ((llen $*1) == 3) {$*1}))&lt;/div&gt;</summary>
		<author><name>Laurens van der Wee</name></author>	</entry>

	<entry>
		<id>https://ftm2.ircam.fr/index.php?title=Lists_%26_Tuples&amp;diff=2844</id>
		<title>Lists &amp; Tuples</title>
		<link rel="alternate" type="text/html" href="https://ftm2.ircam.fr/index.php?title=Lists_%26_Tuples&amp;diff=2844"/>
				<updated>2010-08-05T10:42:41Z</updated>
		
		<summary type="html">&lt;p&gt;Laurens van der Wee: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Working with inputs in the ftm.mess object is analogous to the standard Max message object: $1 refers to inlet 1 etc. Lists are also 'spread out', so &lt;br /&gt;
&lt;br /&gt;
($1 + $2)&lt;br /&gt;
&lt;br /&gt;
with '1 3' in the left inlet will give you the sum of 1 and 3.&lt;br /&gt;
Let's say we would like to only let lists of a certain length go through, you need to somehow get the list ''as a whole''. This can be done with $*i, which stops ftm.mess from 'spreading out' the elements of the incoming list over successive inlets.&lt;br /&gt;
&lt;br /&gt;
($*1)&lt;br /&gt;
will output the input list.&lt;br /&gt;
&lt;br /&gt;
Next, we check for the length and decide whether or not to output:&lt;br /&gt;
&lt;br /&gt;
(if ((llen $*1) == 3) $*1) --&amp;gt; this will NOT work!&lt;br /&gt;
&lt;br /&gt;
In this case, the order in which things get evaluated inside the ftm.mess object, is crucial. &lt;br /&gt;
The two $*1 statements are independent, in that there is, in this case, no operation that actually modifies the internal variables ($1, $2...).&lt;br /&gt;
So you can safely ask for the length of the input for use in the if statement and use it again to output if the statement is true. The problem in this case is that the list gets evaluated first and the first two elements are then used as the options for the if statement. So for example&lt;br /&gt;
&lt;br /&gt;
(if 1 $*1) &lt;br /&gt;
with 4 5 6 as the input will give you 4, whereas&lt;br /&gt;
(if 0 $*1) &lt;br /&gt;
with the same input will give you 5&lt;br /&gt;
&lt;br /&gt;
the 6 gets lost in this construction.&lt;br /&gt;
&lt;br /&gt;
So, what if we need to get ''the list'' through?&lt;br /&gt;
We have to make it an object and pass it as a whole. This can be any ftm.object, let's say a tuple:&lt;br /&gt;
&lt;br /&gt;
(if ((llen $*1) == 3) {$*1}) --&amp;gt; this will work, but you end up with a tuple. So finally there are two ways to handle this inside the same object:&lt;br /&gt;
&lt;br /&gt;
I  check the output tuples as list checkbox in the ftm.mess inspector&lt;br /&gt;
II (l (if ((llen $*1) == 3) {$*1}))&lt;/div&gt;</summary>
		<author><name>Laurens van der Wee</name></author>	</entry>

	<entry>
		<id>https://ftm2.ircam.fr/index.php?title=Lists_%26_Tuples&amp;diff=2843</id>
		<title>Lists &amp; Tuples</title>
		<link rel="alternate" type="text/html" href="https://ftm2.ircam.fr/index.php?title=Lists_%26_Tuples&amp;diff=2843"/>
				<updated>2010-08-05T10:42:12Z</updated>
		
		<summary type="html">&lt;p&gt;Laurens van der Wee: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Working with inputs in the ftm.mess object is analoguous to the standard Max message object: $1 refers to inlet 1 etc. Lists are also 'spread out', so &lt;br /&gt;
&lt;br /&gt;
($1 + $2)&lt;br /&gt;
&lt;br /&gt;
with '1 3' in the left inlet will give you the sum of 1 and 3.&lt;br /&gt;
Let's say we would like to only let lists of a certain length go through, you need to somehow get the list ''as a whole''. This can be done with $*i, which stops ftm.mess from 'spreading out' the elements of the incoming list over successive inlets.&lt;br /&gt;
&lt;br /&gt;
($*1)&lt;br /&gt;
will output the input list.&lt;br /&gt;
&lt;br /&gt;
Next, we check for the length and decide whether or not to output:&lt;br /&gt;
&lt;br /&gt;
(if ((llen $*1) == 3) $*1) --&amp;gt; this will NOT work!&lt;br /&gt;
&lt;br /&gt;
In this case, the order in which things get evaluated inside the ftm.mess object, is crucial. &lt;br /&gt;
The two $*1 statements are independent, in that there is, in this case, no operation that actually modifies the internal variables ($1, $2...).&lt;br /&gt;
So you can safely ask for the length of the input for use in the if statement and use it again to output if the statement is true. The problem in this case is that the list gets evaluated first and the first two elements are then used as the options for the if statement. So for example&lt;br /&gt;
&lt;br /&gt;
(if 1 $*1) &lt;br /&gt;
with 4 5 6 as the input will give you 4, whereas&lt;br /&gt;
(if 0 $*1) &lt;br /&gt;
with the same input will give you 5&lt;br /&gt;
&lt;br /&gt;
the 6 gets lost in this construction.&lt;br /&gt;
&lt;br /&gt;
So, what if we need to get ''the list'' through?&lt;br /&gt;
We have to make it an object and pass it as a whole. This can be any ftm.object, let's say a tuple:&lt;br /&gt;
&lt;br /&gt;
(if ((llen $*1) == 3) {$*1}) --&amp;gt; this will work, but you end up with a tuple. So finally there are two ways to handle this inside the same object:&lt;br /&gt;
&lt;br /&gt;
I  check the output tuples as list checkbox in the ftm.mess inspector&lt;br /&gt;
II (l (if ((llen $*1) == 3) {$*1}))&lt;/div&gt;</summary>
		<author><name>Laurens van der Wee</name></author>	</entry>

	<entry>
		<id>https://ftm2.ircam.fr/index.php?title=Lists_%26_Tuples&amp;diff=2842</id>
		<title>Lists &amp; Tuples</title>
		<link rel="alternate" type="text/html" href="https://ftm2.ircam.fr/index.php?title=Lists_%26_Tuples&amp;diff=2842"/>
				<updated>2010-08-05T10:41:56Z</updated>
		
		<summary type="html">&lt;p&gt;Laurens van der Wee: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Working with inputs in the ftm.mess object is analogous to the standard Max message object: $1 refers to inlet 1 etc. Lists are also 'spread out', so &lt;br /&gt;
&lt;br /&gt;
($1 + $2)&lt;br /&gt;
&lt;br /&gt;
with '1 3' in the left inlet will give you the sum of 1 and 3.&lt;br /&gt;
Let's say we would like to only let lists of a certain length go through, you need to somehow get the list ''as a whole''. This can be done with $*i, which stops ftm.mess from 'spreading out' the elements of the incoming list over successive inlets.&lt;br /&gt;
&lt;br /&gt;
($*1)&lt;br /&gt;
will output the input list.&lt;br /&gt;
&lt;br /&gt;
Next, we check for the length and decide whether or not to output:&lt;br /&gt;
&lt;br /&gt;
(if ((llen $*1) == 3) $*1) --&amp;gt; this will NOT work!&lt;br /&gt;
&lt;br /&gt;
In this case, the order in which things get evaluated inside the ftm.mess object, is crucial. &lt;br /&gt;
The two $*1 statements are independent, in that there is, in this case, no operation that actually modifies the internal variables ($1, $2...).&lt;br /&gt;
So you can safely ask for the length of the input for use in the if statement and use it again to output if the statement is true. The problem in this case is that the list gets evaluated first and the first two elements are then used as the options for the if statement. So for example&lt;br /&gt;
&lt;br /&gt;
(if 1 $*1) &lt;br /&gt;
with 4 5 6 as the input will give you 4, whereas&lt;br /&gt;
(if 0 $*1) &lt;br /&gt;
with the same input will give you 5&lt;br /&gt;
&lt;br /&gt;
the 6 gets lost in this construction.&lt;br /&gt;
&lt;br /&gt;
So, what if we need to get ''the list'' through?&lt;br /&gt;
We have to make it an object and pass it as a whole. This can be any ftm.object, let's say a tuple:&lt;br /&gt;
&lt;br /&gt;
(if ((llen $*1) == 3) {$*1}) --&amp;gt; this will work, but you end up with a tuple. So finally there are two ways to handle this inside the same object:&lt;br /&gt;
&lt;br /&gt;
I  check the output tuples as list checkbox in the ftm.mess inspector&lt;br /&gt;
II (l (if ((llen $*1) == 3) {$*1}))&lt;/div&gt;</summary>
		<author><name>Laurens van der Wee</name></author>	</entry>

	<entry>
		<id>https://ftm2.ircam.fr/index.php?title=FAQ&amp;diff=2841</id>
		<title>FAQ</title>
		<link rel="alternate" type="text/html" href="https://ftm2.ircam.fr/index.php?title=FAQ&amp;diff=2841"/>
				<updated>2010-08-05T10:06:35Z</updated>
		
		<summary type="html">&lt;p&gt;Laurens van der Wee: /* The FTM Message Box ftm.mess */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This FAQ aims to be an interactively built-up documentation of how to use FTM. It depends on your (the user's) input, be it only with questions. (Just insert a new page with your question, and mark it in the title as unanswered.)&lt;br /&gt;
&lt;br /&gt;
* [[:Category:FAQ | FAQ Index]]&lt;br /&gt;
* [[Special:Categories | List of Documentation Categories]] &lt;br /&gt;
&lt;br /&gt;
== General ==&lt;br /&gt;
&lt;br /&gt;
* [[FTM, MnM, Gbr - What the hell does all this mean?]]&lt;br /&gt;
* [[How do I get help?]]&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
&lt;br /&gt;
* [[Why no sound from some tuturialpatches?]]&lt;br /&gt;
&lt;br /&gt;
=== Basic Concept ===&lt;br /&gt;
&lt;br /&gt;
=== Expressions ===&lt;br /&gt;
&lt;br /&gt;
* [[Expressions | What is the syntax in an FTM message box?]]&lt;br /&gt;
&lt;br /&gt;
=== Interaction with Max/MSP ===&lt;br /&gt;
&lt;br /&gt;
* [[Max objects having problems with FTM data objects | Why can't I route a singular FTM object?]]&lt;br /&gt;
&lt;br /&gt;
* other [[Pitfalls for Maxers]]&lt;br /&gt;
&lt;br /&gt;
=== Building Max Standalone with FTM inside ===&lt;br /&gt;
* [[How do I create Max standalones (collectives/applications) using FTM?]]&lt;br /&gt;
&lt;br /&gt;
== FTM External Objects ==&lt;br /&gt;
&lt;br /&gt;
=== The FTM Message Box [[ftm.mess]] ===&lt;br /&gt;
&lt;br /&gt;
* [[Expressions | What is the syntax in an FTM message box?]]&lt;br /&gt;
* [[Message_Box | How do I get multiple inlets for an FTM message box?]]&lt;br /&gt;
* [[How to insert several init expressions in ftm.mess's inspector?]]&lt;br /&gt;
* [[Expression Class Arguments| How to pass an argument in a method involving an expression object?]]&lt;br /&gt;
* [[Lists &amp;amp; Tuples | How can I work with lists passed to an ftm.mess object?]]&lt;br /&gt;
&lt;br /&gt;
=== The FTM Object and Name Definition Box [[ftm.object]] ===&lt;br /&gt;
&lt;br /&gt;
* [[I have a global fmat in an abstraction and the main patch, but get the error &amp;quot;cannot globalize 'xxx' (name stays local)&amp;quot;?]]&lt;br /&gt;
&lt;br /&gt;
== FTM Data Classes ==&lt;br /&gt;
&lt;br /&gt;
=== The fmat Class: Matrix Operations ===&lt;br /&gt;
&lt;br /&gt;
* How to set and get values or vectors in an fmat?&lt;br /&gt;
* How do I import sound data into FTM?&lt;br /&gt;
* How does matrix import-export work in general?&lt;br /&gt;
* How to crop or access parts of an fmat?&lt;br /&gt;
&lt;br /&gt;
=== The track Class: Sequence of Values ===&lt;br /&gt;
&lt;br /&gt;
* How do I import markers into a track?&lt;br /&gt;
* [[How to retrieve the time index in a track]]?&lt;br /&gt;
* [[FTM_Classes#Class_track|How to access markers, bars, metrics and tempo in a track of type scoob]]&lt;br /&gt;
&lt;br /&gt;
=== The dict Class: Dictionary/Lookup Table/Associative Array ===&lt;br /&gt;
&lt;br /&gt;
* [[How do I access values stored on a dictionary?]]&lt;br /&gt;
&lt;br /&gt;
=== The expr Class: An expression as a data object ===&lt;br /&gt;
&lt;br /&gt;
* [[Expression Class Arguments| How do I pass arguments to an expression in an expr object?]]&lt;br /&gt;
&lt;br /&gt;
[Other Data Classes...]&lt;br /&gt;
&lt;br /&gt;
== Exchanging Data ==&lt;br /&gt;
&lt;br /&gt;
* How can I convert FTM data to Max data?&lt;br /&gt;
* How can I convert FTM data to and from Jitter?&lt;br /&gt;
&lt;br /&gt;
=== SDIF Integration ===&lt;br /&gt;
&lt;br /&gt;
* [[How do I import and export SDIF data into FTM]]?&lt;br /&gt;
* How do I import markers into a track?&lt;br /&gt;
* [[How to record multiple data streams into a single SDIF-file using ftm.sdif.write?]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:FAQ]]&lt;/div&gt;</summary>
		<author><name>Laurens van der Wee</name></author>	</entry>

	<entry>
		<id>https://ftm2.ircam.fr/index.php?title=FAQ&amp;diff=2840</id>
		<title>FAQ</title>
		<link rel="alternate" type="text/html" href="https://ftm2.ircam.fr/index.php?title=FAQ&amp;diff=2840"/>
				<updated>2010-08-05T10:06:23Z</updated>
		
		<summary type="html">&lt;p&gt;Laurens van der Wee: /* The FTM Message Box ftm.mess */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This FAQ aims to be an interactively built-up documentation of how to use FTM. It depends on your (the user's) input, be it only with questions. (Just insert a new page with your question, and mark it in the title as unanswered.)&lt;br /&gt;
&lt;br /&gt;
* [[:Category:FAQ | FAQ Index]]&lt;br /&gt;
* [[Special:Categories | List of Documentation Categories]] &lt;br /&gt;
&lt;br /&gt;
== General ==&lt;br /&gt;
&lt;br /&gt;
* [[FTM, MnM, Gbr - What the hell does all this mean?]]&lt;br /&gt;
* [[How do I get help?]]&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
&lt;br /&gt;
* [[Why no sound from some tuturialpatches?]]&lt;br /&gt;
&lt;br /&gt;
=== Basic Concept ===&lt;br /&gt;
&lt;br /&gt;
=== Expressions ===&lt;br /&gt;
&lt;br /&gt;
* [[Expressions | What is the syntax in an FTM message box?]]&lt;br /&gt;
&lt;br /&gt;
=== Interaction with Max/MSP ===&lt;br /&gt;
&lt;br /&gt;
* [[Max objects having problems with FTM data objects | Why can't I route a singular FTM object?]]&lt;br /&gt;
&lt;br /&gt;
* other [[Pitfalls for Maxers]]&lt;br /&gt;
&lt;br /&gt;
=== Building Max Standalone with FTM inside ===&lt;br /&gt;
* [[How do I create Max standalones (collectives/applications) using FTM?]]&lt;br /&gt;
&lt;br /&gt;
== FTM External Objects ==&lt;br /&gt;
&lt;br /&gt;
=== The FTM Message Box [[ftm.mess]] ===&lt;br /&gt;
&lt;br /&gt;
* [[Expressions | What is the syntax in an FTM message box?]]&lt;br /&gt;
* [[Message_Box | How do I get multiple inlets for an FTM message box?]]&lt;br /&gt;
* [[How to insert several init expressions in ftm.mess's inspector?]]&lt;br /&gt;
* [[Expression Class Arguments| How to pass an argument in a method involving an expression object?]]&lt;br /&gt;
* [[Lists &amp;amp; Tuples | How can I work with lists passed to an fmt.mess object?]]&lt;br /&gt;
&lt;br /&gt;
=== The FTM Object and Name Definition Box [[ftm.object]] ===&lt;br /&gt;
&lt;br /&gt;
* [[I have a global fmat in an abstraction and the main patch, but get the error &amp;quot;cannot globalize 'xxx' (name stays local)&amp;quot;?]]&lt;br /&gt;
&lt;br /&gt;
== FTM Data Classes ==&lt;br /&gt;
&lt;br /&gt;
=== The fmat Class: Matrix Operations ===&lt;br /&gt;
&lt;br /&gt;
* How to set and get values or vectors in an fmat?&lt;br /&gt;
* How do I import sound data into FTM?&lt;br /&gt;
* How does matrix import-export work in general?&lt;br /&gt;
* How to crop or access parts of an fmat?&lt;br /&gt;
&lt;br /&gt;
=== The track Class: Sequence of Values ===&lt;br /&gt;
&lt;br /&gt;
* How do I import markers into a track?&lt;br /&gt;
* [[How to retrieve the time index in a track]]?&lt;br /&gt;
* [[FTM_Classes#Class_track|How to access markers, bars, metrics and tempo in a track of type scoob]]&lt;br /&gt;
&lt;br /&gt;
=== The dict Class: Dictionary/Lookup Table/Associative Array ===&lt;br /&gt;
&lt;br /&gt;
* [[How do I access values stored on a dictionary?]]&lt;br /&gt;
&lt;br /&gt;
=== The expr Class: An expression as a data object ===&lt;br /&gt;
&lt;br /&gt;
* [[Expression Class Arguments| How do I pass arguments to an expression in an expr object?]]&lt;br /&gt;
&lt;br /&gt;
[Other Data Classes...]&lt;br /&gt;
&lt;br /&gt;
== Exchanging Data ==&lt;br /&gt;
&lt;br /&gt;
* How can I convert FTM data to Max data?&lt;br /&gt;
* How can I convert FTM data to and from Jitter?&lt;br /&gt;
&lt;br /&gt;
=== SDIF Integration ===&lt;br /&gt;
&lt;br /&gt;
* [[How do I import and export SDIF data into FTM]]?&lt;br /&gt;
* How do I import markers into a track?&lt;br /&gt;
* [[How to record multiple data streams into a single SDIF-file using ftm.sdif.write?]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:FAQ]]&lt;/div&gt;</summary>
		<author><name>Laurens van der Wee</name></author>	</entry>

	<entry>
		<id>https://ftm2.ircam.fr/index.php?title=FAQ&amp;diff=2839</id>
		<title>FAQ</title>
		<link rel="alternate" type="text/html" href="https://ftm2.ircam.fr/index.php?title=FAQ&amp;diff=2839"/>
				<updated>2010-08-05T09:22:03Z</updated>
		
		<summary type="html">&lt;p&gt;Laurens van der Wee: /* The FTM Message Box ftm.mess */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This FAQ aims to be an interactively built-up documentation of how to use FTM. It depends on your (the user's) input, be it only with questions. (Just insert a new page with your question, and mark it in the title as unanswered.)&lt;br /&gt;
&lt;br /&gt;
* [[:Category:FAQ | FAQ Index]]&lt;br /&gt;
* [[Special:Categories | List of Documentation Categories]] &lt;br /&gt;
&lt;br /&gt;
== General ==&lt;br /&gt;
&lt;br /&gt;
* [[FTM, MnM, Gbr - What the hell does all this mean?]]&lt;br /&gt;
* [[How do I get help?]]&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
&lt;br /&gt;
* [[Why no sound from some tuturialpatches?]]&lt;br /&gt;
&lt;br /&gt;
=== Basic Concept ===&lt;br /&gt;
&lt;br /&gt;
=== Expressions ===&lt;br /&gt;
&lt;br /&gt;
* [[Expressions | What is the syntax in an FTM message box?]]&lt;br /&gt;
&lt;br /&gt;
=== Interaction with Max/MSP ===&lt;br /&gt;
&lt;br /&gt;
* [[Max objects having problems with FTM data objects | Why can't I route a singular FTM object?]]&lt;br /&gt;
&lt;br /&gt;
* other [[Pitfalls for Maxers]]&lt;br /&gt;
&lt;br /&gt;
=== Building Max Standalone with FTM inside ===&lt;br /&gt;
* [[How do I create Max standalones (collectives/applications) using FTM?]]&lt;br /&gt;
&lt;br /&gt;
== FTM External Objects ==&lt;br /&gt;
&lt;br /&gt;
=== The FTM Message Box [[ftm.mess]] ===&lt;br /&gt;
&lt;br /&gt;
* [[Expressions | What is the syntax in an FTM message box?]]&lt;br /&gt;
* [[Message_Box | How do I get multiple inlets for an FTM message box?]]&lt;br /&gt;
* [[How to insert several init expressions in ftm.mess's inspector?]]&lt;br /&gt;
* [[Expression Class Arguments| How to pass an argument in a method involving an expression object?]]&lt;br /&gt;
* [[Lists &amp;amp; Tuples | How can I work with lists passed to a fmt.mess object?]]&lt;br /&gt;
&lt;br /&gt;
=== The FTM Object and Name Definition Box [[ftm.object]] ===&lt;br /&gt;
&lt;br /&gt;
* [[I have a global fmat in an abstraction and the main patch, but get the error &amp;quot;cannot globalize 'xxx' (name stays local)&amp;quot;?]]&lt;br /&gt;
&lt;br /&gt;
== FTM Data Classes ==&lt;br /&gt;
&lt;br /&gt;
=== The fmat Class: Matrix Operations ===&lt;br /&gt;
&lt;br /&gt;
* How to set and get values or vectors in an fmat?&lt;br /&gt;
* How do I import sound data into FTM?&lt;br /&gt;
* How does matrix import-export work in general?&lt;br /&gt;
* How to crop or access parts of an fmat?&lt;br /&gt;
&lt;br /&gt;
=== The track Class: Sequence of Values ===&lt;br /&gt;
&lt;br /&gt;
* How do I import markers into a track?&lt;br /&gt;
* [[How to retrieve the time index in a track]]?&lt;br /&gt;
* [[FTM_Classes#Class_track|How to access markers, bars, metrics and tempo in a track of type scoob]]&lt;br /&gt;
&lt;br /&gt;
=== The dict Class: Dictionary/Lookup Table/Associative Array ===&lt;br /&gt;
&lt;br /&gt;
* [[How do I access values stored on a dictionary?]]&lt;br /&gt;
&lt;br /&gt;
=== The expr Class: An expression as a data object ===&lt;br /&gt;
&lt;br /&gt;
* [[Expression Class Arguments| How do I pass arguments to an expression in an expr object?]]&lt;br /&gt;
&lt;br /&gt;
[Other Data Classes...]&lt;br /&gt;
&lt;br /&gt;
== Exchanging Data ==&lt;br /&gt;
&lt;br /&gt;
* How can I convert FTM data to Max data?&lt;br /&gt;
* How can I convert FTM data to and from Jitter?&lt;br /&gt;
&lt;br /&gt;
=== SDIF Integration ===&lt;br /&gt;
&lt;br /&gt;
* [[How do I import and export SDIF data into FTM]]?&lt;br /&gt;
* How do I import markers into a track?&lt;br /&gt;
* [[How to record multiple data streams into a single SDIF-file using ftm.sdif.write?]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:FAQ]]&lt;/div&gt;</summary>
		<author><name>Laurens van der Wee</name></author>	</entry>

	</feed>