Dumb-Proof Procedure To Adapt the Current SDK to Support Max5


    Dec 01 2017 | 5:17 pm
    Hello
    If like me you have a very small memory, and you like dumb-proof procedure, here is one I've done for adding Max5 support back to the current SDK's simplemsp~ code.
    Here it is in compressed HTML (because the forum refuses html itself)
    I'll post the content in the next comment.
    enjoy
    p

    • Dec 01 2017 | 5:18 pm
      The copy/paste loses code colouring but hey, in case you don't want to download 6.53kB...

      Nov 2017 - SDK v7.3.3 + XCode 9.1

      instructions to make your own project
      • copy the simpledsp~ folder, keeping it in the same folder (source/audio/)
      • change the name of the project file and its .c
      • launch the newly named XCode project
        • trash the missing .c in there
        • drag the renamed .c in there, accepting the default options
        • click on 'max-external' at the top of the window, and then manage schemes
          • delete the current theme with minus bottom left
          • click the top right button (autocreate schemes now)
          • close that window
        • open the .c file, and do a search and replace all, replacing 'simplemsp' by the new name of your external
        • compile - you should get an external bearing your new name, doing the basic simpledsp~ code (signal in is added to float in)
        • good idea to start a .git repos now.
      instructions to make it work in 32bit
      • add the dsp message prototype (for the 32bit audio path support) and its dsp perform routine
        • in the method prototype section declare (replacing YOURNAME by your object name):void YOURNAME_dsp(t_YOURNAME *x, t_signal **sp);t_int *YOURNAME_perform(t_int *w);
        • then add use following code down:
        • // registers a function for the 64 bit signal chain in Maxvoid YOURNAME_dsp(t_YOURNAME *x, t_signal **sp){ dsp_add(YOURNAME_perform, 4, x, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n); post("dsp32");} // perform 32bitt_int *YOURNAME_perform(t_int *w){ // transfer values from the object to local variables    t_YOURNAME *x = (t_YOURNAME *)(w[1]); // object pointer float *entree = (float *)(w[2]); // input pointer float *sortie = (float *)(w[3]); // output pointer int n = (int)(w[4]); while (n--) *sortie++ = *entree++ + x->offset; // you have to return the NEXT pointer in the array OR MAX WILL CRASH return w + 5;}
      • you need to change the declaration of the main function from void ext_main(void *r) to int C74_EXPORT main()
      • then you need to add the 'dsp' message declaration in the main function, just under the 'dsp64' one, like so:class_addmethod(c, (method)YOURNAME_dsp, "dsp",    A_CANT, 0);
      Voilà! It should work in Max5 now.