{
	"patcher" : 	{
		"fileversion" : 1,
		"rect" : [ 25.0, 69.0, 485.0, 442.0 ],
		"bglocked" : 0,
		"defrect" : [ 25.0, 69.0, 485.0, 442.0 ],
		"openrect" : [ 0.0, 0.0, 0.0, 0.0 ],
		"openinpresentation" : 0,
		"default_fontsize" : 10.0,
		"default_fontface" : 0,
		"default_fontname" : "Arial Bold",
		"gridonopen" : 0,
		"gridsize" : [ 8.0, 8.0 ],
		"gridsnaponopen" : 0,
		"toolbarvisible" : 1,
		"boxanimatetime" : 200,
		"imprint" : 0,
		"enablehscroll" : 1,
		"enablevscroll" : 1,
		"boxes" : [ 			{
				"box" : 				{
					"maxclass" : "comment",
					"text" : "Note: the gizmo~ object must be used inside a pfft~ with an window overlap of 4 or more - using an overlap of 2 will produce an audible amount of amplitude modulation. The gizmo~ object won't do anything if you try to use it outside of a pfft~ object.",
					"linecount" : 3,
					"frgb" : [ 0.101961, 0.121569, 0.172549, 1.0 ],
					"numoutlets" : 0,
					"fontsize" : 11.0,
					"id" : "obj-44",
					"fontname" : "Arial Italic",
					"numinlets" : 1,
					"patching_rect" : [ 16.0, 376.0, 427.0, 44.0 ]
				}

			}
, 			{
				"box" : 				{
					"maxclass" : "comment",
					"text" : "<",
					"frgb" : [ 0.101961, 0.121569, 0.172549, 1.0 ],
					"numoutlets" : 0,
					"fontsize" : 10.0,
					"id" : "obj-43",
					"fontname" : "Arial",
					"numinlets" : 1,
					"patching_rect" : [ 157.0, 96.0, 19.0, 18.0 ]
				}

			}
, 			{
				"box" : 				{
					"maxclass" : "comment",
					"text" : "<",
					"frgb" : [ 0.101961, 0.121569, 0.172549, 1.0 ],
					"numoutlets" : 0,
					"fontsize" : 10.0,
					"id" : "obj-42",
					"fontname" : "Arial",
					"numinlets" : 1,
					"patching_rect" : [ 156.0, 344.0, 19.0, 18.0 ]
				}

			}
, 			{
				"box" : 				{
					"maxclass" : "comment",
					"text" : "When we're done, we perform an Inverse Fast Fourier Transform to translate the signal back into the time domain and output the resulting audio signal.",
					"linecount" : 3,
					"frgb" : [ 0.101961, 0.121569, 0.172549, 1.0 ],
					"numoutlets" : 0,
					"fontsize" : 10.0,
					"id" : "obj-41",
					"fontname" : "Arial",
					"numinlets" : 1,
					"patching_rect" : [ 168.0, 320.0, 250.0, 41.0 ]
				}

			}
, 			{
				"box" : 				{
					"maxclass" : "comment",
					"text" : "Spectral transposer",
					"linecount" : 2,
					"frgb" : [ 0.3, 0.34, 0.4, 1.0 ],
					"numoutlets" : 0,
					"textcolor" : [ 0.3, 0.34, 0.4, 1.0 ],
					"fontsize" : 10.0,
					"id" : "obj-40",
					"fontname" : "Arial Bold",
					"numinlets" : 1,
					"patching_rect" : [ 40.0, 300.0, 64.0, 29.0 ]
				}

			}
, 			{
				"box" : 				{
					"maxclass" : "comment",
					"text" : "Translate the signal from the  time domain into the frequency domain by performing a windowed Fast Fourier Transform.",
					"linecount" : 3,
					"frgb" : [ 0.101961, 0.121569, 0.172549, 1.0 ],
					"numoutlets" : 0,
					"fontsize" : 10.0,
					"id" : "obj-39",
					"fontname" : "Arial",
					"numinlets" : 1,
					"patching_rect" : [ 168.0, 84.0, 199.0, 41.0 ]
				}

			}
, 			{
				"box" : 				{
					"maxclass" : "comment",
					"text" : "Input signal",
					"frgb" : [ 0.3, 0.34, 0.4, 1.0 ],
					"numoutlets" : 0,
					"textcolor" : [ 0.3, 0.34, 0.4, 1.0 ],
					"fontsize" : 10.0,
					"id" : "obj-38",
					"fontname" : "Arial Bold",
					"numinlets" : 1,
					"patching_rect" : [ 32.0, 96.0, 67.0, 18.0 ]
				}

			}
, 			{
				"box" : 				{
					"maxclass" : "comment",
					"text" : "Output signal",
					"frgb" : [ 0.3, 0.34, 0.4, 1.0 ],
					"numoutlets" : 0,
					"textcolor" : [ 0.3, 0.34, 0.4, 1.0 ],
					"fontsize" : 10.0,
					"id" : "obj-37",
					"fontname" : "Arial Bold",
					"numinlets" : 1,
					"patching_rect" : [ 24.0, 344.0, 76.0, 18.0 ]
				}

			}
, 			{
				"box" : 				{
					"maxclass" : "comment",
					"prototypename" : "M4L.patcher-summary",
					"text" : "Frequency-domain pitch shifter",
					"frgb" : [ 0.101961, 0.121569, 0.172549, 1.0 ],
					"numoutlets" : 0,
					"fontsize" : 11.0,
					"id" : "obj-34",
					"fontname" : "Arial Bold Italic",
					"numinlets" : 1,
					"patching_rect" : [ 125.0, 14.0, 175.0, 19.0 ]
				}

			}
, 			{
				"box" : 				{
					"maxclass" : "comment",
					"prototypename" : "M4L.subpatcher-title",
					"text" : "Transposer",
					"frgb" : [ 0.3, 0.34, 0.4, 1.0 ],
					"numoutlets" : 0,
					"textcolor" : [ 0.3, 0.34, 0.4, 1.0 ],
					"fontsize" : 18.0,
					"id" : "obj-33",
					"fontname" : "Arial Bold Italic",
					"numinlets" : 1,
					"patching_rect" : [ 16.0, 8.0, 108.0, 27.0 ]
				}

			}
, 			{
				"box" : 				{
					"maxclass" : "comment",
					"text" : "The gizmo~ object performs frequency domain pitch shifting: it performs a Fast Fourier Transform on the signal, looks at the frequency bins of the analyzed signal, finds the peaks in the spectrum, and then shifts them along the frequency axis to transpose the sound. ",
					"linecount" : 3,
					"frgb" : [ 0.101961, 0.121569, 0.172549, 1.0 ],
					"numoutlets" : 0,
					"fontsize" : 11.0,
					"id" : "obj-32",
					"fontname" : "Arial Italic",
					"numinlets" : 1,
					"patching_rect" : [ 16.0, 32.0, 453.0, 44.0 ]
				}

			}
, 			{
				"box" : 				{
					"maxclass" : "comment",
					"text" : "Frequency shifting",
					"frgb" : [ 0.101961, 0.121569, 0.172549, 1.0 ],
					"numoutlets" : 0,
					"fontsize" : 10.0,
					"id" : "obj-31",
					"fontname" : "Arial Bold",
					"numinlets" : 1,
					"patching_rect" : [ 317.0, 240.0, 100.0, 18.0 ]
				}

			}
, 			{
				"box" : 				{
					"maxclass" : "comment",
					"text" : "Hz",
					"frgb" : [ 0.101961, 0.121569, 0.172549, 1.0 ],
					"numoutlets" : 0,
					"fontsize" : 10.0,
					"id" : "obj-30",
					"fontname" : "Arial Bold",
					"numinlets" : 1,
					"patching_rect" : [ 336.0, 264.0, 23.0, 18.0 ]
				}

			}
, 			{
				"box" : 				{
					"maxclass" : "comment",
					"text" : "Pitch scaling factor conversion",
					"frgb" : [ 0.101961, 0.121569, 0.172549, 1.0 ],
					"numoutlets" : 0,
					"fontsize" : 10.0,
					"id" : "obj-29",
					"fontname" : "Arial Bold",
					"numinlets" : 1,
					"patching_rect" : [ 275.0, 176.0, 159.0, 18.0 ]
				}

			}
, 			{
				"box" : 				{
					"maxclass" : "comment",
					"text" : "Transposition",
					"frgb" : [ 0.101961, 0.121569, 0.172549, 1.0 ],
					"numoutlets" : 0,
					"fontsize" : 10.0,
					"id" : "obj-28",
					"fontname" : "Arial Bold",
					"numinlets" : 1,
					"patching_rect" : [ 197.0, 128.0, 76.0, 18.0 ]
				}

			}
, 			{
				"box" : 				{
					"maxclass" : "comment",
					"text" : "The expr object contains a mathematical formula that will halve or double the pitch factor for each octave up or down that we transpose the pitch",
					"linecount" : 3,
					"frgb" : [ 0.101961, 0.121569, 0.172549, 1.0 ],
					"numoutlets" : 0,
					"fontsize" : 10.0,
					"id" : "obj-27",
					"fontname" : "Arial",
					"numinlets" : 1,
					"patching_rect" : [ 179.0, 195.0, 227.0, 41.0 ]
				}

			}
, 			{
				"box" : 				{
					"maxclass" : "comment",
					"text" : "Pitch scaling factor",
					"linecount" : 3,
					"frgb" : [ 0.101961, 0.121569, 0.172549, 1.0 ],
					"numoutlets" : 0,
					"fontsize" : 10.0,
					"id" : "obj-26",
					"fontname" : "Arial Bold",
					"numinlets" : 1,
					"patching_rect" : [ 217.0, 252.0, 46.0, 41.0 ]
				}

			}
, 			{
				"box" : 				{
					"maxclass" : "comment",
					"text" : "Number of semitones",
					"frgb" : [ 0.101961, 0.121569, 0.172549, 1.0 ],
					"numoutlets" : 0,
					"fontsize" : 10.0,
					"id" : "obj-25",
					"fontname" : "Arial Bold",
					"numinlets" : 1,
					"patching_rect" : [ 217.0, 152.0, 112.0, 18.0 ]
				}

			}
, 			{
				"box" : 				{
					"maxclass" : "flonum",
					"prototypename" : "Live",
					"numoutlets" : 2,
					"fontsize" : 10.0,
					"triscale" : 0.75,
					"outlettype" : [ "float", "bang" ],
					"id" : "obj-15",
					"fontname" : "Arial Bold",
					"numinlets" : 1,
					"patching_rect" : [ 288.0, 264.0, 48.0, 18.0 ]
				}

			}
, 			{
				"box" : 				{
					"maxclass" : "message",
					"text" : "freqshift $1",
					"numoutlets" : 1,
					"fontsize" : 10.0,
					"outlettype" : [ "" ],
					"id" : "obj-14",
					"fontname" : "Arial Bold",
					"numinlets" : 2,
					"patching_rect" : [ 288.0, 289.0, 64.0, 16.0 ]
				}

			}
, 			{
				"box" : 				{
					"maxclass" : "newobj",
					"text" : "in 3",
					"numoutlets" : 1,
					"fontsize" : 10.0,
					"outlettype" : [ "" ],
					"id" : "obj-12",
					"fontname" : "Arial Bold",
					"numinlets" : 1,
					"patching_rect" : [ 288.0, 240.0, 28.0, 18.0 ],
					"saved_object_attributes" : 					{

					}

				}

			}
, 			{
				"box" : 				{
					"maxclass" : "flonum",
					"prototypename" : "Live",
					"numoutlets" : 2,
					"fontsize" : 10.0,
					"triscale" : 0.75,
					"outlettype" : [ "float", "bang" ],
					"id" : "obj-11",
					"fontname" : "Arial Bold",
					"numinlets" : 1,
					"patching_rect" : [ 168.0, 264.0, 48.0, 18.0 ]
				}

			}
, 			{
				"box" : 				{
					"maxclass" : "newobj",
					"text" : "expr pow(2.\\, $f1/12)",
					"numoutlets" : 1,
					"fontsize" : 10.0,
					"outlettype" : [ "" ],
					"id" : "obj-7",
					"fontname" : "Arial Bold",
					"numinlets" : 1,
					"patching_rect" : [ 168.0, 176.0, 106.0, 18.0 ]
				}

			}
, 			{
				"box" : 				{
					"maxclass" : "flonum",
					"prototypename" : "Live",
					"numoutlets" : 2,
					"fontsize" : 10.0,
					"triscale" : 0.75,
					"outlettype" : [ "float", "bang" ],
					"id" : "obj-6",
					"fontname" : "Arial Bold",
					"numinlets" : 1,
					"patching_rect" : [ 168.0, 152.0, 48.0, 18.0 ]
				}

			}
, 			{
				"box" : 				{
					"maxclass" : "newobj",
					"text" : "in 2",
					"numoutlets" : 1,
					"fontsize" : 10.0,
					"outlettype" : [ "" ],
					"id" : "obj-3",
					"fontname" : "Arial Bold",
					"numinlets" : 1,
					"patching_rect" : [ 168.0, 128.0, 28.0, 18.0 ],
					"saved_object_attributes" : 					{

					}

				}

			}
, 			{
				"box" : 				{
					"maxclass" : "newobj",
					"text" : "fftout~ 1",
					"numoutlets" : 0,
					"fontsize" : 10.0,
					"id" : "obj-2",
					"fontname" : "Arial Bold",
					"numinlets" : 2,
					"patching_rect" : [ 104.0, 344.0, 50.0, 18.0 ]
				}

			}
, 			{
				"box" : 				{
					"maxclass" : "newobj",
					"text" : "fftin~ 1",
					"numoutlets" : 3,
					"fontsize" : 10.0,
					"outlettype" : [ "signal", "signal", "signal" ],
					"id" : "obj-1",
					"fontname" : "Arial Bold",
					"numinlets" : 1,
					"patching_rect" : [ 104.0, 96.0, 51.0, 18.0 ]
				}

			}
, 			{
				"box" : 				{
					"maxclass" : "newobj",
					"text" : "gizmo~",
					"numoutlets" : 2,
					"fontsize" : 10.0,
					"outlettype" : [ "signal", "signal" ],
					"id" : "obj-8",
					"fontname" : "Arial Bold",
					"numinlets" : 3,
					"patching_rect" : [ 104.0, 304.0, 50.0, 18.0 ]
				}

			}
 ],
		"lines" : [ 			{
				"patchline" : 				{
					"source" : [ "obj-14", 0 ],
					"destination" : [ "obj-8", 0 ],
					"hidden" : 0,
					"midpoints" : [  ]
				}

			}
, 			{
				"patchline" : 				{
					"source" : [ "obj-3", 0 ],
					"destination" : [ "obj-6", 0 ],
					"hidden" : 0,
					"midpoints" : [  ]
				}

			}
, 			{
				"patchline" : 				{
					"source" : [ "obj-6", 0 ],
					"destination" : [ "obj-7", 0 ],
					"hidden" : 0,
					"midpoints" : [  ]
				}

			}
, 			{
				"patchline" : 				{
					"source" : [ "obj-15", 0 ],
					"destination" : [ "obj-14", 0 ],
					"hidden" : 0,
					"midpoints" : [  ]
				}

			}
, 			{
				"patchline" : 				{
					"source" : [ "obj-12", 0 ],
					"destination" : [ "obj-15", 0 ],
					"hidden" : 0,
					"midpoints" : [  ]
				}

			}
, 			{
				"patchline" : 				{
					"source" : [ "obj-7", 0 ],
					"destination" : [ "obj-11", 0 ],
					"hidden" : 0,
					"midpoints" : [  ]
				}

			}
, 			{
				"patchline" : 				{
					"source" : [ "obj-11", 0 ],
					"destination" : [ "obj-8", 2 ],
					"hidden" : 0,
					"midpoints" : [  ]
				}

			}
, 			{
				"patchline" : 				{
					"source" : [ "obj-1", 0 ],
					"destination" : [ "obj-8", 0 ],
					"hidden" : 0,
					"midpoints" : [  ]
				}

			}
, 			{
				"patchline" : 				{
					"source" : [ "obj-1", 1 ],
					"destination" : [ "obj-8", 1 ],
					"hidden" : 0,
					"midpoints" : [  ]
				}

			}
, 			{
				"patchline" : 				{
					"source" : [ "obj-8", 0 ],
					"destination" : [ "obj-2", 0 ],
					"hidden" : 0,
					"midpoints" : [  ]
				}

			}
, 			{
				"patchline" : 				{
					"source" : [ "obj-8", 1 ],
					"destination" : [ "obj-2", 1 ],
					"hidden" : 0,
					"midpoints" : [  ]
				}

			}
 ]
	}

}
