Tuesday 1 December 2009

ol.vstpattr vst~ wrapper

A wrapper for vst~ exposing the parameters to pattr

Tuesday 3 November 2009

ol.dinsync~ max external

I've uploaded a beta version of a new max external that i made in order to sync drum machines and sequencers that use dinsync, such as the 808, 303, 606 etc to Max.

It works with a suitable audio interface that passes DC, such as most MOTU interfaces. An added bonus is that you can slew the dinsync signal in order to make the drum machine swing.

To do this i had to solder together a cable to go from two 1/4" jack outputs on my MOTU 828 MkII to a dinsync 5 pin din connector. You can find info here about what pins to connect to what: http://www.doepfer.de/faq/gen_faq.htm#Sync

Download it here: (windows and mac, source included)

Monday 2 November 2009

Maxbuild v0-1

When i make an external, i usually duplicate an existing one. I got really tired of going through and doing find and replace in multiple files for Xcode and Visual Studio, so i decided to make a bash script and folder layout (with template projects) to automate the process.

To duplicate a project you simply have to open a terminal window, cd to your max external projects folder and type:

sh duplicate.sh [inputprojectname] [outputprojectname]


oliver-larkins-macbook-pro-15:maxbuild oli$ sh duplicate.sh mb.msp~ ol.mynewmspexternal~

The script copies your project and then goes through all the files and substitutes the old project name for the new one you specify, both in the file name and inside the files. When making changes inside the c or cpp files, the class/function/struct names etc. are substituted but tildes and dots are removed where they would cause problems for the compiler. It includes the following template externals, which have VS2008 express and Xcode 3.1 projects:

  • mb.max - a basic vanila max external
  • mb.maxobex - a basic max object with obex for pattr/attribute functionality
  • mb.maxcpp - a basic c++ max external (with obex)
  • mb.msp~ a basic vanilla msp external
  • mb.mspobex~ a basic msp object with obex for pattr/attribute functionality
  • mb.mspcpp~ a basic c++ msp external (with obex)
Thanks to Graham Wakefield for the C++ templates.

I develop Max externals first on OSX, so it made sense to do the script in bash. I expect you could do a similar thing in Windows too, maybe using cygwin or something similar.

there's a readme with instructions. At the moment this is set up for the MaxUB sdk (4.6). I will add support for the 5.x sdk in the next version.


Tuesday 1 September 2009

Synth Secrets Links

I searched for a list of direct links to the Sound on Sound Synth Secrets series. This site had a lot but was missing some intros. Here's an HTML file with all the intros to the articles, and here is the list on its own:
  1. What's In A Sound?
  2. The Physics Of Percussion
  3. Modifiers & Controllers
  4. Of Filters & Phase Relationships
  5. Further With Filters
  6. Of Responses And Resonance
  7. Envelopes, Gates & Triggers
  8. More About Envelopes
  9. An Introduction To VCAs
  10. Modulation
  11. Amplitude Modulation
  12. An Introduction To Frequency Modulation
  13. More On Frequency Modulation
  14. An Introduction To Additive Synthesis
  15. An Introduction To ESPS And Vocoders
  16. From Sample And Hold To Sample-rate Converters (1)
  17. From Sample And Hold To Sample-rate Converters (2)
  18. Priorities And Triggers
  19. Duophony
  20. Introducing Polyphony
  21. From Polyphony To Digital Synths
  22. From Springs, Plates & Buckets to Physical Modelling
  23. Formant Synthesis
  24. Synthesizing Wind Instruments
  25. Synthesizing Brass Instruments
  26. Brass Synthesis On A Minimoog
  27. Roland SH101/ARP Axxe Brass Synthesis
  28. Synthesizing Plucked Strings
  29. The Theoretical Acoustic Guitar Patch
  30. A Final Attempt To Synthesize Guitars
  31. Synthesizing Percussion
  32. Practical Percussion Synthesis
  33. Synthesizing Drums: The Bass Drum
  34. Practical Bass Drum Synthesis
  35. Synthesizing Drums: The Snare Drum
  36. Practical Snare Drum Synthesis
  37. Analysing Metallic Percussion
  38. Synthesizing Realistic Cymbals
  39. Practical Cymbal Synthesis
  40. Synthesizing Bells
  41. Synthesizing Cowbells & Claves
  42. Synthesizing Pianos
  43. Synthesizing Acoustic Pianos On The Roland JX10
  44. Synthesizing Acoustic Pianos On The Roland JX10
  45. Synthesizing Acoustic Pianos On The Roland JX10
  46. Synthesizing Strings: String Machines
  47. Synthesizing Strings, PWM & String Sounds
  48. Synthesizing Bowed Strings: the Violin family
  49. Practical Bowed-string Synthesis
  50. Practical Bowed-string Synthesis (continued
  51. Articulation & Bowed-string Synthesis
  52. Synthesizing Pan Pipes
  53. Synthesizing Simple Flutes
  54. Practical Flute Synthesis

Monday 31 August 2009

EMS Sequencer 32

EMS Sequencer 32 1, originally uploaded by olilarkin.

I uploaded some photos of one of the earliest digital sequencers made by EMS, found in a cupboard at work. Not the most exciting thing to look at but historically interesting imo. Check out those shiny switches. It works too!

Thursday 20 August 2009

Plugin Jams

I thought i would upload some old jams i made with plugins that never got finished. I loved the sounds that i got out of these half-built things, but sadly most of them are missing certain externals etc, and so no longer work. First up is groove modulator, which was a ridiculously feature-heavy step sequenced synth. It could make some fantastic evolving FM sounds. The MP3s encoding here is quite poor, sorry.

Tuesday 18 August 2009

Auto set audio driver in Max

Here's a patch i uploaded to the Cycling '74 forum recently.

If you work with different audio interfaces in max this patch can help. If you usuallly use a Firewire or USB soundcard, when you launch max without it connected, no ad driver will be selected. Then if you select your built in sound output, next time you connect your external soundcard, you'll have to select it again. This patch specifies a preffered (1st choice) soundcard, and one to use if that is not available (2nd choice). To use it specify your 1st and 2nd choices as arguments (the name needs to be exactly the same as what is repoted by adstatus. Put it in a patch in your maxstartup folder to open automatically when max starts.

Monday 17 August 2009

Lingon - keep max open

The other day I needed to find a way to restart Max automatically on OSX. For a project at work we're using Max 5 in an installation - many different sub patches are loaded dynamically by a scheduler throughout the day. The machine (a Mac pro) restarts every night, but I wanted to make Max restart as soon as it crashed, so as to minimise the downtime. We were experiencing seemingly random crashes that didn't appear to be linked to any specific piece or any specific time of day. The crashes seem to happen once or twice a month at random times and with different crash reports, even though the same schedule was played every day, therefore it was almost impossible to debug.

In order to keep Max running I used a program called Lingon which allows you to automatically restart a program once it's crashed. It's an interface to the OSX launchd daemon. The developer seems to have abandoned the project but you can still download it from here:

You can download my "keepmaxopen" launchd script here:

Once you've installed Lingon, you can put this plist file in ~/Library/LaunchAgents/

Launch Lingon, and in the section labelled myagents it should show com.olilarkin.keepmaxopen.plist. Check the enable button and restart your computer.

Now Max will boot automatically when you restart. Try quitting Max, and you will find it launches again. This is a potentially dangerous situation if you build a patch that crashes straight away as it will keep on crashing/restarting/crashing/restarting forever until you disable the script!