[Home]
[Video&Photos]
[Ludicrous]
- About The Natrix ]
[Software]
|
The Slideshow
Written mainly in Liberty Basic
(see about the download here)
| Note: If you are ever inspired by the Slideshow application described on this page to create a slideshow application with functions similar to those unique to the slideshow application described here then by doing so you implicitly agree to having donated your midbrain to experimental psychology for purposes of pain research. |
|
July 25th 2009: I've been wanting to do something about that gray color I made for the bmp-buttons (as shown in most of the other screenshots on this page), because it didn't really look good that they didn't have the same color as the background and the other buttons. Now I finally got around to doing it: Check out the button-coloured bmp-buttons in this screen capture. And I didn't just make the bmp's in the color that happen to be the button-color in the desktop setting I happen to use: It's whatever is the button-color of the desktop theme.
This screenshot shows what the control panel and the wazup window look like now, with some of the different Windows standard color themes.
Well... It works with whatever is the button color of the desktop theme when the application startup - it don't look good if I change the theme while the slideshow application is running... I could propably fix that, but that's one of the things that don't really seem to be much point in doing: After all I'm not prone to change my desktop color theme at all, and it seems highly unlikely that I would ever change it while in-midst of running the slideshow application, so...
|
July 19th 2009: As can be seen from this screenshot I've added further a couple of more buttons to the control panel. The reason is that whenever a transparent gif was displayed which was black as the foreground color then displaying it on a black background, as I have done until now, would display only a black screen.
With the new clickables I can choose what color - or texture image - to use as background behind the image, so that transparent gifs can be shown on some sort of colored or textured background. In this screenshot it's a transparent gif shown on a textured background. (Needless to say the image background-color or -texture can't be seen unless the image in front of it is transparent). - And then I thought that now that I was at it I might as well implement the same thing to the Slides display background too, so that I can change the display 'background' (eg. the color - in this case black - shown around the images) to a different color or texture if I want to.

Initially I would have placed the new controls in stead of the little image in the top-left corner, since the image got there in the first place only because I didn't know what else to put in that corner. But then I found that I'd grown fond of having that image there, so in stead I managed to squeeze the other controls to make room for the new controls.
|
Another thing detail I changed is that now I can toggle between fullscreen/window display, and between primary-/secondary screen - and even (change- and) re-detect the secondary screen resolution - 'on-the-fly', while the slideshow is running.
July 17th 2009: I've had much use of the wazup window: Mostly since a lot of the image files has a thick border around them that don't look good on the "Slides" display, so I've mostly been using the "back-and-pause" and the "open-folder" functions to locate those image files so I can remove those borders around the images, or generally to neat up image files that has something wrong with them or part of some text that I would remove or whatever else. Only thing is that even though I could open the folder it still took a long time to locate the right image. So therefor: As an addition to the Wazup, I have now implemented the principle that when I open the folder it will automatically locate and highlight the particular image- or music-file for me so that I don't have to spend time looking for it.

