The Spin files: Spin.exe - the executable file. It will run on any PC running Windows 95, Windows 98, or Windows NT. It should run on Windows 2000 as well. It should also run on Macintoshes running Virtual PC or Soft PC, but I don't think the performace will be fast enough for a proper Spin experience. Spin.txt - describes Spin SpinManual.txt (this file) - describes how to use Spin.exe Presets.spin - contains the parameter presets used by the Preset pop-up menu. Demo.spin - contains the Burning Man-centric demo sequence Background.bmp - a cute background image used by the program. Delete it to force the program to use a plain black background A brief Spin tutorial: 1) Set your screen to 1024x768 pixels or larger, if possible. The screen must also be set to display at least 16 colors. (Almost no PCs are monochrome anymore.) 2) Double-click Spin.exe (it may appear as just "Spin" in Windows) 3) The demo sequence should be running. This little piece shows off many of the animation possibilities of Spin. 4) When you're bored of the demo, select the "New" command from the File Menu. 5) Type something. You should see it in moving lights. 6) Try the various formatting commands in the Format Menu. Notice that they function just like in a word-processor program. If you select just part of your text before performing an edit, just that part will be affected. 7) Click on the "Preset" pop-up menu and choose a preset name that looks interesting. Most of the presets involve animation. Do wait a bit to see how the animation unfolds. 8) When you find a preset you like, check out what parameter settings create it. Try fooling with the parameters yourself. The parameters are admittedly rather techy. You can easily set them up so that nothing or nothing interesting is displayed. If you fool with a parameter's and don't like what you get, click on the label next to it's control to revert it to its default value. If everything seems messed up, selecting something from the Preset pop-up list will fix all. 9) To make a sequence, first open the Program panel by selecting "Program" in the View Menu. Then press the "New" button in this panel. Edit the parameters of this first command. Press "New" again to create the next one and edit again. The default command type is "new solo player". To make it so that the command does NOT kill the previous command, change it's type to "new command". 10) If your computer is too slow to run the program well, try making the display window smaller. (Most of the time the program spends is in drawing ellipses. If you make them smaller, the program speeds up dramatically.) Some concepts behind Spin * What you're seeing is a 3D simulation of a spinning cylinder with two vertical columns of 16 lights on it's edge. Here are the default metrics: cylinder radius - 2m lamp diameter - 5cm lamp spacing - 6cm spin rate - 120RPM Open the Metrics splitter (with the "Splitter" command in the View Menu) to have some fun changing these metrics. Fooling with "Viewing Distance" is particularly interesting. * Angles are measured with 0 at the left edge of the cylinder, positive angles coming toward the viewer (counter-clockwise viewed from above). Since the display area is a cylinder, horizontal position, speed, and acceleration are measured in degress, not meters or feet. * A "player" is an object with some text and a large set of parameters that determine how it is displayed, animated, and clipped. Any number of players can be playing at once. Parameters such as clipping, limited lifetime, and using multiple colors facilitate the aesthetic success of this capability. Demo.spin has many interesting examples of this. * Animation is acheived mostly by setting the various "Speed" and "Acceleration" parameters. Parameters splitter controls: text/picture selector - chooses whether text or a picture is to be displayed Text Edit Box - where text to be displayed is entered and edited. It allows most of the character formatting you'd find in a modern word-processor: bold italic underline pointsize font color Picture Load - selects a .bmp file Picture Save As - saves the current picture to a .bmp file Picture Set - resizes and/or re-initializes the current picture Picture Auto Crop - crops the outer black pixels from the current picture Picture Copy Text - sets the picture to the image of the Text Edit Box Picture Invert - inverts the colors of all the pixels in the current picture Picture Zoom In - increases the size (for editing only) of the picture Picture Zoom Out - decreases the size (for editing only) of the picture Picture Edit Box - displays the current picture. Clicking and/or dragging inside sets pixels in the picture to the current drawing color, just like in Microsoft Paint, Photoshop, and other bitmap-editing programs. Variations on the drawing behavior: using the right mouse button - causes drawing in black holding the shift key - constrains motion to fully horizontal or vertical Origin - the initial angle of the left/center/right of the current player Origin Speed - the speed at which the origin angle changes through time Origin Accel - the rate at which the Origin Speed changes Origin Spring - causes Origin Acceleration to be applied inversely in proportion to how much the current Origin differs from the initial Origin - like a real-world spring would - also adds a damping factor Width - the angle-range that the current player spans Width Speed - the speed at which the Width changes through time Width Accel - the rate at which the Width Speed changes Width Spring - Width Acceleration to be applied inversely in proportion to how much the current Width differs from the initial Width - like a real-world spring would - also adds a damping factor Auto Width - causes Width to be set automatically so that the text's XY proportions are correct whenever the text is changed Width Mirror@Zero - allows Width to go negative Width Bounce@Zero - causes Width Speed to reverse when Width reaches zero Clip Start - the angle at which the left edge of the text is clipped Clip End - the angle at which the right edge of the text is clipped Clip Start Bounce - causes Origin Speed to reverse when left edge hits Clip Start Clip End Bounce - causes Origin Speed to reverse when right edge hits Clip End Clip Origin Sync - whether Clip Start and Clip End move with Origin Projections - the number of times the player's text is drawn around the cylinder Wrap-Around - whether a player's image wraps around the cylinder when its animation takes it past zero or 360 degrees. Height - how many pixels to add to the natural height of the text Y-Shift - how many pixels to shift the image upwards Y-Shift Speed - how fast to change Y-Shift per second (very cool) Y-Shift Bounce - whether to reverse Y-Shift Speed when top or bottom reached Top - causes Y-Shift to be adujsted automatically to put the top of the text at the top row of lamps Bottom - causes Y-Shift to be adujsted automatically to put the bottom of the text at the bottom row of lamps Fit - causes Height to be set automatically to fill the vertical space Flash - the rate at which the player's image will flash (excluding the flashing caused inherently by the way Spin works) Flash Accel - the rate at which the flash rate changes Sequence splitter controls: command list - lists all the commands in the sequence, double-click a command to load it. If you make changes to a command that you don't like, double-click on it again (before loading another command) to revert it to its previous parameters. Run - runs the sequence, press again to stop it Top - runs the sequence from the first command Step - loads the next command but doesn't run New - creates a new command Delete - deletes the highlighted commands Move Earlier - moves the highlighted commands to earlier in the sequence Move Later - moves the highlighted commands to later in the sequence Command Type - what the currently-loaded command does: new solo player - kills all previous players and creates a new player new player - creates a new player change top player - changes the text and parameters of the top player kill top player - kills the last-created player kill all players - kills all active players repeat from top - jumps to the first command and continues running Death After - the number of seconds after which to kill the new player, if not selected, the player will only be killed by a kill or "new solo player" command. Death Type - the animation to perform when the player dies Next Command After - the number of seconds until the next command is executed Version history: .50 first "real" version .51 some presets fixed fixed some weird math cases broke View Metrics command .52 fixed View Metrics command fixed some Bounce at Start, Bounce at End cases tweaked presets added presets added Fit To Window command changed Spin.txt to reflect new physical machine design changed default metrics to reflect new physical machine design tweaked Demo.spin to fit new metrics .53 tweaked some presets reduced number of steps in the Viewing Angle slider .60 tweaked some presets added the Text/Picture selection buttons pictures! load any .bmp file draw directly into a bitmap changed default preset to "Static" (was "Scrollng") changed the way an image is built from the rich edit control This may fix a bug on some machines that makes every pixel white. added "decimate - long" death type .61 changed Preset Combo Box to Preset List changed Command List to load command on single click or arrow keys added Reload button to Sequence window disabled lamp shading if the screen has less than 16-bit color This is the shading applied to lamps as they wrap away from the center. added a SetTargetDevice() call in SpinBuilder.cpp This may fix our mysterious "white pixel" problem got Undo working for the rich-text-edit box most of the time at least (Windows' rich-edit control is buggy!) the Parameters window now automatically focuses on the rich-text-edit box the rich-text-edit box now only shows selection when it has focus .62 removed the SetTargetDevice() call from SpinBuilder.cpp This caused ctrl to become disabled on some systems, and it didn't fix the white-dots bug .63 worked-around "white dots" bug This bug caused the background pixels in the text-entry box to be changed to white when it's image was converted to Spin data. The solid block of white dots was all these background pixels. The work-around is to make "white" pixels not-quite white, then change all the erroneously-generated white pixels to black. This means that any previously-created .spin files with "white" text will have to have the "white" retouched. (Simply select the "white" text and select "White" from the toolbar or Format Menu.) Picture data is unaffected. If the player being edited scrolls completely off, goes to zero width, or otherwise disappears, an edit will now cause the player to be re-started. .64 changed "Repeat" command type: now takes a count repeats at corresponding "Marker" command or at the top added "Repeat Marker" command type allows for any level of nested loops tightened up the UI around Repeat, Kill, and Kill All command types added "Insert..." button in Sequence Splitter Window inserts all the commands from another .spin file into the current sequence adds or subtracts Marker commands at top as necessary the View Menu's "Persistent Trails" option is now checked by default added Gretchen's eye animation to Demo.spin (thanks!) .65 Changed the way that Pictures are positioned. Spin used to non-destructively auto-crop each Picture before centering it - meaning that the only the smallest rectangle containing all the non-black pixels were used - meaning that black pixels at the edge of the Picture were excluded. This was NOT a good idea. It meant, for example, that if an artist were animating an object moving in a circle, the black pixels at the edge of the image needed to express the motion would be ignored, causing the object to not move at all. Spin now uses all the pixels in each Picture. This means that ANIMATIONS MADE WITH PREVIOUS VERSIONS MAY NEED TO BE TOUCHED-UP. To do this, simply go to each command with a Picture and click the "Auto-Crop" button. This will perform exactly the same cropping in a permanent way that the program used to do automatically. Added ReadMe.txt to alert users the above change. Tightened-up the behavior of the Sequence Window's "Delete" button. The command left selected after "Delete" now makes more sense. Altered Demo.spin slightly Added a "Documents" folder for fun .66 Fixed this problem: If the File Menu's "New" command was invoked when a document with commands was open, the commands would be deleted but they'd still be listed. Error handling when readin corrupted document files has been improved. Fixed a problem with converting floating-point numbers to text that could cause the program to hang in very weird circumstances. (A corrupt file could cause a value of infinity or negative infinity. When the program attempted to convert it to text, one of its loops would never reach the value.) Fixed this problem: A command following a command with zero "until next" time would actually be executed a fraction of a second later. This probably wouldn't be noticed most of the time but if this capability were used to start a number of players at once, the time lag could become significant. Fixed this problem: If a sequence had markers that weren't matched by repeats, the program could have GPF fault when "Run" was executed. Fixed this problem: If a sequence had repeats that weren't matched by markers, and all of the commands in a loop had zero "until next" times, the program could hang. (This was a very unusual case.) Fixed a thread-race problem in closing a socket. (This doesn't affect the released version of Spin.exe.) .67 Improved the authenticity of the on-screen simulated display of Spin. I had been simulating using 4 arms instead of 2 by going twice as fast. Now, the display is drawn exactly how the machine will draw it. Note: You won't notice any change if "Persistent Trails" is checked, as is the default. If you're curious, you can see this change quite clearly if you view the "Metrics" panel and slow the spinner down to 60RPM or so. Changed the "Persistent Trails" display option (which is on by default) so that the screen is redrawn only once per animation step (8Hz by default). This is a less-realistic simulation but it's easier to see. In the Metrics panel, changed the "Updates Per Revolution" slider to "Animations Per Second". This much more clearly expresses the "frame rate" of the animation. In the Metrics panel, changed the "Updates Per Second" slider to "Draws Per Second". This more clearly expresses the rate at which the on-screen simulation is drawn. This parameter is now ignored when "Persistent Trails" is checked. Added a checkable item to the Operation Menu called "Auto Run". When it's checked, sequences will run automatically as soon as they are opened. This item is checked by default. If you prefer the old behavior of the program (not running by default), un-check this item. .68 Changed the preview to draw rectangles rather than ellipses. This speeds-up drawing considerably on slower computers. Populated the included "Documents" folder with a better selection of sample documents. various little changes that I've lost track of .70 Unexpectedly, it turned out that when the actual machine is running, you can see not only the lamps that are pointed towards you, you can also dimly see the ones pointed away. (This is due to the fact that the lamps are contained in a clear plastic tube that reflects some of the light backwards.) The preview now shows this. It's not only more fun to watch, it helps a lot in crafting animations that wrap all the way around the display cylinder. There is a new check-item in the File Menu called "Multiple Open". If it is checked, you can open more than one document at once. You can do this by selecting multipe files in the Open Document Dialog or by dragging multiple files into Spin's main window. When you do this, Spin will open the first document and run it (if Auto Run is checked). When the first document finishes running, it will automatically be closed (prompting to save changes if any) and the next document in the list will be opened and run. When the last document finishes, the first document will be opened and run. If the other new File Menu check-item, "Random Order" is checked, the order of the list will be re-randomized before the first document is opened. There are also new "Previous" and "Next" command-items in the File Menu that immediately change the currently displayed document to the previous or next on in the list. The number of documents "opened" and the number of the currently displayed document are shown in the lower-right-hand corner of the Status Bar. .71 Changed the Metrics window considerably: units are now english (sadly, to better correspond to the physical machine) controls are now grouped more logically there is a new check-button called "Draw Animation" The View Menu's "Persistent Trails" item has been removed. This functionality is now found in the Metrics window's "Draw Animation" check-button. When the button is out, drawing is done as quickly as possible at every animation frame. When it is in, drawing is done at a variable rate in such a way as to show the rotation of the lamps. This looks great at low spin RPM. At high (normal) RPM, this setting tends to just cause a lot of flashing. All of the Metrics and many other settings are now saved so that when you run Spin again, they'll be the same. If you want to revert a setting to its default value, click on the label to the left of (or above) its control. There is a now a "Hide All" command in the View Menu that hides the Parameters, Metrics, and Document windows at once. The Cut, Copy and Paste commands now work in the Picture editing box. This makes it a lot easier to transfer images to/from your favorite bitmap-editing program. The big text-edit box now shows selection even when the box doesn't have input focus. Keystrokes and the standard editing commands: Undo Cut Copy Paste Select All now affect the big text-edit box when no other text-edit box has input. eg: when a slider has input focus. This means you often don't have to click in the big text-edit box to edit it. A bug that would cause a spurious horizontal line to be drawn in a picture when drawing was initiated past the left edge of the picture has been fixed. When a picture is loaded, resized, set, or scaled, the zoom level is now automatically set to the optimum. The View Menu has two new commands: Background - when checked, the background image is enabled Choose Background... - allows you to choose any .bmp file as a background .72 Added commands to File Menu to better handle multiple-file-opening/queing: Previous - opens the previous file in the queue Next - opens the next file in the queue Single Play - if checked, the current file is removed from the queue after playing once Remove - removes the current file from the queue and opens the next file Delete - removes the current file from the queue and opens the next file, and actually deletes the file Additive Open - if not checked, opening a file or files will first remove all files from the queue Random Order - if checked, files in the queue are played in random order Added commands to handle the "pickup folder" used by PlayaNet: Pickup - if checked, picking up files is enabled Pickup Folder - specifies the folder from which .txt, .rtf, .bmp, and .spin files will be "picked up". All of the text-specific commands have been moved from the Edit Menu to the new Text Menu. There is a new command in the Text Menu called Rainbow that allows a sequence of colors to be easily applied to the letters or words in a text selection. There's a toolbar button for it too. There is now a toolbar button for the View Menu's Close All command.