This book is for a beginner in both Max/MSP and TouchDesigner, or more broadly speaking, for a beginner in multimedia programming. Due to the advanced nature of later chapters, it can also be very helpful even for experienced users and programmers.
Cycling'74, the company that produces the software, defines it as a toolkit for audiovisual/multimedia expressions that don't demand much knowledge about programming. In fact, Max is a graphical programming language that lets us avoid the traditionally steep learning curve of text-oriented programming languages to some extent. We simply put boxes into an empty canvas, called a patcher or a patch, and connect them, patching them together.
We lose some control over what's actually happening, but there are lots of things we don't want to see and don't want to care about in typical multimedia programming. We usually don't want to deal with memory allocation when our aim is to quickly build a synthesizer, for example. A good tool for a certain task allows us to control all parameters that are of any interest for a certain task, not less and not more. For multimedia programming, Max is very close to this objective.
The real power of Max is in its modularity. Think of it like a basis, an infrastructure where you can not only patch but also embed text-oriented programming very easily. Numerous programming languages such as JavaScript, Java, Python, and others can be used within Max if we believe that a task requires these or is simply achieved quicker or better with a different approach than patching. Many people learned, for example, JavaScript simply because they wanted to improve their Max patching, so Max can serve you as a starting point to get into programming in general if you like, but only if you like. Of course, in general, it can be considered a good thing to be able to achieve a result in various ways by using different programming languages because you can always choose, and also because you have the opportunity to get many perspectives on programming methodology, problem solving, and problems themselves.
Manhattan Community College, Teacher Spring 2021, Fall 2021 Taught Multimedia Programming I (MMP210), level one course introducing students to Javascript using the p5js programming library Multimedia Programming II (MMP310), level two course continuing with Javascript programming concepts using the p5js programming library
Dot Dot DashInteractive Engineer November 2015 - April 2016
Programming interactive and generative experiences, installations and visuals for in-house development and with clients, including Doritos and Toyota
On site installation and logistics, including NFL Experience and SXSW Fader Fort
Pre-visualization simulation programming using Unity platform and Oculus Rift for projection work with Mountain Dew at Art Basel Miami
Development of prototypes involving not only software but also physical fabrication and digital hardware interaction via the Arduino platform
Visual programming and prototyping using TouchDesigner and Max/MSP
Participated in brainstorming sessions for interactive design concepts for clients
Creative Digital Production 2006-Present
Consulted with clients regarding interactive installation driven by a turntable using timecoded vinyl records to control light and sound
Consulted with clients on microcontroller choices and development for sound art production, creating physical prototypes using laser cutter and acrylic
Produced interactive lighting hardware via collaborative feedback and discussion for clients using Arduino microcontrollers, Max MSP and Pure Data
Research, consulting, prototyping and self-teaching a variety of programming languages and paradigms: C# using Unity Javascript using p5js, Tone.js Java using Processing Visual programming using Max MSP, Pure Data and Touch Designer environments Audiovisual production, using a variety of Digital Audio Work- stations and digital non-linear video editors
Designed and coded websites using HTML, CSS, Javascript and Flash. Consultation and production on graphic design and logo design for a variety of clients and businesses for digital and print mediums, using the Adobe SuiteTechnical ExperienceI have also freelanced and self taught many different technologies
Max/MSP I: Building Musical Applications
Students learn techniques for using the computer for random, procedural, and generative operations to produce a custom music app in Max/MSP. Students are introduced to basic programming concepts in a visual object-oriented environment and gain an understanding of what it means to work in a nonlinear paradigm. In this instance, the computer is used as a vehicle to design processes that exceed the limitations of traditional composition and give "under the hood" insight into many third-party software solutions commonly used for implementation in video games.
Max is a powerful platform that accommodates and connects a wide variety of tools for sound, graphics, music and interactivity using a flexible patching and programming environment. Max allows most computer users to write a simple meaningful program within a few minutes, even with limited programming knowledge. But to do something more substantial it's necessary to approach Max as an actual programming language, by taking advantage of its various mechanisms for abstracting program elements into scalable, reusable components that can be combined in increasingly powerful ways.
Within the last ten years, the landscape of free, educational programming languages designed explicitly around music has begun to bloom. While languages vary across style of programming (functional, object-oriented) and music (classical, hip-hop), all that follow enable novice programmers to sonically express themselves. SonicPi (Aaron, Blackwell, and Burnard 2016) is a live-coding language based on Ruby that enables improvisation and performance. It is bundled in the Raspbian OS resulting in widespread deployment in Raspberry Pi computers around the world, and it has been studied in UK classrooms. EarSketch (Freeman et al. 2014) is another platform that combines a digital audio workstation (DAW) with a Python or Javascript IDE (integrated development environment), and was originally designed to teach programming to urban high school students in Atlanta, Georgia using hip-hop grooves and samples. Among its innovations is the inclusion of a library of professional-quality samples enabling learners to make music through combining and remixing existing musical structures rather than adding individual notes to a blank canvas. JythonMusic (Manaris and Brown 2014) is another open source Python-based environment that has been used in college courses to teach music and programming. Beyond music-centric languages, numerous media computing environments such as AgentSheets and Alice support sound synthesis and/or audio playback in the context of programming games, animations, and/or storytelling projects (Repenning 1993; Cooper, Dann, and Pausch 2000; Guzdial 2003).
Ideally, users of a music programming environment should have the opportunity to compose entire pieces and/or perform for others using custom instruments/interfaces all while encountering code challenges that push their critical thinking skills along the way. Through this process, they can begin to theorize about and through code using musical materials and ideas they care about, testing and developing their musical intuitions and hunches as part of their creative process. Environments like EarSketch and Hyperscore (Farbood, Pasztor and Jennings, 2004) offer innovative, hierarchical methods of interaction that demonstrably achieve these goals, but we believe there is still unrealized potential for environments and educators to support parallel artistic and computational growth and then scaffold the transition process into more advanced/powerful environments. (Hyperscore is not a programming language, but a unique computer-assisted composition system that enables users to control high level structures (e.g. composition-length harmonic progressions) and lower level structures (motivic gestures) all through drawing and editing curves.)
38c6e68cf9