large multislider object and "preset" crashes max - help appreciated!

    Jul 14 2010 | 8:49 pm
    Hi everyone,
    I'd like to apologise for the fact that my first post is a thread regarding a problem. I was hoping to share my attempt at a wave-morphing synth with the community, but I've run into difficulties using the 'preset' object in Max/Msp 5 on Windows 7 64-bit.
    I'm implementing a technique suggested by this thread:
    whereby a series of large “multislider” objects (512 sliders) are used to fill buffers which are then interpolated using an instance of “2d.wave~”.
    The technique works well, but I would like to add the ability to store and recall custom waveforms using 'preset'. At present the multisliders are housed inside a subpatch, so I would need to connect them to preset via send and receive. Unfortunately, I have found that whenever I attempt to store the state of a multislider with a large number of sliders (=> 300, roughly), Max crashes. It works fine when the multislider is patched directly to preset, but always crashes whenever send and receive are used.
    Here's a little patch to help illustrate my problem. It would be very helpful to know whether others witness the same behaviour:
    If anyone can offer any insight, I'd really appreciate it. It won't be too much of a headache to move the multisliders into the main patch and connect them directly, but it would be helpful to know whether or not this is a software bug, a platform specific problem or an oversight on my part.
    Thanks in advance for any help or advice, here's a quick overview of my system (just in case it helps):
    Max Msp v.5.1.4 (42462) O.S. : Windows 7 64-bit Soundcard: Saffire Pro 24 Dsp Processor: i7 920 Ram: 6gb

    • Jul 14 2010 | 11:13 pm
      Hi Fen,
      Thanks for the concise report. I can repro here and will take a closer look.
    • Jul 14 2010 | 11:59 pm
      As a side note, you may want to take a look at the pattr/pattrstorage system if you are getting into more complex data storage/recall. It is far more flexible and robust.
    • Jul 15 2010 | 1:13 am
      Hi Ben,
      Thanks for your response and thanks for the advice regarding pattr/pattrstorage. I actually utilised pattr in this patch to handle data from my waveform equations, but haven't had a chance to study the broader system in any great detail. I'm still a novice really, and the [preset] object seemed like a simple means of adding a function to a patch that was more or less complete. I'll definitely look into it.
      Anyway, Max has stolen enough sleep from me for the night. I'll look forward to hearing your thoughts on the [preset] issue once you've had a chance to investigate.
      Thanks again for your help.
    • Jul 15 2010 | 1:51 am
      Here is a little example to get you started that utilizes both preset and pattr/storage:
    • Jul 15 2010 | 12:44 pm
      Hi Ben,
      Thanks for the pattr/pattrstorage example. It's a much more elegant method. Many Thanks.
    • Jul 15 2010 | 7:55 pm
      Here's a patch I made awhile back for interpolating small buffers using multislider as an "in-between", so you can easily draw and store with pattr. It also lets you load an audio file and scrub to any point in it, which then takes the selected # of samples you want and puts it into multislider and the resulting buffer~. I limited it to 1024 samples, but multislider supports up to 4095. Should work fine to just specify more.
      Also you can do all this with jit.catch~ which might be better in the long run---all the jitter FX can be applied to your audio parts, where interpolation is a simple jit.xfade between two matrices of audio data.
      Some tidying up is needed, but the idea is there and you can get some fun sounds out of it, especially by changing the playback rate. with small samples at speed 1 it sounds like stuttery clicks, but up the speed to about 4 and you're off into 80's synth land :)
    • Jul 16 2010 | 1:29 pm
      Thanks seejayjames,
      it sounds interesting. The ability to scrub the sample is something that my patch lacks at the moment, so this could prove really useful.
      I appreciate the jit.catch~/jit.xfade tips - unfortunately, I don't own Jitter at the moment.