46
Making A Slick Max Standalone Dan Nigrin Defec5ve Records So9ware Expo ’74 New York October 15, 2011

Making'A'Slick'Max'Standalone' · Making'A'Slick'Max'Standalone' Dan'Nigrin' Defec5ve'Records'So9ware' Expo'’74' New'York' October'15,'2011

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Making'A'Slick'Max'Standalone' · Making'A'Slick'Max'Standalone' Dan'Nigrin' Defec5ve'Records'So9ware' Expo'’74' New'York' October'15,'2011

Making'A'Slick'Max'Standalone'

Dan'Nigrin'

Defec5ve'Records'So9ware'

Expo'’74'

New'York'

October'15,'2011'

Page 2: Making'A'Slick'Max'Standalone' · Making'A'Slick'Max'Standalone' Dan'Nigrin' Defec5ve'Records'So9ware' Expo'’74' New'York' October'15,'2011

About'Me'

•  Late'1980�s:'club'DJ'in'Bal5more,'MD'P'industrial'/'alterna5ve'/'techno'

•  Early'1990�s:''�Glitch�'–''releases'on'mul5ple'labels:''R&S,'Fax,'Industrial'Strength,'Radikal,'AntlerPSubway…''Collabora5ons'with'Richie'Haw5n,'Lenny'Dee,'and'others.'h]p://discogs.com/ar5st/Glitch''

•  Mid'1990’s:''Created'our'own'label,'Defec5ve'Records'

•  Moved'to'Boston'

Page 3: Making'A'Slick'Max'Standalone' · Making'A'Slick'Max'Standalone' Dan'Nigrin' Defec5ve'Records'So9ware' Expo'’74' New'York' October'15,'2011

h]p://defec5verecords.com''

Page 4: Making'A'Slick'Max'Standalone' · Making'A'Slick'Max'Standalone' Dan'Nigrin' Defec5ve'Records'So9ware' Expo'’74' New'York' October'15,'2011

About'Me'

•  Defec5ve'Records'now'home'to'my'so9ware'crea5ons,'almost'all'of'which'are'Max'crea5ons'

–  VSTi%Host'P'lightweight'VST'instrument'(and'effect)'host%–  MC,202%Hack'P'program'the'Roland'MCP202’s'sequencer'

–  Major%Malfunc8on'P'PluggoPbased'�glitch�'plugin'–  Klee'Step'Sequencer'–  M,185'Step'Sequencer'–  MC,4%Hack'–'program'the'Roland'MCP4’s'sequencer'

Page 5: Making'A'Slick'Max'Standalone' · Making'A'Slick'Max'Standalone' Dan'Nigrin' Defec5ve'Records'So9ware' Expo'’74' New'York' October'15,'2011
Page 6: Making'A'Slick'Max'Standalone' · Making'A'Slick'Max'Standalone' Dan'Nigrin' Defec5ve'Records'So9ware' Expo'’74' New'York' October'15,'2011
Page 7: Making'A'Slick'Max'Standalone' · Making'A'Slick'Max'Standalone' Dan'Nigrin' Defec5ve'Records'So9ware' Expo'’74' New'York' October'15,'2011

About'Me'

•  Contributor'to'Jack'OS'X'(Mac'port'of'Jack'Audio'Connec5on'Kit,'h]p://jackosx.com')'

•  DIY'synth'builder'(x0xb0x/x0xi0,'Shruthi,'WTPA,'etc…)'

•  Day'job:'Pediatric'Endocrinologist'&'Chief'Informa5on'Officer,'Children�s'Hospital'Boston'

Page 8: Making'A'Slick'Max'Standalone' · Making'A'Slick'Max'Standalone' Dan'Nigrin' Defec5ve'Records'So9ware' Expo'’74' New'York' October'15,'2011

Presenta5on'available'at:'

h]p://defec5verecords.com/expo74/standalones.pdf''

Page 9: Making'A'Slick'Max'Standalone' · Making'A'Slick'Max'Standalone' Dan'Nigrin' Defec5ve'Records'So9ware' Expo'’74' New'York' October'15,'2011

What'I'Will'Cover'

•  Work'our'way'through'slickifyPing'an'app'–'from'very'

basic'to'slightly'less'basic'

•  NOT'going'to'talk'about'how'to'make'fancy'graphics'–'if'I'knew'how'to'make'them,'I'would!''!'

•  Will'try'to'cover'both'Mac'and'Windows''

Page 10: Making'A'Slick'Max'Standalone' · Making'A'Slick'Max'Standalone' Dan'Nigrin' Defec5ve'Records'So9ware' Expo'’74' New'York' October'15,'2011

