create buffers on click?


    Feb 01 2014 | 12:45 pm
    hi, i am wondering if there is a way to create buffers on a keypress for example. so if i press key x, a buffer called buffer-x is created. additionally i want to send a replace message to that buffer and afterwards the buffer should play when key x is pressed.
    generally my main question is how i can dynamically create and name that buffer~
    hope someone has an idea to share..
    cheers, Ello

    • Feb 01 2014 | 3:13 pm
      You'll want to start with something like this.
      Take a look at [thispatcher] help file, specifically "Making new objects."
      You'll want to take the key pressed and put it into a [bag] or something and compare it against the key being pressed to see if a buffer already exists with that name. With some clever logic, it will trigger the buffer to play rather than create a new one.
    • Feb 01 2014 | 3:43 pm
      wow, thank you very much!
    • Feb 01 2014 | 7:11 pm
      hm, now i am facing the problem how to send the message to such an object. i'd need to send the replace-message to the buffer when it is created or when the according key is passed.
      and btw, how can i prepend something without the space between the original value and the prepend part?
    • Feb 02 2014 | 10:50 am
      when creating a buffer, you can give it a scripting name, so you can send it the replace message via scripting!! All in one message!!
      To remove the space between two messages "prepend orignalMessage", you could use [sprintf %s%s].
      Check to code, it's not the most elegant... but it will get you started!
      ----------begin_max5_patcher----------
      2049.3ocyas0ihaCE9YleCUstY29FcTbRbtz1G1p9TkppZetc0HSvv3tgDTh
      Y1Y2Ua6e85aARfDHvdHCZjfI1N3i+NW84X+o6l3Lq3YVkC5GP+EZxjOc2jI5
      lTMLw97DmUzmSynU5g4jydewr+wYpoKA6Ygt4p0k7bwBT0GVUrQflsYwBV4C
      eWU8.y2rhmmwD5eDrswEE4hJ9GY517t2017ZpH8Qd9xGJYoBCs4QHxtQgtgp
      uvApAi7bu2E81cSfbh6ZFxoqzyfyOWxoY0DDettM4Z46wddMWOoEYEklo089
      DxzVehaLkl4S7g0LyncbPuU0ymu6N0GSGHhlVrZEKWb.jJJ4KWxJQhBzejQ+
      .PHYXbhB6BhwZjj3dBjz8rPRbRcqKJWNS+9aIlCv1PRbrWvzN+OMNeAf4rMB
      QQ9Qwpt.kP+Ffhm6.ktZsxib5SrXFMe4kIZrhUUQWxNPz3+5bA5c9BCX78js
      qaesjANFHsJLwAVEkKi25icMKtu.dq+Uf21igTosSzLfz0IgFkbr9qjvSrz8
      NO1KFFilZDb50PKYszpIBJUEe+VhQdfpqjDCrpROBWqKYqY4ygxobjARB0di
      MdngxmbR3KoK49jnpXBz597EeAle8i0.nuVlh3ApHEzVeOFljVxnBFTZZxXR
      jrUuHM3X7LCFpDLNJZUrLjKv3gqQXATq3I.aDG1Hf+ouGklwnkneiWI.xnUP
      Tx8QjsNEi7gL923fW3veOhRJPRiAAQ26sC+78TxlPodF6MNpmBTFJCJApvPs
      5YRfdKDdPpdF6BjWvoPGHARMArxr9TL8tXbzWifgftC+nDvhln4BfUZQNKzI
      oFdF6IVYEWtOkcD4DG550MZdRiWQg2+igbBmtsIdtoI71lJYOwqe+cCjVJgQ
      gDC2TZPfmCCbLcJ4w2U+p0XLNP6CI.axlRfqYWuMPYo7vxrhz2wl2v3mDIjg
      MxykgOVIsSSEV5Xa2yYKnaxDOzM2tc+Knorde4N4jSbVVxmWjqHhVuop45oS
      t3HlLZzbwnGQNccGubkbcroZFsTgqyxXMjZkhIEEYs6ZKqTpuPy4qjw6H3Fh
      0yc6OJekNOXslHVNU9a7XUZYQVVqeJSOO0QOykb6T164yEO1xKhpG4v4qqYA
      Nawn47krJQ61DzkUsaoU99ZJF1zPPq1OpGl1VEnnTzGPeC5+PeM5qP+cI5WZ
      NrtrObDaD8toVsPK10rQdYPh64+oeaEG2dwA1LvM6nO+QSpMoZU4tPTUCL8B
      VCBQLJydj5OGHdzbEGdzUrcC5MFRcbaZIraEzvjKK.PinSw+GAjvLs8BE3Ao
      pX1H0fvB2dvhXmyXwty7aFOuOqMZxU0e2nPUwlxzZrtV3D0lzklBE77sdi9q
      c5s6MvG4ym215uwfYkx7qwQ2f3YmMMGcNzL91flwCkliABmsFRqiWwoh9Da9
      CxoPJG+.UHJ4y1HLhQMC05KMlhSGyxY3nsSh3HSdeSpL1qYzLavkae2N7me2
      NPDlH5+XFRHMe.bv7jD32TTj+M5lhDnJ4eyfM6pQQ5sYiOUcK7OKHzCPHb5U
      nJHbQAsSbz+RwwfvceB01JCARRTuiA.Qu2w5NC0tWJ3YpZlTYlbTvK3r.u.3
      .uoc80UnvIH493gq9IVijXSIkRhAUz7E8HMzuOlE7LAqDJuLxM6qV.DSVMHP
      5kgD+R6kourhqxjAZIUvTmLjJAszV+EI1XO2MUe62V+VpH+RK1XhV2CHOSli
      PBAGaR3RfoHVvjBcRzKbJzEEKWlwN2SYf8.JQ7BpsQdtmx.x1B1slVJQIoZx
      ClDD0DCgy2QehWJNjLTPlUVZJhmiJJmaNHRUJifbAhhjFDyjA7hr4CB8Dmhr
      ALqJETGRe9.Y0zjCyvj3FGfofHfj97egk95wx4R3JuZsjJwDXY.jdc7tE85z
      4QS7WykVNySYvcDE8ME.JzDwDNFT243jaPfcMM8cps7.qfYju8jIBK.huAAP
      QgTlbVQFrGR1H25n0AD+7cuEE.sQkaTo+WfOqwg5uRf8XMcKJE1qN7Emzh5S
      WbfOjgjGdil2mR4TvrmAp9OdXWdlKrp0mLKZmUJf.NCP.elxzARhL3sDOr+G
      5MpQfdMF8lE7m0UGEI++mn5Tkhds2TaHnl3TesWcTp.6gxb3DBLdnf5ru36O
      Rm8kG4U0mdAX86XC.JAziYLn57MpvfsiW86ptZgIHmeT8wq9S0m5r8nZoEKP
      +K0t5VFNx9UawxWNnJK5qbxtpmzSIVRZMlCptxgUV4.IjgROChb1mnupDTyB
      h0G8fitwnGRqQcMomjvAvvFO1U3PfmjQkacJvIbTAmSxp7FMQm83C8IKeaIJ
      quCNiD+Bu2huGiyjQifTkqC4cRDBOxHzo3YQmRgeEe95Bdtv5DkDYNn6XSQi
      iL0pS8ztIBNotgrBTWWfQBRU0a3zxb3yCQCHl8gkXu5.tae5ZfnCQONId7rq
      PFB8DddHZXPjRF02damhR19z0.QCfXE.rcnaM54T5Lj3wyQu+PrJNdQkEOD9
      EY7zHGD8DMdgIptdEmT9QSO3yvlaRh4hwny8EwbcFZ+jmm4FSZbzoe5JX8HZ
      Hw4E4Otn8Wrz39nsIJA6UnLzWee1a+T8kdv5KL3538KZH596AAWUaQ2X5ZgC
      wWVn+3Fu0IomwyVMgLzcINNziu6P2k33POCwXl+3od4OD08wbCYCAdtTsKS5
      N26NroHk8t6Z6cu0N7Nq028USNOe9t+20.M0C
      -----------end_max5_patcher-----------
      
      
    • Feb 02 2014 | 10:51 am
      Its based based on Jason's example above :)
      Nikolas
    • Feb 02 2014 | 5:43 pm
      thank you very much. that got me to the point..
    • Feb 05 2014 | 4:41 pm
      A couple things I'd recommend. 1) If all you want to do is automatically assign a key to play back an already-recorded soundfile, you might want to use sfplay~ rather than buffer~ to access the soundfile. 2) If you want to do more complex things with the sound than just play it, then perhaps buffer~ is indeed what you want, but... Rather than trying to dynamically create new objects and create names for them based on the letter of the key that has been pressed, and then trying to access them via that name later, you might want to consider creating a single buffer~ with enough memory to hold the amount of sound you intend to record, and then recording into different parts of that buffer, keeping track (in a coll) of the start and end times of each recording, and using the ASCII code of the key in question to look up those start and end times.