The created software shall be usable under production circumstances, that is, when no one has time to spend time on over-complex menue structures or extra-clicks. Thus it's going to present itself with an interface which tries to be intuitive while maintaining a certain amount of functionalities. This includes keyboard-shortcuts for one very simple reason: Myself. I found it always easier to blindly push a button I've put my finger on than doing the same thing with a touch screen (which I cannot touch before hitting the button) or a mouse (which requires my hand to stay perfectly still for tens of seconds, worst case, keeping its button pressed).
The origin of this program was the idea to provide a musical production with click-tracks, wich usually ends with problems when it comes to using click-tracks. However, I've found it also extraordinary helpful in broadcast-like situations to provide a somewhat pleasing backing for an introduction or the like where the exact length of the needed loop isn't known in advance.
Oh, and this is also perfect to drive someone crazy by playing a song he or she absolutely hates over and over again. This primarily works by exploiting a non-assumption. When I don't like a specific piece of music, I usually still know it pretty well. And if it's just to know when it's gonna be over. But this is where this piece of software jumps in: It can loop that piece of shitty accumulation of noises in a way so subtle that the jump back is not obvious -- and it goes on and on and on. It of course works best when applied subtle. Try it with the car radio on a very low volume with a person you don't like... just barly noticeable (we humans have an awesome automatic gain mechanism for things that annoy us) and don't you dare to pay any attention to it yourself and when the fuck did this turn into a lecture on psychological warfare?
Disclaimer: There is probably DJing-software which fulfills my need. However, I didn't explore it, thus Ending up with not having a program at hand which is suitable for above mentioned scenarios left me with the idea of then just writing a program myself.
Not completely realizing that this was my first step into the exciting world of programming sound stuff. Which is why I went for Microsoft Windows as platform to use -- it just limits the number of problems by eleminating the whole open-source-multimedia-drama-factor sketched in http://xkcd.com/6191. Which still left me with the complexity of the MS Windows Multimedia API. Luckily I stumbled across the BASS library project which provides easy access to multimedia playback as well as to file formats (which would have been the next painful part to deal with -- reinventing the square wheel, anyone?)
Why not Mac OS? Simpley because I do not own any recent Apple devices and developing for a 2011 PPC Mac Mini w/ Mac OS 10.4 wouldn't have been that much of a help to anyone.
As mentioned earlier, I do have certain UI and functionality requirements. I want a piece of software suitable for the roughness of live-production, that is, this is what I end up with:
- Keyboard controllable. It is way easier to hit a certain key of the keyboard than click a button without looking at it. The eyes are focussed on what's happening on stage, the finger rests on the button to control the sound.
- Predicatability. It must never be a mystery what a specific button does when being hit.
- Seperation of setup and runtime. The last thing you want during show is being confronted with a setup dialog. This is especially true as setup and show operation might be performed by different persons. The shoowtime operator might end up completely overwhelmed by a 20-button-per-inch-setup dialog.
- Playout device selection. It's more than handy to choose which playout device shall be used -- thus the default playout device must not be blocked by a playout, also this is an easy way to keep all the software just playing sound from messing with the show.
- Compatibility w/ mAirList http://mairlist.com mmd-files for markers2. I would have loved to resort to mmd-files to store everything but unfortunately mAirList just overwrites them w/o preserving any extra entries in them, so vamps will end up in a seperate file. Support to start playback at least at the "hook"-mark set within mAirList is more than a bit desirable.
- Visible wave outline dring playback. This can help to intuitively see upcoming sound events (that is, loud things).
- Automatic loading of next file, etc. Optional: Automatic start of playing next file (however, in certain scenarios this might turn out dangerous).
- Support for playlists. They can resemble a show or whatever. Also: One entry can appear multiple times in the same playlist.
Above you see the resulting playout UI. Most nasty stuff is hidden in the menu bar (open playlist or media files, setting the playout device, ...). Then there's the waveplot of the file currently to play. The horizontal lines mark the vamps -- blue if already played and left; yellow if set up to be entered; red if currently played and green if ahead but deactivated (you can reactivate them). The vertical lines are the marks read from the according mmd-file. The thinner lines are ramp- or outro-markers; the thicker line is a hook. What they essentially do is help you if you're using this program in a broadcast scenario -- these lines mark a point in the song which is a good time to shut up and let the music play (speedup, start of lyrics, start of main theme, ...)
Below the plot, theres the playlist (a list, that's it) and the control knob section. Of course there are the usual suspects -- Play, Stop, Pause. Where Play/Pause is also available with the usual shortcut to space bar. And the one button which makes this program what it is -- break vamp. Underneath the Play button, the little scissors are the "Start play at hook"-functionality. Turns out, it's really hard to find a nice icon for that function...
And finally, there's the finger-button. It's intended to be the one button which is always right and just this makes it a bad idea. It's a bad idea because this implies it has different functions over time, that is, it has modes. Modes however imply that the user needs to 1. understand and then 2. track. Understanding means that the user actually has to wind his brain around my idea and accept it as useful -- something that can go wrong in so many ways. There's nothing worse in terms of usability than forcing the user into a specific way to use a piece of software just because it's intended that way3. Still, I did it here. For my very own use. So what the user has to track is this sequence of mode-function associations coming with that button:
- If no media file is loaded, it will load the next media file from the playlist.
- If a media file is loaded but not playing, it will start playing the media file.
- If a media file is playing and the playout is inside a vamp, it will quit the vamp.
- If a media file is playing and the playout is outside a vamp, it will deactivate the next vamp.
To the right of the control buttons there's a set of timing information which is helpful mainly in broadcast situations -- essentially the remaining times. Which of course can go forward (usual playback) but also backwards (vamp jumps back to beginning); as well as the remaining time until end of vamp.
You can download the Windows-binaries at down/vampir-binaries-20171226.zip. Also here's a MD5 and a SHA256 checksum of this binary package which you're gonna download using the very same unsecured HTTP connection you're using to view this site.4
MD5 (vampir-binaries-20171226.zip) = 2ff6dde8988f0c1093772a8440035c12 SHA256 (vampir-binaries-20171226.zip) = abda8d433c808564723077e7e6431cae70bb0d2e09f39c34b6dfc7e011cc40d0Regarding the license, treat it as a community-free edition. As soon as you want to used it in an effort to make money (or use it in a commercial environment), do yourself a favor and contact me. If you really wanna use it, you will find out how to do that. It might also motivate me to make the editor somewhat usable -- you may have noticed that I havend written a single word about the editor... there's a reason. Just sayin'...
1 Is there anyone out there who can explain why the fuck XKCD enforces an encrypted connection to view their comics? HTTPs ensures authenticity, integrity and confidentiality. When looking at an XKCD comic I need none of them, sorry Randall Munroe, but your comics aint that inflammatory that any state-sized attacker is interested in which comic I consumed after googling it (and that's the only information protected by this measure) -- neither is there a specific reason to protect the integrity of the response. If it's about injection of malicious code, an attacker will use the next site I visit so there's just no point on the long shot. If it's about tampering w/ your content, yeah, get real, these are comics, not blueprints for the basement of 1600 Pennsylvania Avenue... and on the meta-level, yep, visits xkcd.com, +1 on the "is a geek" score.
2That is, combatility w/ the mAirList community edition ("mAirList Community Edition is only licensed for PERSONAL USE, that is, by yourself, at home and non-profit") of version 3.0.15 from 2009 which to download these days you have to take a deep-dive into the download-listings at https://www.mairlist.com/download/archive/mAirList/v3.0. Anyhow, compatibility means in this context that I want to use markers added for a music file. mmd-files are XML, however, mAirList does no preserve any attributes to nodes it did not create itself, so I cannot go the easy way of just adding my information into an already existing mmd file.
3If you ever find yourself really struggeling with a piece of software and it just doesn't work comfortably and is acting like a piece of shit, try to re-approach it. Read the fucking manual and try to get how the manufacturer intended it to be used. I bet you, you're trying to use it from a different approach -- which is diametral to the original idea. With the amazing result of all functions working against you. If you can, re-approach it and try to go with the flow and all of a sudden functions make sense and support you... magic!
4 Fun thing, it might make more sense to deliver this site w/ HTTPS than xkcd.com. But then you'd still have to trust me not to be malicious -- for I might just create any kind of malware wrapped into a nice multimedia-playout-tool waitin' for you to execute it. Which essentially is a problem you can't solve -- you don't know me as good as you know all the other places (including update.microsoft.com) you download and install software from.