Crawling back to life

If there ever was an annus horribilis in my life, it was 2023 – and the year had started so well! I had updated the Rave audio editor to version 1.6 in February, and began planning new features soon after the release. But unpredictable as it can be, life decided otherwise. In the summer my marriage suddenly collapsed for reasons I’m still trying to fathom, and all of my Amiga activities went on the back burner. I did spend two refreshing weeks in Dublin where I met the wonderful George “Walkero” Sokianos, but for the rest of the year I wasn’t really in a state to enjoy my hobbies. The fact that I had to sell most of my studio gear to finance the settlement with my wife didn’t improve my mood any further.

Nevertheless, turning fifty in December I had a good reason to act like a big boy, so our marital split wasn’t acrimonious in the end. Things got a bit more levelled, so I thought it was high time I fired up the Amiga again. I managed to port the latest version of Protrekkr around Christmastime, adding a serious contender to the roster of music trackers available on AmigaOS4. But although the program is very cool, I realized there’s only so much love I can give to other people’s projects, and I wanted to start working on Rave again.

Naturally, I didn’t aim very high with the new version. It takes some time and effort to reacquaint with source code you last saw almost a year ago, so I knew version 1.7 would only get a few new features. I felt it was more important to show signs of life rather than put out a big update. Above all, I wanted to address a silly bug that sneaked into the previous version, in which I added (among other things) the Pause button. The bug would make a paused Rave unresponsive upon triggering sample preview playback in the file requester. Not a situation that occurs very often, but I’m glad to report that the bug is now fixed!

For quite a while I’d been meaning to improve the main menu with a list of recently opened files, allowing you to reopen them quickly, without the need to browse through the file requester. But I never got to it because I thought the implementation would be so easy that I could do it anytime; one of the many paradoxes in software development. In fact, I believed no implementation was necessary because I planned to use the Application Library, which provides functionality for creating recent lists. According to the available documentation, such lists can be kept system-wide as well as on the application level, and their creation boils down to passing a tag to the respective library function. Child’s play!

However, although I was able to get a system-wide recent list working with no trouble, using an analogical library function for an application-specific list never brought the same result. After pulling out most of my thinning hair I came to the conclusion that the feature must be broken in the Application Library (which would explain why I couldn’t find any real-life code examples demonstrating the usage). Given the current state of AmigaOS4 development, I didn’t hold out much hope for a quick fix, so once again I was left to my own devices. Nevertheless, the poor library still proved helpful. Although I had to write my own recent-list management routines, the library’s PrefsObjects API spared me a lot of work when it came to loading and saving the list data. The screenshot below shows the final result:

The new Open Recent submenu.

One of the few ideas I had explored last year, before Rave development went on hiatus, were improvements in the file requester. My sample collection had grown very large, with audio material scattered across dozens of directories and sub-directories, and I began to lose track of where things were stored. I had also realized that I’d been using certain sample packs more often than others, so I decided it was about time I implemented a list of favourites, i.e. shortcuts to frequently used places on my disk.

This required a redesign of the file requester’s Access Panel. The original panel used tabs showing a list of volumes and assigns, respectively, but there was no room for another tab to display the list of favourites: the panel would simply grow too wide. I took inspiration from a PC music program called Geist, which uses a hierarchical browser with foldable sections. So that’s what I unashamedly imitated in Rave’s new file requester, using the Listbrowser Gadget from the standard ReAction toolkit:

The file requester with the new Access Panel on the left.

One thing I like about this solution is that you can have more lists displayed at the same time, whereas with the old file requester you would have to flip between tabs. The lists that you don’t need can easily be folded to save space (as shown in the screenshot above). For instance, I no longer have to make dedicated DOS assigns now that I can define favourites, so I keep that section folded to make room for the other lists. For convenience, the default panel display is configurable from the program Settings window:

The Access Panel settings.

And that’s about all I was able to put into version 1.7, which has just been released and can be downloaded from the usual place. I have a lot of plans for further development, but you know that the words “Amiga” and “plans” don’t easily go together, so we’ll see what the near future brings. This year AmigaOS4 is turning 20 years old, and I hope I’ll be able to join in the anniversary celebrations bringing the best possible present: quality software to keep Amiga users productive.