Z-Systems Logo

Z-Systems

Think Logically

Z-Systems Developer Blog

Stories and information from the developer

Finestra 2 and the Future

23. September 2011 21:24 | by Z-Human Permalink | Comments (0)

Last weekend, I spent quite a bit of time pushing out the new releases of Finestra, 2.0, and 2.1 shortly thereafter. When I first began work on version 2, I was actually planning to make a simple iterative 1.x release. However, after rereading some of the suggestions made during the past couple of months, I decided to make some fairly large changes to the overall architecture.

In a word, plugins. Like many growing software projects, I was finding it harder to add new functionality without breaking the many interdependencies that had grown between older features. The answer was simple, but it took a bit of time to implement. I split the code base into a bunch of discrete components that did not depend on anything other than the main virtual desktop component. I also implemented a simple plugin model that all of the components use and a plugin loader that automatically seeks out new plugin classes that are loaded at runtime. The end result is a model that is easier to maintain, and easy to develop against.

Currently, only plugins internal to the code base are loaded. In the near future, I plan to make plugins more of an open-ended feature, where you will be able to develop plugins that can be downloaded and used by users without having to install a custom version of Finestra. I will be writing more about this once it is done. For now, if you want to implement a plugin, you will have to submit all of the code for the plugin as a patch to the main Finestra project.

Now for some news on features to come (in the form of integrated plugins, of course). First up is the ability to switch desktops when your mouse hits the edge of your screen. This has been a long-standing work in progress, although no one that hasn’t played directly with the code has seen it. I’ve tried a couple of different approaches for telling when the mouse hits the edge of the screen, such as a low-level mouse hook and a polling timer. Neither is really something I want to use, so more work is needed. The problem with using a low-level mouse hook is that it can make your mouse cursor move more slowly since Finestra code gets run every time you move the mouse (for every pixel of movement, and every click, etc.). Polling timers, likewise, are almost a bad idea, and there isn’t really a good way to get the timing right in this case without running the timer fairly quickly. This can drain battery life on laptops, slow down the machine, and more. Hopefully I’ll be able to solve this issue relatively quickly.

Another feature that is on the drawing board for the next feature-oriented release is the ability to persist different desktop icons for each virtual desktop. This has been a highly-requested feature over the years, but it poses a lot of problems, both technical and interaction-wise. For example, when you exit Finestra, should it just display all icons that appeared on all desktops? Should each virtual desktop just hide/show the icons in different arrangements from the original desktop? Or should each desktop start with a completely clean slate? I will be making these decisions fairly soon, so feel free to share your input (especially any technical preferences) on the issue.

Z-Maestro: New 32-Bit Mixing Engine

22. February 2011 09:29 | by Z-Human Permalink | Comments (0)

It is officially implemented: current development builds of Z-Maestro now do all of their mixing using 32-bit floating point arithmetic. What does this mean and how does it differ from the previous mixing engine?

Well, up until now, Z-Maestro has always done all of its audio mixing and editing using 16-bit signed integers. For output, this isn’t a huge problem. After all, CDs are all in 16-bit 44100 Hz stereo. Few people can actually claim to hear a difference between 16-bit and, say, 24-bit output. However, there are a lot of reasons to move to higher bitrates.

The biggest reason is that in the mixing stage, there is often a lot of math that goes on. This includes divisions, multiplications, and additions. With 16-bit integers, all of this up and down arithmetic can actually degrade the quality of the output a tiny bit. With particularly complicated audio effects, it can actually become noticeable. In order to combat this in the past, most audio effects up-converted their inputs to 32-bit float, did the math, and then down-converted the signal back to 16-bit integers.

Of course, doing all of this conversion is a little expensive performance-wise, so it makes sense to eliminate it. Another reason to switch was that we wanted Z-Maestro to be able to support 24-bit output. Modern computers don’t work well with raw 24-bit data, but they do work with 32-bit data.

Lastly, editing can also introduce artifacts when using 16-bit data. Now that we have switched to 32-bit floats, the audio editor will be able to perform much more accurate edits without much possibility of aliasing artifacts.

Finestra 1.0 and 1.1

9. February 2011 22:53 | by Z-Human Permalink | Comments (0)

In just three short days, Finestra has had two releases. How’s that for a release cycle? First, and years after the original project began, Finestra has reached 1.0. I think this release really lives up to the title of the world’s favorite virtual desktop program for Windows. This release added Windows 7 taskbar support, new graphics, and a ton of performance and usability enhancements. In short, it was a great release, very stable and streamlined.

Of course, as with all big releases, there was a lot of immediate feedback for several small tweaks. For example, while it had been on the to-do list, adding an option to disable taskbar switching on Windows 7 had slipped my mind. There were also a couple of small bug fixes that needed to be fixed, so it was decided that a quick second release should be made.

Besides bug fixes, you will also find that version 1.1, released yesterday, is even faster than the 1.0 release when switching desktops due to a small performance tweak that had been overlooked previously. Technical note: Finestra now caches process names from process IDs as the name lookup turned out after some performance testing to be very slow. Switching desktops is now nearly instantaneous, even for people like myself with dozens of open windows. Performance has always been a big deal for virtual desktops programs, and Finestra is no different. If you have any kind of performance issue while using Finestra, it is a bug, and did not show up in testing. In that case, you can open an issue in the issue tracker and we’ll try to get to the bottom of it.

