Auditory ¡Image ¡Model ¡for ¡iOS: ¡ a ¡real-‑6me ¡mobile ¡applica6on ¡ AIM-‑i ¡ Jieun ¡Oh ¡ November ¡30, ¡2010 ¡ Psych ¡303 ¡Project ¡Presenta6on ¡ 1 ¡
AIM: ¡development ¡history ¡ References ¡ • PaXerson, ¡Robinson, ¡Holdsworth, ¡McKeown, ¡Zhang, ¡ and ¡Allerhand ¡(1992) ¡ • PaXerson, ¡Allerhand, ¡Giguere ¡(1995) ¡ • PaXerson ¡(2000) ¡ Implementa6ons ¡ • “original” ¡version-‑ ¡Unix ¡only ¡(aim1992: ¡1985-‑1997) ¡ • C ¡version ¡for ¡batch ¡processing ¡(aim2000) ¡ • Matlab ¡versions ¡(aim2003 ¡& ¡2006) ¡ • “legacy” ¡AIM-‑C ¡(1996-‑2000) ¡ • “new” ¡AIM-‑C ¡(2010, ¡Tom ¡Walters) ¡ 2 ¡
AIM: ¡modular ¡design ¡ 1. Spectral ¡Analysis ¡ ¡ ¡ ¡ ¡Basilar ¡Membrane ¡Mo6on ¡(BMM) ¡ ¡ ¡[gammatone ¡filtering ¡or ¡PZFC: ¡cochlear ¡filter ¡bank] ¡ 2. ¡Neural ¡Encoding ¡ ¡ ¡ ¡Neural ¡Ac6vity ¡PaXern ¡(NAP) ¡ ¡ ¡[halfway ¡rec6fica6on ¡+ ¡smoothing ¡to ¡simulate ¡hair ¡cells] ¡ 3. ¡Time-‑Interval ¡Stabiliza6on ¡ ¡ ¡ ¡Stabilized ¡Auditory ¡Image ¡(SAI) ¡ ¡ ¡ ¡[strobed ¡temporal ¡integra6on ¡(or ¡autocorrela6on)] ¡ 3 ¡
AIM-‑i: ¡context ¡& ¡mo6va6ons ¡ • iOS: ¡iPod ¡Touch, ¡iPhone, ¡iPad ¡ • (ideally) ¡a ¡real-‑6me ¡mobile ¡applica6on ¡ ¡ From ¡user’s ¡POV: ¡ ¡ + ¡No ¡downloading ¡dependencies, ¡makefiles, ¡etc. ¡Simply ¡ launch ¡the ¡app ¡and ¡use ¡GUI ¡ From ¡developer’s ¡POV: ¡ ¡ + ¡No ¡need ¡to ¡worry ¡about ¡cross-‑plaiorm ¡compa6bility ¡ issues ¡(for ¡audio ¡input ¡and ¡graphics ¡output) ¡ -‑ processing ¡power ¡ -‑ flexibility ¡(i.e. ¡OpenGL ¡ES) ¡ 4 ¡
AIM-‑i: ¡implementa6on ¡overview ¡ • Taken ¡from ¡AIM-‑C: ¡ – BMM, ¡NAP, ¡Strobes, ¡SAI, ¡SSI ¡(“Modules”) ¡ – various ¡helper ¡classes ¡(“Support”) ¡ • New ¡code ¡specific ¡to ¡AIM-‑i: ¡ I. ¡Audio ¡Input ¡Module ¡ II. ¡Graphics ¡Output ¡Module ¡ (with ¡OpenGL ¡ES1) ¡ III. ¡The ¡“glue” ¡ IV. ¡UI ¡ • Link ¡All ¡Modules: ¡ Input ¡=> ¡BMM ¡=> ¡NAP ¡=> ¡Strobes ¡=> ¡SAI ¡=> ¡SSI ¡ ¡=> ¡output ¡ 5 ¡
I. ¡Audio ¡Input ¡Module ¡ ModuleiPhoneInput.h/.cc ¡ ¡ (subclass ¡of ¡aimc::Module) ¡ ¡ Part ¡I ¡(in ¡ES1Renderer.mm): ¡ ¡ • ¡Access ¡input ¡audio ¡buffer ¡using ¡MoMu’s ¡MoAudio ¡and ¡save ¡as ¡ float* ¡Globals::inputBuffer ¡ Par ¡II ¡(in ¡ModuleiPhoneInput.cc): ¡ ¡ • ¡Push ¡data ¡to ¡process ¡through ¡the ¡modules ¡chain ¡ 6 ¡
II. ¡Graphics ¡Output ¡Module ¡ ModuleiPhoneOutput.h/.cc ¡ ¡ (subclass ¡of ¡aimc::Module) ¡ ¡ ¡ Part ¡I ¡(in ¡ModuleiPhoneOutput.cc): ¡Populate ¡vector<float*> ¡Globals::outputV2 ¡ • 7 ¡
II. ¡Graphics ¡Output ¡Module ¡ (cont.) ¡ ModuleiPhoneOutput.h/.cc ¡ ¡ (subclass ¡of ¡aimc::Module) ¡ ¡ ¡ Part ¡II ¡(in ¡ES1Renderer.mm): ¡Render ¡Globals::outputV2 ¡ ¡ • 8 ¡
III. ¡The ¡“glue” ¡ Globals.h/.mm ¡ Globals ¡class ¡(sta6c ¡global ¡variables) ¡& ¡AIM ¡class ¡(sta6c ¡func6on ¡runAIM) ¡ AIM::runAIM() ¡spawned ¡as ¡a ¡thread ¡ 9 ¡
IV. ¡UI ¡ MainViewController.h/.mm ¡+ ¡FlipViewController.h/.mm ¡ 10 ¡
acknowledgment ¡ • Dick ¡Lyon ¡ – introducing ¡me ¡to ¡AIM ¡ – feedback ¡and ¡advice ¡on ¡project ¡proposal ¡ • Tom ¡Walters ¡ – AIM-‑C ¡code ¡and ¡documenta6ons ¡ – advice ¡& ¡sugges6ons ¡over ¡email ¡and ¡in ¡person ¡ • Music ¡| ¡Compu6ng ¡| ¡Design ¡at ¡CCRMA ¡ – iOS ¡devices ¡and ¡developer ¡account ¡ – Mobile ¡Music ¡Toolkit ¡ 11 ¡
12 ¡
Recommend
More recommend