I stripped all the bullshit from my earlier correlation meter attempt, so here is a simple audio effect for Ableton Live that displays the phase correlation.
You can adjust the interval (just drag the number), but 200 samples seems to be a great starting point. You can download the effect here for free and dissect it if you have max-for-live. Combine it with a Utility plugin (Ableton Live -> Audio Effects -> Utility) to control your stereo image.
Back in the old days I used to have a mono flanger guitar stomp box. Of course I put it on everything, so a lot of disgustingly mangled music was emanating from my teen angst bullshit room those days. Anyways, we skip further three decades and here’s my very basic but useful similar sounding stereo max-for-live flanger. Free to download, use and edit. It uses gen~ technology. It is fully automatable in Ableton Live.
I made it for this coursera course I’m taking. Here’s a video about it with a pre-version that looked more ugly and didn’t have live.dials yet:
It’s got all kinds of meters (VU, BBC, LU, Nordic, K12, etc.) and look amazing:
So how do we get max/msp to talk to Spectre? Spectre uses AUNetSend by Apple. On the max side of things, you don’t even need to know where this Audio Unit file is. A vst~ object with AUNetSend as its only parameter works just fine:
The open message will open the Apple supplied dialog of AUNetSend, which you use to connect Spectre with max/msp. If you open it in max/msp, it will tell you it’s listening:
Just leave everything at its default. After you’ve started Spectre, go to Preferences – Audio:
Network should be [v] Enabled. Click on Configure…:
As you can see, Spectre is “Not Connected”. Select the AUNetSend in the Directory list (if it isn’t already) and click on Connect. Max will probably ask you if all this is allowed. Of course we click Allow:
Now Spectre and max/msp are connected! Yes!
All the audio you send to Spectre (via the vst~ object) will now be displayed by those gorgeous meters you selected.
Here’s the max patch just in case you want to fiddle around with it:
You need to crop an image in Photoshop or GIMP but you need some precision with the rectangular selection, so you zoom in. This makes it cumbersome to make a select, because you need to drag-hold-scroll until the lower right corner is visible. Crazy! Here’s an easier way. First select a small rectangle upper-left:
Just make sure the upper left corner is right. The lower right is random. Now find your way to the lower right of your picture. No need to hold the mouse down. Again make a small rectangular selection where only the lower right is important:
And you guessed it: the Crop command now crops as if you had selected a larger rectangle! Works in both Photoshop and GIMP:
I needed to insert an image (a photo of a signature) into an existing PDF. There are tons of tools that cost something, crippled 2-page converters or online web services that will make you tear your hair out. So here’s how to do this for free. I must warn that it takes some command line and open source hacking around.
Step 1) Convert the pages in the PDF to separate TIFF files. I did this with the free GIMP program. It runs on just about any operating system, so that shouldn’t be a problem. GIMP gives you several options for importing the PDF pages. Be sure to adjust the resolution and Open pages as images. Unless of course you love layers and know exactly what you’re doing. If you go for a default resolution of 100 dpi, you might lose some quality. Don’t worry if you get gigantic TIFF files. They’ll be compressed back later.
Step 2) Within GIMP edit the page you want to insert something into. If you can’t work with GIMP, export all the pages to TIFF and edit them in your favorite image editing program. Either way, you should end up with a separate TIFF for every page in your PDF. Exporting to TIFF in GIMP is easy if you know how. File – Export As… and then Select File Type (TIFF Image). Check if your TIFFs are all beautiful. They should have increasing names, like page01.tif, page02.tif, etc.
Step 3) Move all the TIFFs to a single temporary directory which you can access from your command line. Now we can do this in OSX or Linux. I happen to have both on my Macbook Pro. If you don’t have at least one Linux distribution at your disposal, it is time to change this. In this day and age one meddling with computers should at least know some basic Linux. The command we need is convert and it is part of a wonderful open source program called imagemagick. To install imagemagick in OSX I highly recommend homebrew. First we run of course:
osx_prompt$ brew update
Then followed by:
osx_prompt$ brew install imagemagick
Of course osx_prompt$ is the name of your OSX Terminal prompt.
In Linux (Debian in my case) it is (as a super user):
Or you may choose to run this as a normal Terminal, because your Desktop probably is not “root@debian” so you might find that your pdf is now not owned by you. Also in OSX you can now simply run:
osx_prompt$ convert -compress LZW *.tif new.pdf
There it is, a beautiful PDF to mail to the eagerly waiting other party! Two things to note:
- We do an LZW compress because else the PDF would be of a monster size. Especially for b&w page scans you can compress a lot using a simple LZW.
- If all your TIFFs end with .tiff, you can say convert -compress LZW *.tiff new.pdf of course.
Sometimes I just want to change a default icon (e.g. for a folder) in OSX. So where to do this? First you need a source image to copy. These days (OSX 10.9.4 when I write this) just about every image you can preview can be used, as well as other Application or Document icons. It wasn’t always so.
Say for instance we want to use the Blender icon for the folder it occupies in our Applications folder. The default is the boring blue folder:
I enter the Blender folder, select the actual Application and choose Command – I to get the Info window:
The trick is now to select the small upper icon and Command – C it:
You can then do the same for the Folder where all the Blender files live in…
….except this time Command – V the copied image into it:
With that out of the way, it takes just a few lines of python to control the super great fun TouchOsc iPad app (in this case its monome128 template):
# Python3 on OSX controls OSC UDP iPad client TouchOSC
# with the monome128 template.
# H.Zimmerman, July 4, 2014.
from pythonosc import osc_message_builder
from pythonosc import udp_client
# Hardcoded IP of TouchOSC on my iPad and port 9000.
# TouchOSC has monome 128 template loaded.
client = udp_client.UDPClient('192.168.178.31', 9000)
# Turn on and off 100 times.
# We start with 1, else the TouchOSC LEDs are turned off first
# which suscipiciously looks like it isn't working.
for counter in range(1, 100):
# Monome128 template has (duh) 128 buttons.
for buttonIndex in range(128):
# Build the OSC address of the pushbutton we want to control.
buttonAdr = '/1/push' + str(buttonIndex)
# Some console output for our nerdy debugging fun.
# Now construct an OSC message.
msg = osc_message_builder.OscMessageBuilder(address=buttonAdr)
msg.add_arg(int(counter % 2))
# Send it to the iPad.
# Slow down, OSX, else it's over before we know it.
I was already having a lot of fun controlling TouchOsc via UDP using max/msp.
In case you want this max patch for experimentation fun, here’s the code:
One of those things in Pro Tools I ignored for years until it dawned on me how handy this could be.
Scenario: In a post production timeline (so to be clear: this is not a song) where you work on a timecode grid with frames, some event needs sound effects. This effect happens to be a graphic that ticks away the seconds. You want a beep on every second. Now simply switching to grid mode will not necessarily align the events on the seconds. Place and align the first beep in slip mode, then switch to rel. grid with a seconds grid (see below). You can now alt-drag every next event to the next second. It’s super easy and fast!
Display the current position as regular time (HH:MM:SS). Handy if you want to use Live as regular sequencer and need to know the current position in your timeline. Also works as a floating window (many thanks to maxforlive.com user synnack for showing me how to do this!).
The max-for-live device I built for this purpose is of course hosted on maxforlive.com: