<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://cycling74.com/wiki/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://cycling74.com/wiki/index.php?title=MSP_MIDI_Tutorial_2:_MIDI_Synthesizer&amp;feed=atom&amp;action=history</id>
		<title>MSP MIDI Tutorial 2: MIDI Synthesizer - Revision history</title>
		<link rel="self" type="application/atom+xml" href="http://cycling74.com/wiki/index.php?title=MSP_MIDI_Tutorial_2:_MIDI_Synthesizer&amp;feed=atom&amp;action=history"/>
		<link rel="alternate" type="text/html" href="http://cycling74.com/wiki/index.php?title=MSP_MIDI_Tutorial_2:_MIDI_Synthesizer&amp;action=history"/>
		<updated>2013-05-23T14:48:40Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.19.1</generator>

	<entry>
		<id>http://cycling74.com/wiki/index.php?title=MSP_MIDI_Tutorial_2:_MIDI_Synthesizer&amp;diff=919&amp;oldid=prev</id>
		<title>Gtaylor@rtqe.net at 16:15, 6 July 2012</title>
		<link rel="alternate" type="text/html" href="http://cycling74.com/wiki/index.php?title=MSP_MIDI_Tutorial_2:_MIDI_Synthesizer&amp;diff=919&amp;oldid=prev"/>
				<updated>2012-07-06T16:15:00Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr valign='top'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 16:15, 6 July 2012&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&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='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Click here to open the tutorial &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;patches&lt;/del&gt;: [[Media:02iMIDISynth.zip]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Click here to open the tutorial &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;patch and files&lt;/ins&gt;: [[Media:02iMIDISynth.zip]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;In this tutorial we show how to create and work with a simple 4-voice MIDI-controllable synthesizer. Along the way, we discuss simple methods of polyphonic routing as well as using a variety of common MIDI messages to control synthesis parameters.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;In this tutorial we show how to create and work with a simple 4-voice MIDI-controllable synthesizer. Along the way, we discuss simple methods of polyphonic routing as well as using a variety of common MIDI messages to control synthesis parameters.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Gtaylor@rtqe.net</name></author>	</entry>

	<entry>
		<id>http://cycling74.com/wiki/index.php?title=MSP_MIDI_Tutorial_2:_MIDI_Synthesizer&amp;diff=906&amp;oldid=prev</id>
		<title>Gtaylor@rtqe.net at 16:02, 6 July 2012</title>
		<link rel="alternate" type="text/html" href="http://cycling74.com/wiki/index.php?title=MSP_MIDI_Tutorial_2:_MIDI_Synthesizer&amp;diff=906&amp;oldid=prev"/>
				<updated>2012-07-06T16:02:38Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr valign='top'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 16:02, 6 July 2012&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&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='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Click here to open the tutorial &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;patch&lt;/del&gt;: [[Media:&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;02iMIDISynthesizer&lt;/del&gt;.&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;maxpat&lt;/del&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Click here to open the tutorial &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;patches&lt;/ins&gt;: [[Media:&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;02iMIDISynth&lt;/ins&gt;.&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;zip&lt;/ins&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;In this tutorial we show how to create and work with a simple 4-voice MIDI-controllable synthesizer. Along the way, we discuss simple methods of polyphonic routing as well as using a variety of common MIDI messages to control synthesis parameters.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;In this tutorial we show how to create and work with a simple 4-voice MIDI-controllable synthesizer. Along the way, we discuss simple methods of polyphonic routing as well as using a variety of common MIDI messages to control synthesis parameters.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Gtaylor@rtqe.net</name></author>	</entry>

	<entry>
		<id>http://cycling74.com/wiki/index.php?title=MSP_MIDI_Tutorial_2:_MIDI_Synthesizer&amp;diff=858&amp;oldid=prev</id>
		<title>Gtaylor@rtqe.net at 21:11, 28 June 2012</title>
		<link rel="alternate" type="text/html" href="http://cycling74.com/wiki/index.php?title=MSP_MIDI_Tutorial_2:_MIDI_Synthesizer&amp;diff=858&amp;oldid=prev"/>
				<updated>2012-06-28T21:11:39Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr valign='top'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 21:11, 28 June 2012&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 41:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 41:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Meanwhile, the ''velocity'' output of the MIDI notes is scaled between &amp;lt;code&amp;gt;0.&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;1.&amp;lt;/code&amp;gt; and sent to an object called {{maxword|name=adsr~}}. The object stands for ''Attack, Decay, Sustain, Release,'' and generates signal ramps in a standard configuration borrowed from analog synthesizer design:&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Meanwhile, the ''velocity'' output of the MIDI notes is scaled between &amp;lt;code&amp;gt;0.&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;1.&amp;lt;/code&amp;gt; and sent to an object called {{maxword|name=adsr~}}. The object stands for ''Attack, Decay, Sustain, Release,'' and generates signal ramps in a standard configuration borrowed from analog synthesizer design:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;File&lt;/del&gt;:Midichapter02a.png|border]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Image&lt;/ins&gt;:Midichapter02a.png|border]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;''A standard ADSR curve.''&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;''A standard ADSR curve.''&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Gtaylor@rtqe.net</name></author>	</entry>

	<entry>
		<id>http://cycling74.com/wiki/index.php?title=MSP_MIDI_Tutorial_2:_MIDI_Synthesizer&amp;diff=857&amp;oldid=prev</id>
		<title>Gtaylor@rtqe.net: /* Standard synthesizer envelopes: {{maxword|name=adsr~}} */</title>
		<link rel="alternate" type="text/html" href="http://cycling74.com/wiki/index.php?title=MSP_MIDI_Tutorial_2:_MIDI_Synthesizer&amp;diff=857&amp;oldid=prev"/>
				<updated>2012-06-28T21:11:01Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Standard synthesizer envelopes: {{maxword|name=adsr~}}&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr valign='top'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 21:11, 28 June 2012&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 41:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 41:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Meanwhile, the ''velocity'' output of the MIDI notes is scaled between &amp;lt;code&amp;gt;0.&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;1.&amp;lt;/code&amp;gt; and sent to an object called {{maxword|name=adsr~}}. The object stands for ''Attack, Decay, Sustain, Release,'' and generates signal ramps in a standard configuration borrowed from analog synthesizer design:&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Meanwhile, the ''velocity'' output of the MIDI notes is scaled between &amp;lt;code&amp;gt;0.&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;1.&amp;lt;/code&amp;gt; and sent to an object called {{maxword|name=adsr~}}. The object stands for ''Attack, Decay, Sustain, Release,'' and generates signal ramps in a standard configuration borrowed from analog synthesizer design:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Image&lt;/del&gt;:Midichapter02a.png|border]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;File&lt;/ins&gt;:Midichapter02a.png|border]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;''A standard ADSR curve.''&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;''A standard ADSR curve.''&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Gtaylor@rtqe.net</name></author>	</entry>

	<entry>
		<id>http://cycling74.com/wiki/index.php?title=MSP_MIDI_Tutorial_2:_MIDI_Synthesizer&amp;diff=855&amp;oldid=prev</id>
		<title>Gtaylor@rtqe.net: /* Standard synthesizer envelopes: {{maxword|name=adsr~}} */</title>
		<link rel="alternate" type="text/html" href="http://cycling74.com/wiki/index.php?title=MSP_MIDI_Tutorial_2:_MIDI_Synthesizer&amp;diff=855&amp;oldid=prev"/>
				<updated>2012-06-28T20:48:44Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Standard synthesizer envelopes: {{maxword|name=adsr~}}&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr valign='top'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 20:48, 28 June 2012&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 41:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 41:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Meanwhile, the ''velocity'' output of the MIDI notes is scaled between &amp;lt;code&amp;gt;0.&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;1.&amp;lt;/code&amp;gt; and sent to an object called {{maxword|name=adsr~}}. The object stands for ''Attack, Decay, Sustain, Release,'' and generates signal ramps in a standard configuration borrowed from analog synthesizer design:&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Meanwhile, the ''velocity'' output of the MIDI notes is scaled between &amp;lt;code&amp;gt;0.&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;1.&amp;lt;/code&amp;gt; and sent to an object called {{maxword|name=adsr~}}. The object stands for ''Attack, Decay, Sustain, Release,'' and generates signal ramps in a standard configuration borrowed from analog synthesizer design:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;File&lt;/del&gt;:Midichapter02a.png|border]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Image&lt;/ins&gt;:Midichapter02a.png|border]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;''A standard ADSR curve.''&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;''A standard ADSR curve.''&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Gtaylor@rtqe.net</name></author>	</entry>

	<entry>
		<id>http://cycling74.com/wiki/index.php?title=MSP_MIDI_Tutorial_2:_MIDI_Synthesizer&amp;diff=854&amp;oldid=prev</id>
		<title>Gtaylor@rtqe.net at 20:48, 28 June 2012</title>
		<link rel="alternate" type="text/html" href="http://cycling74.com/wiki/index.php?title=MSP_MIDI_Tutorial_2:_MIDI_Synthesizer&amp;diff=854&amp;oldid=prev"/>
				<updated>2012-06-28T20:48:17Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;http://cycling74.com/wiki/index.php?title=MSP_MIDI_Tutorial_2:_MIDI_Synthesizer&amp;amp;diff=854&amp;amp;oldid=829&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>Gtaylor@rtqe.net</name></author>	</entry>

	<entry>
		<id>http://cycling74.com/wiki/index.php?title=MSP_MIDI_Tutorial_2:_MIDI_Synthesizer&amp;diff=829&amp;oldid=prev</id>
		<title>Gtaylor@rtqe.net at 15:32, 28 June 2012</title>
		<link rel="alternate" type="text/html" href="http://cycling74.com/wiki/index.php?title=MSP_MIDI_Tutorial_2:_MIDI_Synthesizer&amp;diff=829&amp;oldid=prev"/>
				<updated>2012-06-28T15:32:52Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr valign='top'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 15:32, 28 June 2012&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&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='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Click here to open the tutorial patch: [[02iMIDISynthesizer.maxpat]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Click here to open the tutorial patch: [[&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Media:&lt;/ins&gt;02iMIDISynthesizer.maxpat]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;In this tutorial we show how to create and work with a simple 4-voice&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;In this tutorial we show how to create and work with a simple 4-voice&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Gtaylor@rtqe.net</name></author>	</entry>

	<entry>
		<id>http://cycling74.com/wiki/index.php?title=MSP_MIDI_Tutorial_2:_MIDI_Synthesizer&amp;diff=730&amp;oldid=prev</id>
		<title>Admin: Created page with &quot;Click here to open the tutorial patch: 02iMIDISynthesizer.maxpat  In this tutorial we show how to create and work with a simple 4-voice MIDI-controllable synthesizer. Alon...&quot;</title>
		<link rel="alternate" type="text/html" href="http://cycling74.com/wiki/index.php?title=MSP_MIDI_Tutorial_2:_MIDI_Synthesizer&amp;diff=730&amp;oldid=prev"/>
				<updated>2012-06-24T22:56:49Z</updated>
		
		<summary type="html">&lt;p&gt;Created page with &amp;quot;Click here to open the tutorial patch: &lt;a href=&quot;/wiki/index.php?title=02iMIDISynthesizer.maxpat&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;02iMIDISynthesizer.maxpat (page does not exist)&quot;&gt;02iMIDISynthesizer.maxpat&lt;/a&gt;  In this tutorial we show how to create and work with a simple 4-voice MIDI-controllable synthesizer. Alon...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Click here to open the tutorial patch: [[02iMIDISynthesizer.maxpat]]&lt;br /&gt;
