ep-341 Max/MSP – Spring 2015 week 3

Connections

index_top_6_2013

(under construction)

review of Max tutorials

  • messages
  • message types
  • message order (right to left, top to bottom)
  • messages and attributes
  • inlets: passive and active
  • numbers (int/float)
  • subpatches
  • send/receive
tutorial 1
  • debugging with print and message objects
  • set, append, prepend (changing contents without sending out data)
tutorial 2: bang
  • loadbang, loadmess
  • a random thought: musicians should learn to program computers
  • Max is object oriented: objects respond to messages with methods or actions based on type of input
tutorial 3: numbers and lists
  • pack vs. oak
  • $ gets used alot
tutorial 4: toggle metro
  • time formats and the transport
  • When to use Ableton Live instead of Max
  • snippets
  • overiding arguments using the right inlet
  • hide on lock
tutorial 5:
  • debugging… watchpoints / breakpoints (in the patch cords) when debugging make sure to have auto-step off!!!!
  • trigger / bangbang (trigger video link)
tutorial 6:
  • math operations: feedback loop to make accumulator
  • how would you make a backwards keyboard?

review of Max 7 lessons

 

user Interface

Look at UI’s you have build

  • backwards violin?
  • piano with different arrangement of black/white or monochrome
  • what would you change to improve UI of your instrument?

connecting things:

rube goldberg machines: Ok go

Using Max to connect external hardware:

  • midi,
  • osc,
  • serial (Arduino)
  • web
  • hi
  • externals
  • camera (cv)
  • microphone (pitch tracking)
  • mechanical linkage?

Experiments

  • Playing notes on another computer using udpsend/udpreceive and midi
  • ad hoc networks, wifi routers
  • feedback delay case study
  • how would you make a patch that conformed everything to a pentatonic scale but kept rhythm and synchronized?

Here is a screenshot of the OSC experiment we did in class

 

Screen Shot 2015-02-23 at 8.37.39 PM

 

Here is a screenshot of the reverse Midi keyboard patch

Screen Shot 2015-02-23 at 8.40.30 PM

assignment:

Reverse engineer Plink. Build a prototype that allows two or more people to jam.

Design a project that will be due at the mid-term. Send me an email next week describing the project.

Write a patch to connect external hardware to Max (input or output)

news

There will be no class next week, February 10th.

notes

Andy Farnell, “Designing Sound” https://reactivemusic.net/?p=2480

useful skills
  • Read and understand patches (like reading musical scores)
  • Learn how to discover and research other people’s work (USB example, beatDetektor)
  • Make quick prototypes
  • Use externals and abstractions instead of writing everything yourself
  • Get your work noticed

ep-426 Interactive video – Spring 2015 week 3

The matrix

(under construction)

matrix01

Review of Jitter tutorials:

tutorial 1: play a Quicktime movie
  • bang sends a matrix (once)
  • jit.fpsgui for debugging
  • How would you play a movie play backwards?
tutorial 2: build a single plane matrix
  • Anything can be transformed into a matrix
  • Create a matrix, row by row, using math (p fillmatrix)
  • How to get and set individual cells in a matrix
  • jit.matrix
  • How would you make pixel art? a drawing program? a spectrum display?
  • A lot of specialized Jitter objects are abstractions that do what this tutorial demonstrates – i.e.., building or transforming the planes of a matrix
tutorial 3:  math operations on entire matrix/plane
  • @op (is an attribute) : was it good design in Max to have both messages and attributes?
  • scalar, vector
  • pass
  • integer/float
  • What happens in a jit.pwindow with display size smaller than the matrix?
  • upsampling/downsampling
tutorial 4:  movie playback.
  • jit.qt.movie will play back URL’s (audio and images) – but you can’t work with the sound in Max without Soundflower
  • scrubbing and looping produces interesting fx
  • hardware controllers
tutorial 5: ARGBI
  • Rearranging planes
  • 8 bit char data type 0-255
  • line object (grain size)
tutorial 6 : color
  • scalebias:  normalized 0.->1. values, not with 0-255 values (look at the subpatcher)
  • planemap attribute for jit.matrix
tutorial 7: hue and BRCOSA
  • 2 very different ways of transforming (i.e., filtering) color and light
  • Why do we seen green with emphasis and detail?
  • hue angle is a way of gradually shifting around the color wheel.
