How can I save a sample in my patch?


    Feb 28 2010 | 10:10 pm
    Hello ,
    I have tried to adapt one of my max patchs into M4L, and I'm using sfplay~ to playback a sample with "embed 1" to save it... It works great in my max patch , but I can't make it happen in M4L? Is it a restriction of M4L?
    I can load the sample , but can't save it.
    Could anyone please point me the right direction?
    Thanks in advance!
    K

    • Mar 01 2010 | 3:59 pm
      I did something like this, using a pattr object with parameter mode enabled to store the name. Seems to work well:
      {
      "boxes" : [ {
      "box" : {
      "maxclass" : "comment",
      "text" : "this stores the sample, be sure this is in "parameter mode" on in the inspector",
      "linecount" : 3,
      "patching_rect" : [ 260.0, 106.0, 150.0, 48.0 ],
      "id" : "obj-17",
      "fontname" : "Arial",
      "numinlets" : 1,
      "fontsize" : 12.0,
      "numoutlets" : 0
      }
      }
      , {
      "box" : {
      "maxclass" : "comment",
      "text" : "select sample here",
      "patching_rect" : [ 76.0, 57.0, 150.0, 20.0 ],
      "id" : "obj-15",
      "fontname" : "Arial",
      "numinlets" : 1,
      "fontsize" : 12.0,
      "numoutlets" : 0
      }
      }
      , {
      "box" : {
      "maxclass" : "message",
      "text" : "open julia_sound.wav",
      "patching_rect" : [ 196.0, 405.0, 337.0, 18.0 ],
      "id" : "obj-13",
      "fontname" : "Arial",
      "numinlets" : 2,
      "fontsize" : 12.0,
      "numoutlets" : 1,
      "outlettype" : [ "" ]
      }
      }
      , {
      "box" : {
      "maxclass" : "newobj",
      "text" : "sfplay~ 2",
      "patching_rect" : [ 130.0, 429.0, 59.0, 20.0 ],
      "id" : "obj-7",
      "fontname" : "Arial",
      "numinlets" : 2,
      "fontsize" : 12.0,
      "numoutlets" : 3,
      "outlettype" : [ "signal", "signal", "bang" ],
      "save" : [ "#N", "sfplay~", "", 2, 120960, 0, "", ";" ]
      }
      }
      , {
      "box" : {
      "maxclass" : "button",
      "patching_rect" : [ 41.0, 53.0, 20.0, 20.0 ],
      "id" : "obj-6",
      "numinlets" : 1,
      "numoutlets" : 1,
      "outlettype" : [ "bang" ]
      }
      }
      , {
      "box" : {
      "maxclass" : "newobj",
      "text" : "strippath",
      "patching_rect" : [ 230.0, 252.0, 57.0, 20.0 ],
      "id" : "obj-11",
      "fontname" : "Arial",
      "numinlets" : 1,
      "fontsize" : 12.0,
      "numoutlets" : 2,
      "outlettype" : [ "", "int" ]
      }
      }
      , {
      "box" : {
      "maxclass" : "newobj",
      "text" : "prepend open",
      "patching_rect" : [ 124.0, 376.0, 85.0, 20.0 ],
      "id" : "obj-8",
      "fontname" : "Arial",
      "numinlets" : 1,
      "fontsize" : 12.0,
      "numoutlets" : 1,
      "outlettype" : [ "" ]
      }
      }
      , {
      "box" : {
      "maxclass" : "newobj",
      "varname" : "Sample1",
      "text" : "pattr Sample1",
      "patching_rect" : [ 180.0, 105.0, 67.0, 17.0 ],
      "id" : "obj-616",
      "fontname" : "Arial",
      "numinlets" : 1,
      "fontsize" : 9.0,
      "numoutlets" : 3,
      "outlettype" : [ "", "", "" ],
      "restore" : [ "Catland:/Users/UnUnUnium/Music/Samples/RAW samples/julia_sound.wav" ],
      "saved_object_attributes" : {
      "parameter_enable" : 1
      }
      ,
      "saved_attribute_attributes" : {
      "valueof" : {
      "parameter_mmin" : 0.0,
      "parameter_type" : 3,
      "parameter_initial_enable" : 0,
      "parameter_shortname" : "Sample1",
      "parameter_invisible" : 1,
      "parameter_modmax" : 127.0,
      "parameter_annotation_name" : "",
      "parameter_longname" : "Sample1",
      "parameter_modmin" : 0.0,
      "parameter_linknames" : 0,
      "parameter_modmode" : 0,
      "parameter_info" : "",
      "parameter_order" : 0,
      "parameter_units" : "",
      "parameter_speedlim" : 0,
      "parameter_steps" : 0,
      "parameter_exponent" : 1.0,
      "parameter_unitstyle" : 10,
      "parameter_mmax" : 127.0
      }
      }
      }
      }
      , {
      "box" : {
      "maxclass" : "newobj",
      "text" : "t b s",
      "patching_rect" : [ 175.0, 134.0, 33.0, 20.0 ],
      "id" : "obj-10",
      "fontname" : "Arial",
      "numinlets" : 1,
      "fontsize" : 12.0,
      "numoutlets" : 2,
      "outlettype" : [ "bang", "" ]
      }
      }
      , {
      "box" : {
      "maxclass" : "message",
      "varname" : "Sampselect1",
      "text" : ""Catland:/Users/UnUnUnium/Music/Samples/RAW samples/julia_sound.wav"",
      "patching_rect" : [ 61.0, 197.0, 548.0, 18.0 ],
      "id" : "obj-9",
      "fontname" : "Arial",
      "numinlets" : 2,
      "fontsize" : 12.0,
      "numoutlets" : 1,
      "outlettype" : [ "" ]
      }
      }
      , {
      "box" : {
      "maxclass" : "newobj",
      "text" : "opendialog",
      "patching_rect" : [ 47.0, 82.0, 56.0, 17.0 ],
      "id" : "obj-5",
      "fontname" : "Arial",
      "numinlets" : 1,
      "fontsize" : 9.0,
      "numoutlets" : 2,
      "outlettype" : [ "", "bang" ]
      }
      }
      ],
      "lines" : [ {
      "patchline" : {
      "source" : [ "obj-8", 0 ],
      "destination" : [ "obj-13", 1 ],
      "hidden" : 0,
      "midpoints" : [ 133.5, 400.0, 523.5, 400.0 ]
      }
      }
      , {
      "patchline" : {
      "source" : [ "obj-8", 0 ],
      "destination" : [ "obj-7", 0 ],
      "hidden" : 0,
      "midpoints" : [ ]
      }
      }
      , {
      "patchline" : {
      "source" : [ "obj-11", 0 ],
      "destination" : [ "obj-8", 0 ],
      "hidden" : 0,
      "midpoints" : [ ]
      }
      }
      , {
      "patchline" : {
      "source" : [ "obj-6", 0 ],
      "destination" : [ "obj-5", 0 ],
      "hidden" : 0,
      "midpoints" : [ ]
      }
      }
      , {
      "patchline" : {
      "source" : [ "obj-9", 0 ],
      "destination" : [ "obj-11", 0 ],
      "hidden" : 0,
      "midpoints" : [ ]
      }
      }
      , {
      "patchline" : {
      "source" : [ "obj-616", 0 ],
      "destination" : [ "obj-10", 0 ],
      "hidden" : 0,
      "midpoints" : [ ]
      }
      }
      , {
      "patchline" : {
      "source" : [ "obj-5", 0 ],
      "destination" : [ "obj-616", 0 ],
      "hidden" : 0,
      "midpoints" : [ ]
      }
      }
      , {
      "patchline" : {
      "source" : [ "obj-10", 1 ],
      "destination" : [ "obj-9", 1 ],
      "hidden" : 0,
      "midpoints" : [ ]
      }
      }
      , {
      "patchline" : {
      "source" : [ "obj-10", 0 ],
      "destination" : [ "obj-9", 0 ],
      "hidden" : 0,
      "midpoints" : [ ]
      }
      }
      ]
      }
    • Mar 01 2010 | 5:31 pm
      fwiw, 'embed 1' works here ok, with files anywhere on my machine. Maybe send along a simple stripped down device?
      -Ben
    • Mar 01 2010 | 6:36 pm
      for the record ben, what is the best way to achieve this with a buffer~ NOT using live.drop? for example, audio gets recorded into a buffer~ using record~. i then want a "write" button to the buffer~, AND then a save of this written file TO the live set, so whenever the set is launched again the newly written file is ready loaded. i can automate the write path fine, but of course it is still not recalled. the ability to send a full path name TO live.drop would be great in this situation. is there something i am missing?
      thanks.
    • Mar 01 2010 | 7:04 pm
      Unless i'm misunderstanding what you are wanting to do, you can just loadbang a 'replace [filepath]' message to buffer~. You just need to store the file path.
      maybe something like this:
      This would be easy to use the pattr system if you had a bunch of different states that you needed to save.
      Feel free to post a simple patch if you are still having problems.
      -Ben
    • Mar 01 2010 | 11:08 pm
      Thanks for your answers, it made me realize that for some strange reason, I had to define the file preferences path again, which is strange, because I had no problems when running my original patch straight from Max.
      Embed 1 works just fine now!
      :)
      K
    • Mar 04 2010 | 11:35 am
      Messing around with Max's file preferences, or with absolute paths, seems distinctly non Max-for-Live-like.
      What I'd like to see is some way in the LiveAPI of interrogating a clip for its audio file - then I'd just dedicate a track as a place-holder for audio files and let Live do all the file management for me.
      Or am I missing something?
    • Mar 08 2010 | 9:14 pm
      I agree there should be some kind of live.player abstraction...
      the weird thing is I didn't have to define my paths in Max5 , but I had to in Max4live...
      That I don't really get.
      A