Lobjects- Max objects for manipulation of lists of numbers. These are external objects that add functionality to the music programming language Max (www.cycling74.com) For version 5 use Lobjects_2010.dmg October 2010 All help files have been updated for readablity in 5. Some objects from the beta folder are included in the main distribution. October 2009 The main package has been checked for version 5 compatibility and updated where practical. 3 are withheld because they need total rewrites: Lgrid Lmap Lpref For version 4.5 download Lobjects_UB_10_06.dmg Oct 2007 there are several new objects and some bug fixes in the beta folder: Bug fixes on Lpad, lrem and Lmerge. a universal binary version of Lpref. This uses the plist format native to system 10. Lline - a version of line that does not repeat values on slow ramps. Llatch - a device that watches two inputs and makes one a slave to the other. This is to deal with simple control devices-- if data is changed on the left inlet, data from the right inlet is ignored until it matches the left. Lpath -- an object for smooth linear motion in GL. Lorbit -- an object for smooth orbital motion in GL. L? is expanded to process lists. Oct 2006 Lmap and Lgrid are partially converted-- they still use quickdraw calls, which makes them a bit slow. There will be a complete rewrite when max 5 is out. Several bugs fixed- logs should now report proper name in crash, assist in Byte should no longer crash mactels. Sept 2006 Universal binaries for the core objects are now found in Lobjects_universal.dmg The exceptions (Lmap, Lgrid, Lpref) should still work on Motorola machines under Max 4.6 if you install "support for old format externals" Sorce code is now posted in the /source folder. May 2004 Cross platform migration continues For Mac OSX-- download Lobjects_OSX.sit This contains X versions of the complete set of objects, help files, and a concise list of object functions. Find your MaxMSP folder in Drive/applications Put the help folder in Applications/MaxMSP:max-help there is an alias to cycling74 in applicatin support Put the lobjects folder in Library/application support/cycling74/externals Put the two objects in the startup _X folder in Library/application support/cycling74/startup For Mac ystem 9-- download Lobjects_classic.sit This contains upgraded versions of the complete set of objects, help files, and a concise list of object functions. Put the lobjects folder in externals Put the two object in the startupfolder startup Put the help folder in max-help For Windows XP Threre will be a series of small packages in the Win_objects folder. so far there's Lmaths Lpack_2 Lpack_3 Lpack_4 There's a seperate readme with installation instructions. Not all of the Lobjects have made it to windows. Lspeak, Lgrid and Lmap require extensive coding to work in windows, a chore I'm not yet ready to tackle. General notes These objects were created to facilitate my exploration of fuzzy logic techniques in compositional algorithms. I have expanded them beyond my needs, and tried to generalize them where possible, but they still possess the flavor of my original applications. A complete documentation is given in Lobjs.doc, and the help files are nearly exhaustive. Feel free to contact me via e-mail if something is unclear or appears to be broken. They divide into math processors, fuzzy operators, and other stuff. The math processors all derive from the same fundamental object, and show these common characteristics: All operations are performed member by member, and the output is a list of results. If the lists are not the same length, the output has the length of the triggering list. When things occur that are not allowed, like divide by zero or rounding off an int, I the existing value is simply passed through. Most Lobjects will store a list to be used in repeated operations. This may be initialized or fed into the right inlet. The lists in the left inlet are processed and discarded, triggering the output. The inlets will also accept constants, which are treated like a list of constants. If constants are applied to both inlets, the output will be a single constant. The Lobjects will process either ints or floats, and symbols where they make sense. (In many Lobjects, symbols can act as wild cards.) If a symbol turns up where it dosen't make sense, it is replaced by 0 (or occasionally 1) and a warning is printed in the Max window. Moany of the Lobjects are ambidextrous. That is, you can store the most often used value or list, and use the variable to trigger output. This can greatly simplify patch organization by reducing the need for trigger or swap objects. For those operations which are not commutative, I have provided symmetrical pairs. The [Lsub] helpfile illustrates this with its companion object [Lcomp]. [Ldiv] likewise has a companion, [Linvert]. Lists may contain mixes of ints and floats. Whenever an int and a float are used in an operation, the result is a float. Because these type changes are prone to cumulative errors, you may want to use Lround to keep the results predictable. I The largest list that can be processed by the Lobjects is 256 members. I you suggest break up longer batches of numbers with Lchunk, because many existing list objects bomb at larger sizes. The Lobjects won't bomb if a long list is input, but only the first 256 items will be processed. For huge amounts of data, Lpair offers a way of doing member by member operation on data streams or large lists, and Larray allows you to manage unlimited amounts of data as a simple array. The bang message will recalculate using tehe most recent inputs from right or left. The clear message will reset the internal list to 0s or 1s, whichever would allow the left list to fall through unscathed. Peter Elsea University of California, Santa Cruz Santa Cruz CA 95064 USA elsea@ucsc.edu