Version 1.1 also adds a shiny new welcome screen that fits much better in Vista and 7. The options window also has had a few additions and tweaks to allow you to customize the preview window shown from the tray icon and concerning application rules.

Of course, if you haven’t downloaded the latest version yet, you can find it at its CodePlex project site. Let us know what you think!

Z-Maestro 1.5

4. February 2011 20:43 | by Z-Human Permalink | Comments (0)

The next version of Z-Maestro, version 1.5 has now been out for about a week. I’d like to give a rundown of what’s new in this version, as well as the direction Z-Maestro is headed in the future.

On the surface, Z-Maestro 1.5’s user interface has had a lot of added polish and refinement. The main look is still the same, but many graphical tweaks have been made to make everything crisper and cleaner. For example, the coloring of parts in the track view has changed slightly in order to make parts “pop” and provide more focus on the content you are creating. The design of the audio editor has also been improved to make audio selections stand out.

Underneath, 1.5 is a relatively major revision, representing some of the most significant advancements to the underlying architecture since Z-Maestro’s inception. The mixing engine has been rewritten to take advantage of Windows Core Audio on Windows Vista and 7. On Windows XP, it still uses DirectSound for output, but it still gains all of the benefits from the work done on the rest of the mixing engine.

One new feature that we will be taking to its full potential in the next major release is the ability to mix with an arbitrary number of channels. In 1.5, this means that you can now have both stereo and mono audio parts instead of just stereo audio parts as in the previous version. It also means that in the next version, we will be adding powerful surround sound support.

Another feature added in 1.5 was one of the biggest requests: Ogg Vorbis export support. Previous versions allowed importing audio stored in Ogg Vorbis, but there wasn’t export support until now. Note that this feature is only available in the Pro edition, not the free version.

Performance, as always, was a big goal in this release. The new mixing engine is significantly faster and provides much lower latencies than ever before, but that is just the beginning. We also added hardware accelerated compositing to all of the editing panes that comes into effect during project playback. This addresses the chief performance problem of previous releases; namely, during playback, the editors constantly rerendered themselves in order to update the location of the playhead. Z-Maestro now uses Direct3D (version 9 right now in order to ensure XP compatibility) to draw the playhead movement which is incredibly fast (60 fps with low CPU usage).

In the next version or two, the current plans are to add:

  • Surround sound support
  • Simple video support
  • DirectShow import/export support
  • VST and VSTi support
  • Direct2D hardware accelerated rendering (maybe?)

If you haven’t already, be sure to download the latest version from the Z-Maestro page!

A New Blog

3. February 2011 21:07 | by Z-Human Permalink | Comments (0)

Here we are! A new blog, all fresh and empty. It has taken much longer to get around to creating this blog than I had originally hoped, but here I am nonetheless. It is my hope that I will be posting here regularly on various topics related to software development, both of the various Z-Systems products/projects and in general.

This blog will also be a place to announce new product releases and give an overview of what’s new. Speaking of which, stay tuned for a post about the newly released Z-Maestro 1.5.

I thought that it might be a good idea to give an overview of where Z-Systems is right now and what types of projects I am working on.

First, of course, there is Z-Maestro, our flagship music/audio application. Z-Maestro development started more than five years ago as an answer to the question: why aren’t there any easy to use music and audio editing programs for Windows? The Mac had GarageBand, but there wasn’t really an equivalent program for Windows. In fact, while there were plenty of audio editors for various audiences, there wasn’t a single one that combined both ease of use and a powerful feature set. The programs targeted to professionals were generally very hard to use with incredibly steep learning curves. Likewise, there were also programs targeted to consumers that were simplistic and dumbed down to the point of uselessness.

So, naturally, the answer to the question was “because I haven’t written one yet,” and that led to all that is now Z-Maestro.

The next big project that has received a lot of use and publicity has been our virtual desktop program, recently renamed to Finestra Virtual Desktops (it’s Italian, just like passion and spaghetti!). It started life out as an article on CodeProject.com about how to use then-new Vista window thumbnails. After some interest, I created a home for it on CodePlex.com and went to work on a public release.

Since its first releases, it has been downloaded many hundreds of thousands of times and has been reviewed in numerous places. It was even featured on the CD accompanying an issue of C’T, a German computer magazine. After about a dozen releases, I took somewhat of a break from the project, as it had become quite stable and unmet feature requests had been whittled down to a few remaining near-impossible requests.

However, it has recently been born anew as Finestra, and a public 1.0 release is due out shortly. New features include Windows 7 taskbar integration and general performance and graphical improvements all around.

Besides Z-Maestro and Finestra, I am constantly working on a wide variety of projects, including various desktop applications, embedded devices, and web experiments. I am extremely interested in operating system design and the design of large complex systems in general. I even have a real-time operating system that I’ve been developing for embedded devices called Z-OS, whose design is loosely based off of the Windows kernel. Maybe one day I will release it publicly!

Hopefully this has given you an idea of where we stand. You can look forward to future updates about my work and about the projects themselves.

Tags:

Blog

FeedSubscribe

Month List