The'original'patcher'

Page 11: Making'A'Slick'Max'Standalone' · Making'A'Slick'Max'Standalone' Dan'Nigrin' Defec5ve'Records'So9ware' Expo'’74' New'York' October'15,'2011

The'resul5ng'app'

Page 12: Making'A'Slick'Max'Standalone' · Making'A'Slick'Max'Standalone' Dan'Nigrin' Defec5ve'Records'So9ware' Expo'’74' New'York' October'15,'2011

The'resul5ng'app’s'menus'

Page 13: Making'A'Slick'Max'Standalone' · Making'A'Slick'Max'Standalone' Dan'Nigrin' Defec5ve'Records'So9ware' Expo'’74' New'York' October'15,'2011

Fix'the'app'name'

Page 14: Making'A'Slick'Max'Standalone' · Making'A'Slick'Max'Standalone' Dan'Nigrin' Defec5ve'Records'So9ware' Expo'’74' New'York' October'15,'2011

Standalone'object,''

presenta5on'mode'

Page 15: Making'A'Slick'Max'Standalone' · Making'A'Slick'Max'Standalone' Dan'Nigrin' Defec5ve'Records'So9ware' Expo'’74' New'York' October'15,'2011

Standalone'object'Inspector,'

Preferences,'Max'window,'Loadbang'

defea5ng,'etc…'

Page 16: Making'A'Slick'Max'Standalone' · Making'A'Slick'Max'Standalone' Dan'Nigrin' Defec5ve'Records'So9ware' Expo'’74' New'York' October'15,'2011

Current'status'

Page 17: Making'A'Slick'Max'Standalone' · Making'A'Slick'Max'Standalone' Dan'Nigrin' Defec5ve'Records'So9ware' Expo'’74' New'York' October'15,'2011

Window'sekngs'

Page 18: Making'A'Slick'Max'Standalone' · Making'A'Slick'Max'Standalone' Dan'Nigrin' Defec5ve'Records'So9ware' Expo'’74' New'York' October'15,'2011

Current'status'

Page 19: Making'A'Slick'Max'Standalone' · Making'A'Slick'Max'Standalone' Dan'Nigrin' Defec5ve'Records'So9ware' Expo'’74' New'York' October'15,'2011

Custom'app'icon'

icon'from'iconshock.com''

Mac:''use.icns'file'(audioPmixingPdesk.icns)'

Win:''use.ico'file'(audioPmixingPdesk.ico)'

Page 20: Making'A'Slick'Max'Standalone' · Making'A'Slick'Max'Standalone' Dan'Nigrin' Defec5ve'Records'So9ware' Expo'’74' New'York' October'15,'2011

Build'app'to'include'custom'icon'

•  “Include'File…”'in'Build'window,'navigate'to'your'icon'file'and'select'it'

•  Change'“include”'to'“appicon”'•  Now'Build'your'app'

Page 21: Making'A'Slick'Max'Standalone' · Making'A'Slick'Max'Standalone' Dan'Nigrin' Defec5ve'Records'So9ware' Expo'’74' New'York' October'15,'2011

custom'app'icon'result'

Tip:''Include'high'resolu5on'(256'x'256)'versions'within'icon'files''

Page 22: Making'A'Slick'Max'Standalone' · Making'A'Slick'Max'Standalone' Dan'Nigrin' Defec5ve'Records'So9ware' Expo'’74' New'York' October'15,'2011

Menu'tweaking'

•  menubar'object'

•  Make'an'About'My'Cool'App'entry,'and'one'

for'Documenta5on'

Page 23: Making'A'Slick'Max'Standalone' · Making'A'Slick'Max'Standalone' Dan'Nigrin' Defec5ve'Records'So9ware' Expo'’74' New'York' October'15,'2011

Defining'loca5on'of'

documenta5on'file'

Tip:''Open'any'file'by'sending'max'message'

