Mapping Pitch and Amplitude to the Track Pad with Max/MSP

trackpad_to_pitch_and_amplitudeCurrently I’m taking a graduate class in Max/MSP/Jitter at the University of Minnesota with Ali Momeni. Recent experiences including a night class in July at CNMAT (the Center for New Music and Audio Technology, UC Berkeley), and this current class at the U are really opening up my eyes (and ears) to the possibilities of Max 5. As a result I’m becoming more and more convinced that this is the ideal platform for the kind of projects I’m currently interested in.

The workload in the class is intense, but I have decided to punish myself even further by committing to post the audio output of at least one Max patch per week on Audio Cookbook in a new category called One Max Patch Per Week. It’s not quite as ambitious as my One Sound Every Day project, but with my busy schedule I should be able to keep up the pace.

Here’s my first entry into this new category. It is a simple way to map the input from the track pad or a mouse to the pitch and amplitude of a sinusoidal sound wave. For the patch I used the “pictslider” object, which outputs the x and y coordinates as scaled values.

I mapped the x coordinate to pitch with a range of values between 200 and 800 Hertz, and the Y to the amplitude with the typical MIDI based values of 0 to 127. I’ve included a screen grab of the patch so you can see how simple it was to do this.

Track Pad to Pitch and Amplitude

This entry was posted in Audio News, One Max Patch Per Week and tagged by John CS Keston. Bookmark the permalink.

About John CS Keston

John CS Keston is an award winning transdisciplinary artist reimagining how music, video art, and computer science intersect. His work both questions and embraces his backgrounds in music technology, software development, and improvisation leading him toward unconventional compositions that convey a spirit of discovery and exploration through the use of graphic scores, chance and generative techniques, analog and digital synthesis, experimental sound design, signal processing, and acoustic piano. Performers are empowered to use their phonomnesis, or sonic imaginations, while contributing to his collaborative work. Originally from the United Kingdom, John currently resides in Minneapolis, Minnesota where he is a professor of Digital Media Arts at the University of St Thomas. He founded the sound design resource, AudioCookbook.org, where you will find articles and documentation about his projects and research. John has spoken, performed, or exhibited original work at New Interfaces for Musical Expression (NIME 2022), the International Computer Music Conference (ICMC 2022), the International Digital Media Arts Conference (iDMAa 2022), International Sound in Science Technology and the Arts (ISSTA 2017-2019), Northern Spark (2011-2017), the Weisman Art Museum, the Montreal Jazz Festival, the Walker Art Center, the Minnesota Institute of Art, the Eyeo Festival, INST-INT, Echofluxx (Prague), and Moogfest. He produced and performed in the piece Instant Cinema: Teleportation Platform X, a featured project at Northern Spark 2013. He composed and performed the music for In Habit: Life in Patterns (2012) and Words to Dead Lips (2011) in collaboration with the dance company Aniccha Arts. In 2017 he was commissioned by the Walker Art Center to compose music for former Merce Cunningham dancers during the Common Time performance series. His music appears in The Jeffrey Dahmer Files (2012) and he composed the music for the short Familiar Pavement (2015). He has appeared on more than a dozen albums including two solo albums on UnearthedMusic.com.

5 thoughts on “Mapping Pitch and Amplitude to the Track Pad with Max/MSP

  1. you know you can copy and paste compressed/uncompressed(preferred) max patches
    from the Edit menu.

    U can then create a new patch from File->New From Clipboard

    check out the max/msp forums on cylcing ’74
    this is how ppl trade patches

  2. Yeah. I’ve seen that done a lot. I may do that here once I start posting some more complicated examples. On the other hand the images are nice for a quick visual, so I’ll continue with that for non-Max using readers.

  3. i would like to reproduce as a lesson to myself (i’v been putting off for ages basic max msp learning) the patches you are going to work on. I notice that the screen shot does not show how you entered the x and y values-which is essential to get some sound.
    Your idea of sharing this work is a good one.

  4. Alright then, Brian. Since you’re the second person to suggest it here’s the patch. What I’ll do for future posts of this nature is to include the compressed patch in a comment rather than the post itself for the purpose of keeping the entries clean:

    {
    	"boxes" : [ 		{
    			"box" : 			{
    				"maxclass" : "pictslider",
    				"numoutlets" : 2,
    				"leftvalue" : 200,
    				"outlettype" : [ "int", "int" ],
    				"patching_rect" : [ 209.0, 128.0, 100.0, 100.0 ],
    				"id" : "obj-8",
    				"numinlets" : 2,
    				"rightvalue" : 800
    			}
    
    		}
    , 		{
    			"box" : 			{
    				"maxclass" : "ezdac~",
    				"numoutlets" : 0,
    				"patching_rect" : [ 209.0, 381.0, 45.0, 45.0 ],
    				"id" : "obj-3",
    				"numinlets" : 2
    			}
    
    		}
    , 		{
    			"box" : 			{
    				"maxclass" : "gain~",
    				"numoutlets" : 2,
    				"outlettype" : [ "signal", "int" ],
    				"interp" : 36.0,
    				"patching_rect" : [ 209.0, 284.0, 48.0, 73.0 ],
    				"id" : "obj-2",
    				"numinlets" : 2
    			}
    
    		}
    , 		{
    			"box" : 			{
    				"maxclass" : "newobj",
    				"text" : "cycle~",
    				"numoutlets" : 1,
    				"fontname" : "Arial",
    				"outlettype" : [ "signal" ],
    				"fontsize" : 12.0,
    				"patching_rect" : [ 209.0, 243.0, 45.0, 20.0 ],
    				"id" : "obj-1",
    				"numinlets" : 2
    			}
    
    		}
     ],
    	"lines" : [ 		{
    			"patchline" : 			{
    				"source" : [ "obj-1", 0 ],
    				"destination" : [ "obj-2", 0 ],
    				"hidden" : 0,
    				"midpoints" : [  ]
    			}
    
    		}
    , 		{
    			"patchline" : 			{
    				"source" : [ "obj-2", 0 ],
    				"destination" : [ "obj-3", 0 ],
    				"hidden" : 0,
    				"midpoints" : [  ]
    			}
    
    		}
    , 		{
    			"patchline" : 			{
    				"source" : [ "obj-2", 0 ],
    				"destination" : [ "obj-3", 1 ],
    				"hidden" : 0,
    				"midpoints" : [ 218.5, 366.0, 244.5, 366.0 ]
    			}
    
    		}
    , 		{
    			"patchline" : 			{
    				"source" : [ "obj-8", 0 ],
    				"destination" : [ "obj-1", 0 ],
    				"hidden" : 0,
    				"midpoints" : [  ]
    			}
    
    		}
    , 		{
    			"patchline" : 			{
    				"source" : [ "obj-8", 1 ],
    				"destination" : [ "obj-2", 0 ],
    				"hidden" : 0,
    				"midpoints" : [ 299.5, 272.0, 218.5, 272.0 ]
    			}
    
    		}
     ]
    }
    

Leave a Reply