ep-4xx13 DSP – week 9

Artists and Ideas, reversibility

Reversibility

Artists: discovery, exploration, and vision

How to get ideas: John Cleese on Creativity

Assignment

(from last week)

Choose an idea for project. We will work on this over the next 3-4 weeks. Several of you have asked about designing interactive projects involving sonification, Internet API’s, environmental sensors, interactive art etc., Lets do it. Write a short description of what you would like to do and email it to me before next week’s class.

 

Convolution for the masses

HISSTools Impulse Response Toolbox in Max

By Alex Harker

notes

See this post on the Pd site by Julian Brooks:

http://lists.puredata.info/pipermail/pd-list/2012-09/097929.html

After the successful realisation of the [ipoke~] port that we recently
undertook I would like to ask if anyone would be up for some more?

This time it would be porting the HISSTools Impulse Response Toolbox.

Some (cut & pasted) bumff:
"HISSTools first release is a set of tools for working with convolution and
impulse responses in MaxMSP. This set of objects addresses various tasks,
including measuring impulse responses, spectral display from realtime data/
buffers, and buffer-based convolution, deconvolution and inversion."

About HISS here:
<a href="http://www.thehiss.org/">http://www.thehiss.org/</a>

HISSTools 2012 ICMC paper and link to the Max d/l here:
<a href="http://eprints.hud.ac.uk/14897/">http://eprints.hud.ac.uk/14897/</a>

Some chat on the max-list:
<a href="http://cycling74.com/forums/topic.php?id=42403">http://cycling74.com/forums/topic.php?id=42403</a>

Port is 3-clause-BSD.

Last time was genuinely a fantastic example of collaborative working I
thought, and a great example of our FLOSS community in action (I'm sure
there's a paper in there for someone): good people with the appropriate
skills creating super-tight code without ego or conflict.  Ace.

Big props to Matt Barber, Alex Harker, Charles (Chuck) Henry, P.A. Tremblay
and especially Katja Vetter.

Really hope some of the above have the energy to get into this again but
this is an open call for anyone who has the time and interest in
contributing to make it happen.

All good wishes,

Julian

ep-4xx13 DSP – week 8

 

reversibility

notes

Examples

  • a modem in Max

Assignment

Choose an idea for project. We will work on this over the next 3-4 weeks. Several of you have asked about designing interactive projects involving sonification, Internet API’s, environmental sensors, interactive art etc., Lets do it. Write a short description of what you would like to do and email it to me before next week’s class.

 

Use gen~ to build iOS AU effects

Summary:

  1. In Max, write a gen~ patch and export as c++ to xcode
  2. Compile AU effect in xcode (code-signing with Audiobus API key) and launch on iPad
  3. Any app which recognizes Audiobus protocol can find and use your effect.

Details…

There are instructions at http://cycling74.com/wiki/index.php?title=Gen_Code_Export_iOS – which are expanded upon here.

Preliminaries to Preliminaries…

  1. Download the gen~ tremelo effect patch which runs ‘as is’ – and is set up to work as an AU effect with controls – from here: http://designingsound.org/2013/04/a-tremolo-au-plugin-with-max – the download button is near the end of the blog post.
  2. Download the c74 sample project  Media:iOSGenFilter.zip and copy it somewhere. This will be your project folder. It contains an xcode project file  and source code for the audiobus AU wrapper thing.
[annotations to c74 wiki notes follow:]

Preliminaries

  • Download the AudioBus SDK [1] – You will need to register as a developer. (alternatively, you can clone the github archive)
  • Download The Amazing Audio Engine SDK [2] (alternatively, you can clone the github archive)
  • Download the AudioBus iOS app in order to test [3] – It costs $4.99. Install it on your iPad or iPhone/iPod
  • Obtain a temporary Audiobus API key – You can’t do this until after you finish step 9 below.

 

Building an Audiobus iOS project

  1. Duplicate the provided Xcode project – (not necessary unless you want to change the project name – you already copied it into your project folder). If you want to duplicate it – check out this stackOverflow post: http://stackoverflow.com/questions/6428247/duplicating-an-xcode-4-project
  2. Copy The Amazing Audio Engine SDK to the project folder. – Here are specifics:
    1. Launch TheAmazingAudioEngine.xcodeproj
    2. In xcode, build it
    3. In ‘products’ group  in xcode navigator, <ctrl>-click on the libTheAmazingAudioEngine.a file and open in finder.
    4. Copy this file into iosGenFilter folder inside your project folder
    5. You can close the AmazingAudioEngine project in Xcode now.
    6. Now, in finder, copy the AmazingAudioEngine folder (the one that contains .h and .m files) into the iosGenFilter folder
  3. From Audiobus SDK, copy the Audiobus folder and libAudiobus.a file to the  iosGenFilter folder
  4. Open the tremelo Max patch which you downloaded.
  5. In Max, Send gen~ the exportcode message in order to export the genpatcher as C++ code – actually do this…
    1. Using inspector on the gen~ object Choose the GenFilter folder (inside iosGenFilter folder) to save the exported code to.
    2. Lock patch and click on the exportcode message box to export the code.
  6. Launch GenFilter.xcodeproj in the iosGenFilter folder.
  7. In xcode, Change the namespace used in GenFilter.mm to match that of the exported code
    1. This means, find the statement near top of file starting with “using namespace” and make it look like this: using namespace gen_exported;
    2. (if you get a bunch of errors – then you need to find out what your exported code is called. It will be the most recent .cpp file in the GenFilter folder.)
  8. Copy your Audiobus API key to the appropriate location in AppDelegate.mm – can’t do this just yet – so skip.
  9. Connect your iPad to the computer. Build the project for iPad
  10. In ‘products’ group  in xcode navigator, <ctrl>-click on the libThe GenFilter.app file and select ‘open in finder’.
    1. <ctrl>-click GenFilter.app in finder and select ‘open package contents’. – leave this finder window open
    2. in a broswer go to http://developer.audiob.us/temporary-registration – you’ll probably need to login with your user/password set up earlier.
    3. drag the info.plist file from the finder window (step A) into the dropbox in the browser.  You should get a screen with your temporary API key. I had to do this twice to get it to work.
    4. Now copy the API key into the AppDelegate.mm file replacing the one in the following statement – it was around line 50. – re-build project to make sure you have no errors
   // Create an Audiobus instance
    self.audiobusController = [[[ABAudiobusController alloc] initWithAppLaunchURL:[NSURL URLWithString:@"genfilter.audiobus://"] apiKey:@"MTM4MDY1ODQzNSoqKkdlbkZpbHRlcioqKmdlbmZpbHRlci5hdWRpb2J1czovLw==:caS8WT1r4OmYz6t89pDq37qNi29hwFba+7+7bP8WubzyKN7Xj+tnU31/Wcaw580zQg8Jz+vC6Ha0H+qDM9JhdBxfQZ7w/R0VHrvsbZYQEJkj1bNpg2h2DfsF1mvFr6jb"] autorelease];
Now do the following steps (with iPad still connected to your computer)
  1. Launch audiobus on your iPad
  2. click the run button in xcode to launch GenFilter on your iPad
  3. In audiobus, select mic input, headphone output, and GenFilter for effect.