I had to work again today but it looks like things are going to be pretty calm for the next few days so progress should speed up again starting tomorrow. Despite that, the ability to delete tracks was added and some further linking between the animation tracks and the track setup window was done. The sound volume buttons are now functional. Things are getting pretty close to being ready for the first beta release. After the track settings are connected up the project settings will be connected to the main program. After that the ability to to organize the tracks into groups that can be shown or hidden will be added. This feature should be helpful in animations that have a large number of movements that need to be organized.
August 28 Today little issues concerning the cursor were ironed out before work started on the track colors window. It the process of working on it, it became the track settings window. This brings together all track configuration settings into one interface. It is now partially linked to the animation tracks. If you double click on an animation track's left side where it is displaying info about that track it will bring up the track settings window. Currently, you can change the track colors, rename the track, and change the track's movement type. Tomorrow, all of the rest of the features should be linked up. I don't really like how the track colors turned out. I think that I am going to reduce the number of colors used to three instead of four and maybe only to one. Perhaps I will leave that to the beta testers to decide.
August 27 Today I found the first major bugs in the program. It happened that both were discovered simultaniously and appeared to be related but after some pretty exhaustive searching through the code they turned out to be two separate issues. Both have been fixed now. Unfortunately this means that there were no new features added today but on the other hand, the program is more robust than it was yesterday.
August 26 Pan and zoom are now working from the animation tracks. A feature was added to show where frame changes are along the timeline under higher levels of magnification. Frames are indicated by vertical lines in the animation tracks now. The user can now select frames within a single track or from all tracks.
August 24 Today a color picker for the track colors was added. It is not linked up with the tracks yet but will be soon. The tracks are now properly displaying which cursor is selected and code has been added to allow for panning and zooming but it has not been fully debugged yet.
August 24 I had to attend to a bunch of other business stuff today. Even though I am trying to avoid new work while writing this program, some work comes in anyway. Tomorrow will likely be the same. In any case, the animation tracks are now properly drawing the selection and cursor. They have knowledge of what frames they are displaying and can pan and zoom when the audio graph pans and zooms. Tomorrow, if there is time, code will be added that will allow the user to pan and zoom from within the animation tracks. They will also become aware of which cursor is selected. If the selection tool is used from within an animation track, it will only select data in that track only.
August 23 The main part of the animation graph's interface is now functional. The look of it changed again since after getting the + and - buttons to work, I decided that I didn't like using them so code was written that allows you to move a little grab bar at the bottom of each animation graph to change the size of the graph. This is a lot better since now it can be sized to exactly the size that the user would want. If you are looking at this on a CRT monitor, the screenshot's text may look a little funny. This program is being written on a computer with a LCD screen that has Cleartype turned on. While it looks great on this computer, on computers with CRT monitors it will have red and blue pixels around the text. This is not part of the program and will display properly for the computer that it is run on. Hopefully today, the selection and cursor sections of the animation graph can be added.
August 22 The Project settings window is now mostly functional. It prevents users from inputting bad data. I couldn't help jumping ahead a little bit and figuring out what the animation tracks would look like. Below is a simulated screen shot of what I am going to make the animation tracks look like. They should be looking like that for real in a couple days. The standard color will be grey but the user will be able to assign other colors to animation tracks as they are put into groups. This will be useful as animations become more complicated and have more than a dozen or so movements. For example, if Servo Animator is being used to control a stage production, the stage lights could be one group, special effects elements such as flash pans or a snow machine could be in another group. Coloring the tracks will help the user find the tracks that they are looking for quickly.
August 20 Custom cursors have been implemented now for the hand, magnifying glass, and pencil. You can now use the magnifying glass in the audio waveform window to zoom in and out. The waveform window will prevent the user from zooming in past where it is displaying one frame's worth of audio for eight pixels. The zoom slider has also had this functionality added to it. In the event that you use a sound that doesn't have enough frames to meet that requirement then you just won't be able to zoom. The way that zoom was implemented was that as you click, if zoom in, you will see half of the number of frames that you previously saw and the location in the sound that you clicked will be at the center of the screen. You can also pan now using the pan tool on the audio waveform graph. A project settings window was added that will allow you to select how long your animation is if you are not using a sound. It also will allow you to set the frame rate of the animation. The loop button was removed. It is a leftover from a former client's request that there be a way to have the animation repeat after a certain amount of time. In the future, I will write a second program that will allow you to take animations created in Servo Animator and setup play schedules or allow an operator to select between animations. Finally, keyboard shortcuts were added to allow you to access all of the tool and frame select buttons.
August 19 The zoom slider was rewritten to do all of its graphics routines offscreen. This actually makes the code easier to work with since now there is only one routine to call that redraws the whole thing instead of an assortment of controls that add together to create a slider. While the slider was being rewritten its height was reduced since it seemed a little tall. The main interface now has menu items to increase or decrease the level of detail in the audio waveform. This will help in cases where a user is trying to run the program on a slower machine. The main interface now has a button to select the arrow cursor. That button and the I-beam button work. Using the I-beam you can select a portion of the audio.
August 18 All of the audio waveform graph's drawing has been moved to an offscreen buffer to avoid flicker issues duing playback and zooming. Little issues were taken care of such as it was incorrectly calculating the number of samples to draw per pixel if given a sound file that was sufficiently wrong. A bug was tracked down where if the player was playing and the zoom slider was moved or the window resized then the waveform would disappear. It turned out to be that because the OS was playing the sound file, Servo Animator couldn't read the file to redraw. This was fixed by copying the sound file when it is opened into a temp file which is deleted when the program exits. The next improvements to the program will be taking all of the zoom slider's drawing routines to an offscreen buffer because it is also having trouble with flickering. After that, code will be added to allow the user to select a section of the audio waveform. In the finished program, this is how the user will select a section of animation from all tracks.
August 16 Progress temporarily stalled on Servo Animator 2.0 as it was exceedingly difficult to figure out how to play sounds in the manner that Servo Animator needs. It has been figured out now so progress is continuing. The audio waveform graph now can play sounds. It knows where in the sound it is currently playing and displays a vertical line at that point.
August 14 Progress continued nicely yesterday. The audio waveform graph is now linked to the zoom slider. Improvements were made to both components. The zoom slider's handles moved sluggishly due to how they were coded so that part of their code was rewritten. Now they are nice and speedy. The audio waveform display has been upgraded to allow the user to select the level of detail that the audio waveform is drawn with. The detail can be anywhere from none, which is drawn as a straight line to a limit which hasn't been set yet. The purpose of this is to allow this program to run on older computers that don't have the procesing power necessary to draw the waveform as nicely as the default level. The audio waveform graph also had code added to it to remove flickering issues that it was having when the zoom slider was being moved. Now its display is 'double buffered' to prevent this sort of flicker. If things go well today, the program should be able to play the sounds that it is drawing and also allow the user to 'scrub' through the sound which will give them short previews of the sound at the cursor location.
August 13 The audio waveform graph is now re-written enough that it can display audio waveforms. It has been integrated into the main interface. Today, time willing, the audio waveform component will be linked to the zoom slider component that sits above it on the interface so that the user can pan and zoom through the waveform. Below is a screenshot of the current state of the program.
August 8 It turns out that the code that was written for the sound waveform was a Visual Basic mockup to test some functionality features. After showing the new waveform graph to some people it was determined that the slider at the top was not intuitive enough so more code was added to add little handles to it. Now its function is clearer. Work is still continuing on making it display sound waveforms. If you would be interested in beta testing or have suggestions, comments, or feature requests, please contact us.
August 5 It was discovered that the code that was written previously for the sound waveform graph has gone missing. It has been a while since work has been done on this program. The previous version had some code that was a little confusing to work with anyway. Learning from past mistakes, this new version will be better. Since Monday, work has been done on the new waveform graph. Most of it has been about the small slider at the top of the graph that allows the user to zoom in and out as well as pan through the sound. All of the internal structure for the waveform graph is now in place and it is ready for code to be added that will actually draw the waveform. After that is done then a cursor will be added, we'll make the waveform graph able to play its sound, and the SMPTE timer and waveform graph will be linked so that the SMPTE timer will show the current play location of the sound.
August 2 2004 Work has started again on Servo Animator 2.0 after a long delay. The screenshots shown on this page are actually Photoshop files that mock up the interface but now the main interface is built and the look and feel is starting to be functional. Tracks can be added, resized vertically, and scrolled now. The timer mechanism is working and properly displaying frames or SMPTE time code. The interface takes care of the width of everything properly when the window is resized. Code is written that is almost correctly drawing the sound files when they are loaded. It won't be long before there is some real animation functionality implemented. Our goal is to get at least the hobby servo control working by the end of October. Shortly afterwards will follow support for the digital portion of the Buffington Effects Hobby Servo Controller DC servo motor controller, stepper motor controller, and the audio playback controller.