[;'max'launchbrowser'file://Path_To_File]'

Page 24: Making'A'Slick'Max'Standalone' · Making'A'Slick'Max'Standalone' Dan'Nigrin' Defec5ve'Records'So9ware' Expo'’74' New'York' October'15,'2011

Defining'loca5on'of'

documenta5on'file'

Page 25: Making'A'Slick'Max'Standalone' · Making'A'Slick'Max'Standalone' Dan'Nigrin' Defec5ve'Records'So9ware' Expo'’74' New'York' October'15,'2011

Current'status'of'menus'

Page 26: Making'A'Slick'Max'Standalone' · Making'A'Slick'Max'Standalone' Dan'Nigrin' Defec5ve'Records'So9ware' Expo'’74' New'York' October'15,'2011

More'menu'tweaking'

•  maxinterface.json'file'

•  Mac:'within'applica5on'bundle'– Contents/support/interfaces/'

•  Windows:'next'to'applica5on'executable'– support/interfaces'

•  Save'a'copy'of'the'original'file,'in'case'you'make'mistakes!'

Page 27: Making'A'Slick'Max'Standalone' · Making'A'Slick'Max'Standalone' Dan'Nigrin' Defec5ve'Records'So9ware' Expo'’74' New'York' October'15,'2011

maxinterface.json'•  h]p://jsonviewer.stack.hu/'•  Paste'contents'of'maxinterface.json'into'“Text”'

Page 28: Making'A'Slick'Max'Standalone' · Making'A'Slick'Max'Standalone' Dan'Nigrin' Defec5ve'Records'So9ware' Expo'’74' New'York' October'15,'2011

maxinterface.json'

Page 29: Making'A'Slick'Max'Standalone' · Making'A'Slick'Max'Standalone' Dan'Nigrin' Defec5ve'Records'So9ware' Expo'’74' New'York' October'15,'2011

maxinterface.json'

Page 30: Making'A'Slick'Max'Standalone' · Making'A'Slick'Max'Standalone' Dan'Nigrin' Defec5ve'Records'So9ware' Expo'’74' New'York' October'15,'2011

maxinterface.json'edi5ng'

Page 31: Making'A'Slick'Max'Standalone' · Making'A'Slick'Max'Standalone' Dan'Nigrin' Defec5ve'Records'So9ware' Expo'’74' New'York' October'15,'2011

maxinterface.json'edi5ng'

Page 32: Making'A'Slick'Max'Standalone' · Making'A'Slick'Max'Standalone' Dan'Nigrin' Defec5ve'Records'So9ware' Expo'’74' New'York' October'15,'2011

Remove'unnecessary'files'•  Use'standalone'object'to'exclude'if'not'needed'

–  Audio'Support'–  MIDI'Support'

–  Extensions'

Page 33: Making'A'Slick'Max'Standalone' · Making'A'Slick'Max'Standalone' Dan'Nigrin' Defec5ve'Records'So9ware' Expo'’74' New'York' October'15,'2011

Remove'unnecessary'files'

Mac'–'Top'Level'

•  Leave'alone'•  PkgInfo'•  My'Cool'App.mxf'

•  MacOS'folder'

•  Info.plist'we'will'work'on'later'

Page 34: Making'A'Slick'Max'Standalone' · Making'A'Slick'Max'Standalone' Dan'Nigrin' Defec5ve'Records'So9ware' Expo'’74' New'York' October'15,'2011

Remove'unnecessary'files'

Mac'–'Frameworks'folder'

Delete'what'you'don’t'use!'

• No'Ji]er'–'delete'Ji]erAPI.framework'

• No'Javascript'–'delete'MaxJSRef.framework'

• No'audio'–'delete'MaxAudioAPI.framework'

Page 35: Making'A'Slick'Max'Standalone' · Making'A'Slick'Max'Standalone' Dan'Nigrin' Defec5ve'Records'So9ware' Expo'’74' New'York' October'15,'2011

Remove'unnecessary'files'

Mac'–'Resources'folder'

Delete'everything'except'

• My'Cool'App.icns'

• My'Cool'App.rsrc'

Page 36: Making'A'Slick'Max'Standalone' · Making'A'Slick'Max'Standalone' Dan'Nigrin' Defec5ve'Records'So9ware' Expo'’74' New'York' October'15,'2011

Remove'unnecessary'files'

Mac'–'support'folder'

mididrivers'folder'

• Not'using'General'MIDI?''Delete'

•  augraph.mxo'

• Not'using'ReWire?''Delete'

•  Midi_adrewire.mxo''

ad'folder'

•  No'need'for'Rewire?'''Delete'

•  ad_rewire.mxo'

•  MSPReWireDevice.bundle'

•  No'need'for'Non'Real5me?''Delete'

•  ad_nonreal.mxo'

Page 37: Making'A'Slick'Max'Standalone' · Making'A'Slick'Max'Standalone' Dan'Nigrin' Defec5ve'Records'So9ware' Expo'’74' New'York' October'15,'2011

Remove'unnecessary'files'

Mac'–'support'folder'

Interfaces'folder'

•  Be'sure'to'keep'maxinterface.json'

(your'custom'one!)'

•  I'also'keep'those'files'necessary'for'

Max'window'–'leave'only'what'you'

need'(experiment!)'

Page 38: Making'A'Slick'Max'Standalone' · Making'A'Slick'Max'Standalone' Dan'Nigrin' Defec5ve'Records'So9ware' Expo'’74' New'York' October'15,'2011

