Crescendo NewsPosted by Magnus Thu, July 16, 2009 12:03:37I uploaded v0.8.1 a few days ago. It has lots of small fixes, and a few major changes. For one, I've moved from real Frequency Modulation to the more popular Phase Modulation (PM) technique (similar to the Yamaha DX7). Main reason being that it helps to avoid pitch drifting which makes the creation of harmonic sounds easier. From a bit of experimentation I've noticed that drums and other inharmonic, percussive sounds seem to be harder to create or not sound as good with PM as with real FM, so I might put it back as an option later on. Possibly as a dedicated drum synthesis module. If I recall correctly, the Nord Modular did that.
There's also a few new usability tweaks, like scrolling with the mouse wheel in the arrange and sequence panels, and a popup menu in the arrange window (for quick assigning from the projects sequence pool).
Still TODO: I need to work a bit on the website next, for starters I need a bug report system and some kind of web interface for account management (or registration at least). The documentation needs to be updated as well, but I think I'll do that once all new features are in so I can write it all in one go. Finally, there's still a bit work to do on the applet itself. There's actually only one bug left on my list now, most of the high and mid priority items are new or half-implemented features. There's a lot of them though. I'd also like to do something about the architechture of the sound engine, but I'm on the fence on that one. It would improve the timing a lot, but it's a huge undertaking and I'm not sure it's worth the time investment at this point.
Even though I have started using numbered versions, I don't think I'll be making blog posts for each release. It would cause a lot of clutter since I sometimes update several times a day, and saving up fixes into batch releases like 0.8.0 and 0.8.1 kind of defeats the purpose of the perpetual beta model.
Crescendo NewsPosted by Magnus Sun, June 28, 2009 21:44:42The GUI and network overhaul patch is now online. A draft version was posted yesterday evening, with some of the old non-essential features missing. They have been implemented today, and are included in the most recent published build.
There are a lot of new features, and the behaviors of some old components have been changed, but this is not reflected in the instruction manual yet. I will try to get to that soon. But as I've written here before, this update was mostly invisible. The GUI should feel a lot more responsive and have a lighter CPU load, and network I/O should in many cases also be faster.
Going forward, there are some tweaks I'd like to make to the synthesis engine and there are several new features on my list as well. I'm going to slow down a little on CO development though, 4 months of crunch-time leaves its marks and I also have some other projects that I'd like to work on this summer.
Crescendo NewsPosted by Magnus Tue, June 16, 2009 19:37:29In the last post I mentioned that I was currently working on restructuring my code, and that the next big update was going to be mostly invisible. I'd like to retract that statement. Many of the usability improvements that I've planned are very easy to implement in the new structure. As for the rest of the components, many of them require work simply to get the old functionality back. In other words it saves time to make the improvements as I go along, as opposed to altering code that would be scrapped within weeks anyway. So the next update is going to be a major one. Tool tips, rollover icons, better sequence scrolling, better arrangement scrolling, better text fields and lists... And that's just the stuff that's already implemented!
I still have a lot left to do on the patch panel and the browser windows, so I don't want to set a date just yet. Let's just say "soon".
Crescendo NewsPosted by Magnus Thu, June 11, 2009 17:59:12A few years back I was working on a group assignment for a class on
OOAD (Object Oriented Analysis and Design). A sizable part of the
assignment was drawing class diagrams in UML. One day a classmate showed up with a fantastic looking printout of our latest architecture. He had discovered this
diagram application called
Dia based on the gtk+. Since then I've used Dia every once in a while, usually for school assignments but on occasion in the design of personal projects as well. It uses vector graphics, but it is a breeze to work with compared to the Office-like drawing programs. It was a nice tool, but nothing essential until recently.
With my new-found freedom I've decided to finally tackle the GUI structure of CO. Many of the new features that I have planned are usability oriented, and refactoring the GUI will make their implementation a lot easier, with the added bonus of making the code easier to maintain. In the past I would have used pen and paper for this task, but this time I decided to go with Dia since I already had a model of CO in it. Let me tell you, I do not regret this decision. The ability to hide/show/add variables and methods, and to move entities around on the fly is amazingly useful for refactoring, more so than during the analysis and design. Why? Because there are a lot of dependencies to keep track of, and having a quick and easy way of illustrating them as needed without having to erase or change papers to make room is a great help.
These changes being made in the near future are strictly under the hood. The performance should improve slightly, but primarily the changes are for my own sake. Whenever I wrap this up, some interesting new features should be right around the corner.
Crescendo NewsPosted by Magnus Sun, May 31, 2009 19:47:48The end of the course that is. Which is nice because my report is as ready as it's going to get for the seminar, giving me time to implement some new optimizations and features in CO. The biggest news is probably that many server requests have become a
lot faster. I still have a few ideas on how to improve the round-trip latency, but it's not top priority since the current speed seems to be more than acceptable. I've improved the usability a bit by having a playback position marker, text reminders of when a sequence or patch is unsaved, and visual feedback of the output energy of the modules. Another new addition is a decimator module, aka a bitcrusher/sample rate reducer.
The next few days will become busy again, so expect a drop in updates for a little while. When I get back, I will start to work on some major functionality and usability changes. When they're fully implemented and sufficiently tested, I see no reason not to proceed with the open beta.
Crescendo NewsPosted by Magnus Sat, May 09, 2009 11:47:29It started on Thursday night actually. I have already received a lot of helpful requests and bug reports, some of which have been addressed in the latest version. One thing in particular that I have found interesting to hear about (excluding bugs of course), is when the behavior of the widgets don't match expectations. I think it's easy to become blind to such flaws as a developer, because (at least with a prototyping method), you normally add interaction logic using the quickest and easiest solution from a coding point of view. Then as you run test after test, for weeks or months, you grow used to their behavior and forget that it's probably not the most intuitive way of achieving some type functionality. Usability is a highly important factor, because my goal is that a new user should be able to get into the software within minutes.
For the next few weeks I will need to focus on writing, so the development of Crescendo will slow down a bit. But keep the bug reports, requests, and questions coming, because I will jump in from time to time.
Crescendo NewsPosted by Magnus Thu, May 07, 2009 19:15:03Good news, I have migrated the database and services from my testing environment to wreathy.com (it took a few tweaks for the authentication to work in CGI), so the closed beta is imminent. Here are a few screenshots in the meantime.
Login window:

Main window:

Browser window:
Crescendo NewsPosted by Magnus Tue, May 05, 2009 23:20:52Phew! Most of last week I spent finishing up the web service side, including security and authentication aspects, as well as completing the database design. On Friday I noticed some problems with mapping the application's data structures into the database (certain parts needed to be broken down so that they would work well in a multi-user environment), and I had to rewrite a considerable amount of GUI-code in order to support the new structures. This was taken care of over the weekend.
Yesterday and Today, I have been going through and fixing various bugs and old irks, as well as creating a login and hardware setup screen in the applet. A lot of that stuff had been hard-coded for months (sufficient enough for testing purposes).
So there's been some very, very long days lately, but things are definitely looking good now. All the reproducible bugs that I've found have been solved, all top-priority functionality has been added. Of course there is still a big list of medium and low priority changes I'd like to make, much of it has to do with the responsiveness and visual feedback of the GUI components, and I'd also like to expand the functionality of both sequencer and synth. But all in all, I think it's in decent enough shape to start the closed beta soon. Certainly, any input I'd get regarding bugs, usability or functionality requests, would also be a great help going forward. So keep your eyes peeled!