tutorial 8: simple mixing
  • jit.xfade
  • line object
tutorial 9 – more mixing
  • Using various operators to transition, with jit.op, and using jit.scalebias to scale the input values to prevent clipping
tutorial 10 – chromakey
  • doesn’t need to be green.
  • Could you do a performance where you paste yourself into a band video.
  • napoleon dynamite
  • actual green screen

Experiments

Max 7 lessons review

  • fantastic sounds
  • RGB music
  • geometric dreams

State of the art:

8W62Swc

Assignment

Design a project that will be due at the mid-term. Send me an email next week describing the project.

Continue working through the Jitter tutorials 4-12

Design a prototype of a synthesizer that generates accompaniment for animated GIF’s

News

There will be no class next week February 10th

References

Andrew Benson’s Jitter recipes: https://cycling74.com/search-results/#gsc.tab=0&gsc.q=jitter%20recipes

Screen Shot 2015-02-02 at 12.47.05 AM

Screen Shot 2015-02-02 at 12.47.30 AM

Mac OS frequency control for Softrock SDR devices

Softrock-USB-I2C-Controller

By VK6JBL (Andrew Nilsson)

Available for download at https://groups.yahoo.com/neo/groups/softrock40/files/VK6JBL/

Note: You need to join the Yahoo softrock40 group to access the link

More information about Softrock using Mac OS here: http://blog.marxy.org/2012/02/softrock-ensemble-rxtx-with-dsp-radio.html

By Peter B Marks

Note: On Mavericks you may need to unload the kext for the USB device before plugging in the Softrock:

sudo kextunload -bundle com.apple.driver.AppleUSBFTDI

Screen Shot 2015-02-01 at 1.56.18 AM

 update 3-2016

Using the method above gives error messages, similar to:

(kernel) Kext /System/Library/Extensions/AppleUSBFTDI.kext/Contents/MacOS/AppleUSBFTDI not found for unload request.
Failed to unload /System/Library/Extensions/AppleUSBFTDI.kext/Contents/MacOS/AppleUSBFTDI – (libkern/kext) not found.

Various suggestions:

Reboot the computer. Run the command again. Ignore the error message. And then try plugging in the softrock again.

Tried some variations of the command…

sudo kextunload -b /System/Library/Extensions/AppleUSBFTDI.kext/Contents/MacOS/AppleUSBFTDI

But the following one seemed to do the trick (at least for now) even though it still gives an error:

sudo kextunload -bundle-id com.FTDI.driver.FTDIUSBSerialDriver

For a more practical solution, check the FTDI manual, if it makes any sense to you.

http://www.ftdichip.com/Support/Documents/AppNotes/AN_134_FTDI_Drivers_Installation_Guide_for_MAC_OSX.pdf

 

usbsoftrock

A linux command line utility to control softrock, also  by Andrew Nilsson

Local source is in tkzic/softrock/usbsoftrock

Online repo: https://code.google.com/p/usbsoftrock/ (last updated 2/2011)

It appears that this may have the code needed to build a Max external.

Soft66lc FTDI driver issues in Mac Os

Notes: Since Mavericks, the Soft66lc SDR external has not been working in Max. Although I was not able to update the external, there is a temporary workaround.

Mac OS is hijacking the FTDI USB device with its own driver. You can unload the driver from terminal:

sudo kextunload -bundle com.apple.driver.AppleUSBFTDI

To reload the driver use “kextload”.

Here is  article from Sparkfun with details about this workaround: https://learn.sparkfun.com/tutorials/how-to-install-ftdi-drivers/mac

And a more elaborate workaround that removes the Apple driver: http://www.mommosoft.com/blog/2014/10/24/ftdi-chip-and-os-x-10-10/

Notes about latency and FTDI http://openbci.com/forum/index.php?p=/discussion/199/latency-timer-os-x-new-info-plist

The real solution involves using the new Apple driver to communicate with the device: https://developer.apple.com/library/mac/technotes/tn2315/_index.html

Or spoofing the driver with a codeless kext: http://stackoverflow.com/questions/7263648/codeless-kext-loading-problem

 

 

 

ep-426 Interactive video – Spring 2015 week 1

