p.storage is a Max abstraction for use as a utility with the pattrstorage object. It enables the easy saving and recalling of presets and aims to reveal and enhance the functionality of pattrstorage through a simple user interface.
You could think of it as a plug-in for Max. It can be used 'straight out of the box' and, because its an abstraction, you can refine it further to suit your own particular needs.
p.storage works seemlessly with pattrstorage and makes numerous shortcuts to pattrstorage, for example you can:
All documentation, in addition to this page, is maintained online.
The latest version of p.storage is 5.03.
The Max 4 version is still available. It has some, but not all, of the functionality of the Max 5 version.
Download the p.storage package, unzip the contents and place the p.storage folder in your max searchpath. You might want to check out the p.storage.maxhelp patch to see it in action.
Many of the actions that you carry out in p.storage are named after the respective message that you would use with pattrstorage, so you might already be familiar with them. If you are not familiar with the pattr family then you should look at them first.
connecting to pattrstorage
To get started all you need to do is to place a copy of p.storage in your patch and connect it to a pattrstorage object by connecting the left outlet of p.storage to the left inlet of pattrstorage, and then the left outlet of pattrstorage to the left inlet of p.storage as illustrated in the image.
Note: you may want to read the current settings of the connected pattrstorage. To do so, simply use the 'initialise p.storage' command from the messages menu. You only need to do this on first connecting p.storage to pattrstorage. Thereafter, all the settings are restored automatically.
The more common commands are available from the drop down menus on the main interface of p.storage. So, to store a new preset use the store command from the store menu, to recall a preset select one from the recall menu and to delete a preset choose the preset from the delete menu..etc.
The first thing you might notice is that p.storage is designed to easily accommodate names, or 'slotnames', for your presets. You can choose to name the presets whatever you choose by entering a name into the dialogue box that appears when you select 'store'. However, its easy to auto-name them using p.storage's preset_name attribute. This way you can have a batch of presets using the same name. And, not to get confused, each new preset name will also be numbered. If you want something even quicker, just click on the button next to the store menu and a new preset is stored, named, incremented and numbered automatically.
If you change your mind about the preset you just stored and want to overwrite it, select store again from the store menu. Want to go back and insert a preset into the middle of your preset list? Easy! Select a preset and use the insert before, insert after or replace menu items. Or, if you already have a batch of presets that you want to reorder, you could use the preset manager to shuffle them around to your heart's content whilst checking the flow between each using the up and down keys of your computer keyboard. Click on the right side of p.storage to view the windows menu and select preset manager.
What about renaming presets? Again, the preset manager is your friend! Simply select the 'name' tab, click on the preset you want to rename and change it. Or, if you simply want to remove the numbering from the presets then select 'remove numbering' and they are automatically removed, leaving just the names.
Can't find the preset you're looking for amongst the hundreds that you've stored? Then search for it using the search box.
That's all there is to getting started using p.storage with presets. There's lots more that you can do with p.storage - we haven't even mentioned the client manager yet!
| p.storagemarker |
|---|
| Max reference pages | pattrstorage | pattr | pattrhub | pattrmarker | autopattr |
|---|
some other pattrstorage patches available are listed here. Please add any you think might be of interest:

Discussion
I'd like to say thanks to Perry Hoberman for his comments about p.storage. His suggestions got me motivated to add a couple of things, update it and indirectly lead me to setting up this wiki. Also thanks to everyone else who's contributed and commented. And while I'm at it, a huge bigup to Cycling and Jeremy Bernstein for developing the pattr family. Where would Max be without it? -pelado
I'm just beginning to toy around with this, and so far I love it (Perry introduced me to it). My first suggestion (I doubt it will be my only one!) is this: When a user hits the 'store' button, it'd be great if the menu displaying the preset list updated to reflect that you've just added a new one.
So, say you have 3 presets, “preset_001”, “preset_002”, and “preset_003”. If the menu is currently displaying “preset_001” and I hit “store” it should update to display “preset_004.”
Also, a question about licensing - my main reason for interest in this is for a standalone app that I'm building that I am hoping to sell some day. Obviously if I use p.storage in it, you'd at the least be credited, and we can work out if you'd like to get residuals or something for it, unless you're totally against it being used in things for sale? What are your thoughts on that?
Very impressive piece of work – I admire your patience for a rather thankless task. I have a bug report, if you are still working on this: if grab_enable is activated, it will only actually grab if you are creating a new preset at the end of your list, not if you are using a 'replace current' storage command. Trivial, I know, but I just banged my head against it, so I thought you should know.
Thanks for information! http://www.google.com