I've got it to work perfectly... Well.. On MY system, that is... Though so far it's pretty much guaranteed that it won't work on a non-danish Windows configuration, since I use virtual key scancodes (credits in this context, btw, to Janet Terra's "Sending Keystrokes" demo example from the Liberty Basic community forum) to select the file. And they may differ depending on the keyboard language configuration.. But heck, it's not a problem since I'm not planning on anyone but myself using the application with anything other than a danish keyboard configuration anyways, so I'm happy with it the way it is. If I happen to come across some API call or whatever that can do it independently of keyboard language configuration, or if I get bored sometime and come up with a solution, then I might implement it just for the heck of it, but other than that; as long as it works on MY system I'm fine with this function the way it is now.
|
July 11th 2009: Working towards a method to calculate the playlength of the midi files I started out by writing a routine to interpret and dump all data contained in a midi file. Originally planning on, after having written the routine; taking out of it anything not of relevance to calculating the playlength. Though I can see now that the method of reading through the entire file would be way too slow, so I'd have to come up with a different mathod anyways. Still I posted (the initial version of) the routine, as I suppose it could be of some use in case you need to retrieve data from midi files. -The initial version of the routine could barely fit in the space allowed in the forum post, and there's no way I would be able to fit the additions of the latest iteration of it, which enables it to cope with Running-Status, so I post it here for download in stead.
Though I'm not gonna spend more time now on working at methods to calculate the playlengths of the midis: However cool it would be to display the length of each tune and how much time is left of it it's not essential. The main idea was to display the names and paths of the currently playing audio files in the wazup, same as with the image files. Other than that I have more urgent prioriteis on the to-do list of the slideshow application.
July 12th 2009: So now I've implemented the displaying of the currently playing audio file in the "Wazup" window. That means I had to move the task of playing them to the main application*, in stead of just leaving it to the HTA to play the whole lot as a .wpl playlist. - So this is what the "Wazup" window looks like now that I've finally added the audio file display. Since two sets of buttons were required I moved the buttons to the left side of the window as the better alternative, as opposed to placing the audio buttons between the two text displays. As will be apparent I didn't add a second "show previous" button for the audio file display, since I found that to be unnecessary: It's a good idea with the images since they change so fast. But the audiofiles stay on so long that it's no problem reaching the "copy path" button in time before the display has changed.
*Thanx to routines from Gordon Sweet's "Random Music Player" (And generally: also the work of Alyce Watson and other dedicated programmers of the Liberty Basic community forum is much appreciated).
|
|
July 8th 2009: 'Still haven't integrated the show-audiofile in the Wazup.. Not that I haven't gotten the information that I need, but because that just hasn't been my first priority. In stead I've been working mainly on a more flexible implementation of the select screen option, so
now the application will auto-detect and remember the resolution of the secondary screen the first time it startup: Previously I'd just pre-programmed it to fit the particular fullscreen display on the secondary screen that I have set my Windows up to, but of course if it was hypothetically to run on somebody elses system who might have a different setup for their secondary screen then the size wouldn't fit. But in this new version it should.
The new functionality means that I had to add a couple of extra "clickables" to the control panel, as shown in this picture:
|
Having once detected the secondary screen size the application will remember the setting and use that in the future. So I added the "screen size" button under the "secondary" option, so that in case I change the Windows settings to a different secondary screen size, the application has a way to re-detect the secondary screen resolution to adapt to the new secondary screen size. (I also added an option to display the images in a window in stead of the full-screen mode.
As for the "Boost" button in the corner: In spite of my best efforts to the contrary, and several preventive measures to avoid it, the HTA application that display the slides and play the music may still on rare occations loose touch with the control doc that's responsible for receiving the different commands from the main application, to change the image, or refresh the music playlist, etc.. In that case the main application has no way of contacting the HTA application, except sending a general "refresh" command to the HTA application as such, to restart. But the result is that the display turns blank for a moment, and that the playlist goes back to the beginning, which doesn't look very nice. So I thought it'd be fun to add a "Zapp!!!" sound to it, and make the button like one of those missile launch buttons you see in movies that has a safety cap that need to be unlocked before the button can be pressed.
|
The image in the top left corner is just decoration: After I had to resize the control panel window I had a bit of extra space in it that I didn't have anything to use for, so I added an image.
June 30th 2009: Since I threw away my television I was kind of missing having some kind of flicker and sound (although of course non-semantic) in the background when I'm working, or just for chillin' out, so I made this slideshow application that I've pretty much finished up now. -So, without further ado; here are the commented screenshots...
The basic idea is that the main slideshow folder contain a "Slides" folder and a "Music" folder; each containing a number of sub-folders defining the different categories of image slideshows and music playlists I can choose from the combo boxes on the control panel.
Each sub-folder contain not images or audio files, but shortcuts to the folders which contain the images or audio files that the category should include (as shown on this screenshot). The combo boxes on the control panel gives me the choices of whatever sub-folders are present in the "Slides" and "Music" folders.

That way defining a new slideshow is real easy: I only need to create a new folder with the name I want to be the name of the new slideshow or playlist, and place shortcut links to whatever image- or music-folders I want it to include. Editing playlists is the same: It's simply a matter of adding or removing shortcut links to- or from the folder in question. (July 8th: One more thing I forgot to mention: Notice the "!Nyt" links-folder: Slideshows and playlists the links-folders of which have names beginning with a "!" will be excluded from the ">Random<" options: That way I can define some image slideshows or audio playlists which I can choose from the combobox if I wish to see or hear them, but which will not be shown or played randomly in the ">Random<" options. - That may be practical if for example I have a folder of newly acquired images or audiofiles which are unsorted, in that they need to be moved to the specific folders according to whatever categories of images and audio files I use: This way I have a way of reviewing the content of such a "category" of uncategorized files, though without needing to be bothered with it being chosen by the ">Random<" function in other situations when I'm just wathcing the slideshow to chill out.)
The slides display on the screen is written as an HTA application generated and controlled by the (Liberty Basic) main program. - The "Wazup" button opens a window with a textbox that contain the full path- and filename of the image that's being shown at the moment. It has an option to save its content to the clipboard or to open the image-folder where the currently displayed image is located (convenient functions to have), plus an option to go back to show the path- and file-name of the previous image. (in case I don't make it in time to click the button while the image I want to delete or whatever, is still up) The text box will then stay on that image and not update until it's released; bringing it back to its 'normal' state.