&lt;br /&gt;
In this tutorial we show how to create and work with a simple 4-voice&lt;br /&gt;
MIDI-controllable synthesizer. Along the way, we discuss simple methods&lt;br /&gt;
of polyphonic routing as well as using a variety of common MIDI messages&lt;br /&gt;
to control synthesis parameters.&lt;br /&gt;
&lt;br /&gt;
* To use the tutorial patchers in this section of the tutorial, make sure&lt;br /&gt;
you have a correctly configured MIDI controller connected to your computer.&lt;br /&gt;
The tutorials in this section use a variety of MIDI messages as example&lt;br /&gt;
input; if your controller lacks any of these features, you can simulate&lt;br /&gt;
their input with user interface objects in the tutorial.&lt;br /&gt;
&lt;br /&gt;
===Playing our synthesizer===&lt;br /&gt;
&lt;br /&gt;
* Take a look at the tutorial patcher. Notice that it contains a fair bit&lt;br /&gt;
of patcher logic involving four different categories of MIDI input objects&lt;br /&gt;
sending messages and signals to four copies of an abstraction called &amp;lt;code&amp;gt;synthvoice~&amp;lt;/code&amp;gt;. Turn on audio by clicking the {{maxword|name=ezdac~}},&lt;br /&gt;
turn up the {{maxword|name=gain~}} slider, and play some notes on your MIDI keyboard.&lt;br /&gt;
The {{maxword|name=kslider}} object should animate in response to your actions.&lt;br /&gt;
While holding a note, adjust the pitch bend wheel on your keyboard.&lt;br /&gt;
Adjust the modulation wheel or another controller that can send CC#1.&lt;br /&gt;
Listen to the different changes to the sound.&lt;br /&gt;
&lt;br /&gt;
Our tutorial patcher deals with MIDI through a number of methods.&lt;br /&gt;
Let's look through these one at a time.&lt;br /&gt;
&lt;br /&gt;
* Play notes on your keyboard one at a time and look at the area of&lt;br /&gt;
the tutorial patcher labeled &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;. Notice what the {{maxword|name=poly}} object&lt;br /&gt;
does to the values. Try playing a note and holding it, then adding&lt;br /&gt;
another while the first key is still down.&lt;br /&gt;
&lt;br /&gt;
Our tutorial patcher is capable of playing four sounds at the same time, due&lt;br /&gt;
to there being four different copies of the &amp;lt;code&amp;gt;synthvoice~&amp;lt;/code&amp;gt; abstraction in&lt;br /&gt;
our patch. In order to take advantage of the polyphony however, we need to&lt;br /&gt;
figure out how to ''route'' our MIDI values to the different voices so&lt;br /&gt;
that the appropriate copy of the &amp;lt;code&amp;gt;synthvoice~&amp;lt;/code&amp;gt; abstraction receives&lt;br /&gt;
each message. The {{maxword|name=poly}} object takes MIDI pitch and velocity and&lt;br /&gt;
performs ''voice assignment'' on the values based on the arguments to&lt;br /&gt;
the object. The first note the object receives will be given voice&lt;br /&gt;
number &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;, the second note voice &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;, and so on. Once we&lt;br /&gt;
exceed the polyphony the object is programmed for (in our case, &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt; voices),&lt;br /&gt;
the object will roll around and start again at voice &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;. Note-off events&lt;br /&gt;
will map to the ''same voice'' as their corresponding note-on events, guaranteeing&lt;br /&gt;
that the message to stop a MIDI event goes to the same destination as the one&lt;br /&gt;
that started it.&lt;br /&gt;
&lt;br /&gt;
* Using your MIDI keyboard, play a four-note chord. Now, without releasing any&lt;br /&gt;
of the keys, press a fifth note. Notice what happens.&lt;br /&gt;
&lt;br /&gt;
The second argument to {{maxword|name=poly}} (&amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;) tells it to ''steal'' voices&lt;br /&gt;
if the polyphony is exceeded. If we attempt to sound more notes than the {{maxword|name=poly}} object&lt;br /&gt;
allows for, the ''oldest'' note will be dropped and its voice will be recycled.&lt;br /&gt;
&lt;br /&gt;
The output for our {{maxword|name=poly}} object is sent into a {{maxword|name=pack}} object&lt;br /&gt;
and then through a {{maxword|name=route}} object to send the remaining lists of pitches&lt;br /&gt;
and velocities to the appropriate copy of our &amp;lt;code&amp;gt;synthvoice~&amp;lt;/code&amp;gt; abstraction.&lt;br /&gt;
&lt;br /&gt;
* Take a look at tutorial area &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;. Move the pitch bend wheel on your&lt;br /&gt;
keyboard controller. Notice that, unlike most controllers, its resting&lt;br /&gt;
point is at the middle of the range at &amp;lt;code&amp;gt;63&amp;lt;/code&amp;gt;. See what the patcher&lt;br /&gt;
logic below does to scale the values between &amp;lt;code&amp;gt;-2.&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;2.&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To create our pitch bend value, we take the MIDI pitch bend wheel&lt;br /&gt;
and {{maxword|name=split}} its range to two different {{maxword|name=scale}} objects. The&lt;br /&gt;
left-hand {{maxword|name=scale}} object takes the lower half of the MIDI range and&lt;br /&gt;
scales it from &amp;lt;code&amp;gt;-2.&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;0.&amp;lt;/code&amp;gt;; the right-hand object scales the&lt;br /&gt;
upper range between &amp;lt;code&amp;gt;0.&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;2.&amp;lt;/code&amp;gt; This guarantees that the center&lt;br /&gt;
value in the range (&amp;lt;code&amp;gt;63&amp;lt;/code&amp;gt;) maps to a value of &amp;lt;code&amp;gt;0.&amp;lt;/code&amp;gt; in all cases.&lt;br /&gt;
&lt;br /&gt;
* Take a look at the tutorial area labeled &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;. Move the continuous&lt;br /&gt;
controller and look how it's scaled. Look at the tutorial area labeled &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt;.&lt;br /&gt;
If you have a MIDI controller with real-time transport capabilities (i.e. it&lt;br /&gt;
can send MIDI beat clock), set it up to transmit at any tempo you like and start&lt;br /&gt;
the transport on the controller. If you like, you could also use an inter-application&lt;br /&gt;
MIDI routing utility and a software sequencer on your computer to do this. If not,&lt;br /&gt;
click in the {{maxword|name=number}} box labeled &amp;lt;code&amp;gt;tick speed&amp;lt;/code&amp;gt; and enter the value &amp;lt;code&amp;gt;20.&amp;lt;/code&amp;gt; &lt;br /&gt;
Change the continuous controller and play some notes. Listen to the result.&lt;br /&gt;
Change the &amp;lt;code&amp;gt;tick speed&amp;lt;/code&amp;gt; to something faster (like &amp;lt;code&amp;gt;10.&amp;lt;/code&amp;gt;). Notice what happens.&lt;br /&gt;
&lt;br /&gt;
The MIDI CC# and the real-time messages are sent in by the {{maxword|name=ctlin}}&lt;br /&gt;
and {{maxword|name=rtin}} objects, respectively, to work together controlling a low-frequency&lt;br /&gt;
oscillator (LFO). The real-time messages that define the ''beat clock''&lt;br /&gt;
control the ''rate'' of the LFO; the controller messages change the ''depth''.&lt;br /&gt;
MIDI beat clock typically runs at 96 PPQ; the {{maxword|name=timer}} object measures the intervals&lt;br /&gt;
between ticks, which are then scaled to derive the rate of the LFO so that it lasts&lt;br /&gt;
one measure. MIDI real-time message &amp;lt;code&amp;gt;250&amp;lt;/code&amp;gt; (the 'start' message on a sequencer)&lt;br /&gt;
resets the phase of the {{maxword|name=cycle~}} object so that the LFO will re-synch with a&lt;br /&gt;
sequence if it starts on a barline.&lt;br /&gt;
&lt;br /&gt;
Note how the output of the LFO is scaled so that even with the depth sending a&lt;br /&gt;
signal of &amp;lt;code&amp;gt;0.&amp;lt;/code&amp;gt;, the signal sent into the &amp;lt;code&amp;gt;synthvoice~&amp;lt;/code&amp;gt; abstraction is&lt;br /&gt;
guaranteed to be centered around &amp;lt;code&amp;gt;1.&amp;lt;/code&amp;gt; Let's take a look at what's in that&lt;br /&gt;
patch.&lt;br /&gt;
&lt;br /&gt;
===The &amp;lt;code&amp;gt;synthvoice~&amp;lt;/code&amp;gt; abstraction===&lt;br /&gt;
&lt;br /&gt;
* Double-click any of the abstractions named &amp;lt;code&amp;gt;synthvoice~&amp;lt;/code&amp;gt; and look&lt;br /&gt;
at the patcher logic inside.&lt;br /&gt;
&lt;br /&gt;
Our &amp;lt;code&amp;gt;synthvoice~&amp;lt;/code&amp;gt; abstraction has three inLet's. The first inlet&lt;br /&gt;
takes lists of pitch and velocity values from our MIDI keyboard input.&lt;br /&gt;
The ''pitch'' value is sent to drive a constant signal ({{maxword|name=sig~}})&lt;br /&gt;
which has the signal from inlet #2 added to it ({{maxword|name=+~}}). This value&lt;br /&gt;
is then interpreted as a MIDI number and converted to a frequency in the&lt;br /&gt;
signal domain by an object called {{maxword|name=mtof~}}, which behaves just like&lt;br /&gt;
the {{maxword|name=mtof}} object but operates on continuous MSP signals instead of&lt;br /&gt;
Max numbers. This frequency value then feeds two band-limited oscillators:&lt;br /&gt;
a square wave ({{maxword|name=rect~}}) and a sawtooth wave ({{maxword|name=saw}}) which are mixed&lt;br /&gt;
together. The ''frequency'' of the {{maxword|name=rect~}} object is multiplied by&lt;br /&gt;
the LFO signal coming in inlet #3 so that a rich, chorused tone can be acheived&lt;br /&gt;
when the depth of the LFO is increased.&lt;br /&gt;
&lt;br /&gt;
===Standard synthesizer envelopes: {{maxword|name=adsr~}}===&lt;br /&gt;
&lt;br /&gt;
Meanwhile, the ''velocity'' output of the MIDI notes is scaled&lt;br /&gt;
between &amp;lt;code&amp;gt;0.&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;1.&amp;lt;/code&amp;gt; and sent to an object called {{maxword|name=adsr~}}. The&lt;br /&gt;
object stands for ''Attack, Decay, Sustain, Release,'' and generates&lt;br /&gt;
signal ramps in a standard configuration borrowed from analog synthesizer&lt;br /&gt;
design:&lt;br /&gt;
&lt;br /&gt;
[[Image:Midichapter02a.png|border]]&lt;br /&gt;
&lt;br /&gt;
''A standard ADSR curve.''&lt;br /&gt;
&lt;br /&gt;
The arguments to {{maxword|name=adsr~}} are interpreted as an attack time, a decay&lt;br /&gt;
time, a sustain ''level'', and a release time. The sustain level is a&lt;br /&gt;
multiplier of the overall amplitude which the object outputs during a sustaining note.&lt;br /&gt;
&lt;br /&gt;
The {{maxword|name=adsr~}} object takes a value and interprets it as an envelope&lt;br /&gt;
trigger of a certain amplitude. Any number higher than &amp;lt;code&amp;gt;0.&amp;lt;/code&amp;gt; triggers&lt;br /&gt;
the attack, decay, and sustain phases, scaled to match the amplitude of the&lt;br /&gt;
trigger (e.g. an input value of &amp;lt;code&amp;gt;0.5&amp;lt;/code&amp;gt; will trigger a softer envelope&lt;br /&gt;
than a trigger of &amp;lt;code&amp;gt;0.8&amp;lt;/code&amp;gt;). The object then stays at the sustain phase,&lt;br /&gt;
putting out a constant value until it receives a &amp;lt;code&amp;gt;0.&amp;lt;/code&amp;gt; It then continues&lt;br /&gt;
to the release phase of the envelope and ramps to &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* Now that we understand how the synthesizer elements work, return to the&lt;br /&gt;
main patcher and see if the controllable parameters make sense. Try&lt;br /&gt;
exploring the full range of the MIDI control to see how expressive it is.&lt;br /&gt;
&lt;br /&gt;
===Summary===&lt;br /&gt;
&lt;br /&gt;
Within a patcher, MIDI note events can be routed polyphonically to different&lt;br /&gt;
copies of the same abstraction using a {{maxword|name=poly}} object. Objects such&lt;br /&gt;
as {{maxword|name=bendin}} and {{maxword|name=ctlin}} can be scaled to match different synthesizer&lt;br /&gt;
parameter ranges, and real-time MIDI commands can be used to derive tempo&lt;br /&gt;
data for LFOs and sequencers within Max. The {{maxword|name=adsr~}} object generates&lt;br /&gt;
envelope ramps based on triggers for a note-on and a note-off, making it&lt;br /&gt;
ideal for use with MIDI note-based systems.&lt;br /&gt;
&lt;br /&gt;
===See Also===&lt;br /&gt;
&lt;br /&gt;
{{maxword|name=poly}} - Allocate notes to different voices&lt;br /&gt;
&lt;br /&gt;
{{maxword|name=mtof~}} - Convert a MIDI note number to frequency at signal rate&lt;br /&gt;
&lt;br /&gt;
{{maxword|name=adsr~}} - ADSR envelope generator&lt;br /&gt;
&lt;br /&gt;
[[Category:Teaching Material]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>