Remove'unnecessary'files'

Windows'

Top'level'P'leave'alone'

•  maxcrt.dll'

•  maxcrt_p.dll'

•  msvcr70.dll'

•  msvcr71.dll'

•  My'Cool'App.mxf'

support'folder'P'leave'alone'

•  MaxAPI.dll'

•  MaxAudio.dll'

ad,'interfaces'and'mididrivers'folders'

•  Same'as'Mac''

Page 39: Making'A'Slick'Max'Standalone' · Making'A'Slick'Max'Standalone' Dan'Nigrin' Defec5ve'Records'So9ware' Expo'’74' New'York' October'15,'2011

Applica5on'meta'informa5on'

Page 40: Making'A'Slick'Max'Standalone' · Making'A'Slick'Max'Standalone' Dan'Nigrin' Defec5ve'Records'So9ware' Expo'’74' New'York' October'15,'2011

Applica5on'meta'informa5on'

Mac'•  Modify'Info.plist'file'

•  Can'use'Property'List'Editor'(installed'with'Apple'Developer'Tools)'

Page 41: Making'A'Slick'Max'Standalone' · Making'A'Slick'Max'Standalone' Dan'Nigrin' Defec5ve'Records'So9ware' Expo'’74' New'York' October'15,'2011

Applica5on'meta'informa5on'

Windows'•  Must'use'resource'editor'

•  E.g.'“XN'Resource'Editor”'(free)'•  Can'also'delete'unneeded'icons'here'

Page 42: Making'A'Slick'Max'Standalone' · Making'A'Slick'Max'Standalone' Dan'Nigrin' Defec5ve'Records'So9ware' Expo'’74' New'York' October'15,'2011

Installer/Uninstaller'

Mac'•  Distribute'as'.dmg'file,'double'click'to'mount,'drag'to'Applica5ons'folder'

•  I'use'“DropDMG”'($24'USD)'–'plenty'of'other'(free)'ways'to'do'it'

•  Uninstalla5on'–'just'delete'applica5on'

Page 43: Making'A'Slick'Max'Standalone' · Making'A'Slick'Max'Standalone' Dan'Nigrin' Defec5ve'Records'So9ware' Expo'’74' New'York' October'15,'2011

Installer/Uninstaller'

Windows'•  Can'just'distribute'as'.zip,'but'slicker'to'build'installer'that'places'files'in'

right'places,'Start'menu'entries,'Registry'entries,'uninstaller,'etc…'

•  I'use'Nullso9'Scriptable'Install'System'(NSIS)'(free'and'open'source)'

•  Can'get'fancy'–'e.g.'test'to'see'if'Java'installed,'if'not,'divert'user'to'install'

it'first.'

Page 44: Making'A'Slick'Max'Standalone' · Making'A'Slick'Max'Standalone' Dan'Nigrin' Defec5ve'Records'So9ware' Expo'’74' New'York' October'15,'2011

Applica5on'Protec5on'

•  Commercial'op5on'now'available'–'but'$$'

–  h]p://www.excelso9ware.com'

•  My'approach'

–  Lots'of'small,'rela5vely'easily'defeatPable,'but'in'aggregate,'“good'

enough”'protec5ons'

–  Username/password'combo'

–  Username'is'based'on'user’s'*real*'name'or'other'creden5als'

–  Tie'authoriza5on'to'specific'machine'a]ribute'

–  If'providing'demo'version,'don’t'have'full'version'func5onality'within'it'

–  Don’t'make'the'full'version'publicly'downloadable'

–  Obfuscate'within'your'Max'patches'themselves'(in'case'people'open'up'your'collec5ves)'

–  Make'so9ware'rela5vely'cheap,'and'make'it'up'on'volume!'

Page 45: Making'A'Slick'Max'Standalone' · Making'A'Slick'Max'Standalone' Dan'Nigrin' Defec5ve'Records'So9ware' Expo'’74' New'York' October'15,'2011

Miscellaneous'

•  Why'does'doublePclicking'a'Max'patcher'launch'my'

standalone'instead'of'Max'(on'a'Mac)?'

Page 46: Making'A'Slick'Max'Standalone' · Making'A'Slick'Max'Standalone' Dan'Nigrin' Defec5ve'Records'So9ware' Expo'’74' New'York' October'15,'2011

Thank'You…'

All'at'Cycling'’74,'the'Cycling'’74'forums,'

and'the'(defunct)'Max'mailing'list!'

Presenta5on'available'at:'

h]p://defec5verecords.com/expo74/standalones.pdf'