Next I'm gonna implement the same function for the audio files. Although I haven't been able to find info on how to make a script that'll tell which item on a .wpl playlist is currently playing, I have finally (thanks to writers on the Liberty Basic community forum) got info on how to retrieve the playlength of each audio file, so I can replace the method of playing the music in a .wpl playlist that I'm currently using with a function to play each audio file seperately.
To spice things up a bit, and break the monotony of just displaying slides, I added some javascript effects (adapted from Dynamic Drive and Javascript Kit - most of them by Kurt Grigg, by the way, plus the "Flying Butterfly" script by BGAudioDr) so that I can have animated gifs bubbling up from the bottom of the screen, or snowing down from the top, or just fluttering around in front of the image. The frequency of how often I would like the effects to appear can be set with the slider on the control panel; ranging from "all slides", over "mostly", "ocationally", and "rarely", to "never". -This is a small collection of sample screenshots to give an impression. - Please note the semi-transparent bubbles. I'm so happy about that achievement. And they work real well visually on the screen too, in my opinion. (Fortunately, given that it's me who have to look at them, huh!)

Next thing after implementing the audio files preview in the "Wazup" display I'm gonna make the effects the same way as with the "Slides" and "Music" folders: So I can add new effects and new gifs just by placing the gifs and the scripts in an "Effects" folder within the main slideshow folder. It'll be alot easier that way rather than having to implement the parameters of new scripts into the program.
Finally there are 24 different transitions between slides that the application choose between randomly: This collection of sample screenshots should give an impression of at least some of them.

|
As for the download...
Not gonna happen ...
At least not until I can be certain that my atempts at earning money are not gonna be obstructed! So don't hold your breath.
Unless in the unlikely event that someone, before then, decide to purchase the rights to port and distribute this application I am going to destroy the source code on september 16th 2010, as the latest.
July 15th: I briefly considered an idea i got to a set of functions that would have been a very neat addition. However they were of such a nature that implementing them would imply developing routines that would brush on artificial intelligence related research, and might thus be considered to be of actual value - so, keeping in mind the so called (perhaps misleadingly so) "Hundredth Monkey Phenomenon"*, on which I have in the past wasted valuable efforts, I just decided to not bother with developing the routines in the first place, at all.
*Note: I'm not taking any position on the hypothesis from which the phrase (misleading as it may or may not be) has been popularized: I'm only making the point about the effect itself (as I have experienced it to be), on which I asume the hypothesis (right or wrong as it may be) is based.
If I, Rasmus Palbo Nielsen, could myself expect to make money on my own work then of course that would be a different matter. Until then some artificial intelligence enthusiast may comfort him- or herself with this tune.
|
|