Interactive video programming and performance

Syllabus: https://reactivemusic.net/?p=18208

Notes

Information between words: “Palin Biden Silences” David Tinapple, 2008: http://vimeo.com/38876967

“We used to be Friends” By Benjamin Roberts: https://www.youtube.com/watch?
v=6MbJi0xtnEA

Reverse engineering example: Naoto Fushimi https://reactivemusic.net/?p=18228

frame sub
vizzie –
case study
attributes : attrui

Assignment

Read Jitter tutorials 1-3
  • Playing a quicktime movie
  • Create a Matrix
  • Math Operations on a Matrix

Also, be familiar with the difference between messages, attributes, and arguments with Max objects

Do the lessons in Max 7 that use video and computer graphics
  • fantastic sounds
  • RGB music
  • geometric dreams
Reverse engineer a prototype of one of the examples shown in class

“Palin Biden Silences” or “We used to be Friends”

Either sketch out the design, or make an example using Vizzie that demonstrates some aspect of the process.

ep-341 Max/MSP – Spring 2015 week 1

Programming interactive audio software and plugins in Max/MSP

Syllabus: https://reactivemusic.net/?p=18206

Notes

  • Making prototypes
  • Connecting things
  • Building tools
  • Design
  • Reverse engineering
  • DSP, plugins
  • Video and computer graphics
  • Experiments

Examples

 

leap motion
radio?
vine
mbta
midi osc thing / chat
frame subtraction
vizzie
voice cancellation thing
max for live – granulator or convolution reverb

show basics of max
make a spectrum analyzer
make a pitch detector tweet thing

Assignment

Read Max tutorials 1-4
  • Hello
  • Bang!
  • Numbers and Lists
  • Metro and Toggle
Build a control panel that does nothing

in Max. It should look amazing. It should be the coolest control panel you can imagine. Use any objects, colors, shapes that you can find. But… it shouldn’t actually control anything.

Be ready to show it in class next week.

Do at least two of the built-in lessons in Max 7

Pick any two.

Jitter reverse engineering case study – part 1

Case study: Adapting and transforming an interactive video performance.

under construction

Video and programming by Naoto Fushimi

Here is a case study of how you might approach an interactive video project. For example, if you had an opportunity to design a realtime visualization tool for a band.

Search

Knowing that cool video things can be designed with Max/MSP/Jitter, I opened up Google web search and typed in: jitter max

Here are the results:

Screen Shot 2015-01-18 at 12.00.05 PM

The second entry looked interesting: [Share Patch] Simple Audio Reactive Set [Max/MSP Jitter]. (It is the cool video at the top of this post). There is a link to the Max patch in the video description – but the link is broken.  So I entered the title of the video into Google: Share Patch Simple Audio Reactive Set

Here are the results:

Screen Shot 2015-01-18 at 12.02.12 PM

The second entry is a link to the Cycling 74 forum. https://cycling74.com/forums/topic/looking-for-share-patch-simple-audio-reactive-set-maxmsp-jitter/ Here I was able to find a link to a modified version of Naoto Fushimi’s Max patch – in a post by Giorgio. http://1cyjknyddcx62agyb002-c74projects.s3.amazonaws.com/files/2014/12/NAOTO.maxpat

Understanding the Max patch

Screen Shot 2015-01-18 at 9.14.08 PM

It appears that audio input is supposed to trigger the interactive graphics. But immediately on starting the audio, it begins to feedback, and there is apparently no way to stop it. I notice there is an ezadc~ object as well as an IO abstraction – but can’t quite see how they are hooked up due to the maze of segmented overlapping patch cords.

By selecting everything (<cmd> a) you can restore normal patch cords by selecting Arrange | remove all segments. After doing this, it appears that the ezadc~ is redundant, so I deleted it. Now the patch looks like this:

Screen Shot 2015-01-18 at 9.58.07 PM

Much easier to understand. In the IO abstraction I loaded an audio file and then was able to get graphic output by toggling on the metro at the top of the patch and using the 3 toggles in the center of the patch.

Screen Shot 2015-01-18 at 10.01.08 PM

It works, but how?

peakamp~

jit.catch~

3 openGL subpatches

jit.gl.gridshape

rotatexyz message