View on GitHub

iRaccoonShow

improve your presentations

Download this project as a .zip file Download this project as a tar.gz file

iRaccoonShow

iRaccoonShow enables the creation of presentations that include slides with synchronized sound. One presentation (re)created with iRaccoonShow is http://www.free-culture.tk.

Of course, your favourite screencast software can be used to record a presentation. But such a video cannot beat the presentations generated by iRaccoonShow in two different areas:

Digital video requires to include the same image many times per second. This is a huge waste of unrequired size. And when the number of images per second is decreased, audio can loose sync with images.

But even if the slide could be included only once for its full display time, its image would have a given resolution. Image size in video cannot increased without decreasing its definition. Maybe a higher resolution could be set in some cases, but the resulting file would be higher.

iRaccoonShow includes each image only once in the presentation, preserving each resolution–independent image as such.

Tools

There are two main tools in iRaccoonShow:

Warning

Just in case you wonder and before further reading: I cannot code. My background isn’t technical and I have never learned programming. Sorry, but I must confess it’s too complex for a simple mind such as mine :smirk:.

What I have done here could be considered trial–and–error writing. It works for me, but it is full of glitches. I’m aware of the limits of iRaccoonShow, but I cannot overcome them.

The Name of the Game

iRaccoonShow stands for “improved RaccoonShow”. RaccoonShow was originally developed by Jono Bacon. I expanded the original script for my personal use.

Actually the expansion was motivated by the development of SuperShow. Sergio Costas provided a more powerful method for Flash generation. But SuperShow was designed with slide show recreation in mind. Here was were the original raccoonshow script came handy. iRaccoonShow names the whole project.

The raccoonshow script—the same way as its supershow-generator development—focused only on the Flash generation. It required already recorded sound and slide transition times. Depending on the presentation style, writing this time line could be crazy.

So, I developed for my own use a script that recorded both sound and slides transition times when giving the presentation. [With giving the presentation, I don’t mean the public speaking; sitting in front of the computer does the work as well.] recslides is extremely simple, but it does the job.

Both scripts are part of iRaccoonShow. They work for me. And I thought they might be useful for others. If not as running software, as an inspiration to develop similar software.

supershow-generator is named after SuperShow. The swfc script used to generate the Flash presentation is a derivative version of script.base that comes with SuperShow.

Requirements

iRaccoonShow has the following dependencies:

iRaccoonShow is a command–line software. In recslides, command–line is only used to invoke the tool (after that, there is no command–line :wink:).

It only works on Linux. I’m not saying that it cannot be ported to other platforms: this is something still to be done.

How It Works

recslides

recslides records the sound from the microphone and registers each slide transition timing.

  1. It’s invoked in the command–line with something like recslides presentation.pdf.

    • To avoid unintended data loss, if there are sound and/or times files already recorded, recslides will prompt whether to overwrite them or to quit.
    • Extension will be appended when not specified (either .pdf or .PDF). If the file doesn’t exist, recslides will quit.
  2. A new window is opened in the middle of the screen, displaying the first slide from presentation.

    • If you close the window before the next step (before the presentation goes full screen), previously existing files won’t be modified. This might be important when you realize that the already existing files are the ones you want to keep.
  3. When the mouse is single–clicked for the first time, presentation goes to full screen and sound from microphone starts to be recorded in a sound file (something like presentation-audio.wav).

  4. Each time the mouse is clicked, presentation advances to next slide and the transition time is recorded to a text file (named such as presentation-times.txt).

  5. When the last slide is reached and the mouse is clicked, presentation leaves full screen and audio recording is stopped. It takes half a second extra to avoid problems with the Flash generation.

With recslides, you obtain both the recorded sound and transition times from each slide in presentation. This means you have two key features:

supershow-generator

supershow-generator generates both the Flash presentation and a loader from PDF slides, the recorded sound and the timeline.

  1. It’s invoked in the command–line by something like supershow-generator presentation.pdf

    • It needs at least a PDF file as argument. It can append the extension. If only the PDF file is specified, it assumes that sound file and times files are named presentation-audio.wav and presentation-times.txt. (Yes, as they are named by recslides.)
    • If sound and times files aren’t named according the convention described in the previous paragraph, creating two symbolic links following the naming conventions to the real files will do the work.
  2. Options can be appended to the argument, but they need reworking. The only one relevant (and known to work option) is -k, that keeps script files and generated slides and cover slides.

  3. supershow-generator creates a Flash presentation file (presentation-presentation.swf) and a loader file (presentation-loader.swf).

  4. The loader can be embedded in the HTML page, using code similar to:

    <object type="application/x-shockwave-flash" data="./presentation-loader.swf">
        <param name="movie" value="./presentation-loader.swf"/>
        <param name="play" value="true"/>
        <param name="loop" value="false"/>
        <param name="quality" value="high"/>
        <param name="loop" value="false"/>
        <param name="allowfullscreen" value="true"/>
    </object>
    
  5. The presentation could be embedded also in the HTML page. I really discourage this as a bad idea. The browser will have to load a huge file—the presentation itself—to get the page fully loaded.

  6. The loading path for the presentation in the loader is relative. There is a new way to create absolute paths in the loader.

Bugs

If you find a bug using iRaccoonShow, please report it. I cannot promise I’ll (be able to) fix it.

Of course, this simple piece of software has bugs. I cannot code, so you can report issues. But if you can contribute code, issues will be fixed earlier.

Any help is appreciated.

swfc has a bug with latest lame version. Until this is fixed in SWFTools, the workaround is to provide the .mp3 file to supershow-generator. One needs to invoke lame directly such as in:

lame -s 16 -m m -b 32 presentation-audio.wav presentation-audio.mp3

Compatibility Issues

I think there are two main areas in with compatibility issues might arise: iRaccoonShow as the tool and Flash as the output format.

iRaccoonShow

Porting iRaccoonShow to Windows and MacOSX isn’t impossible, but this is beyond my (non–existent) technical skills.

My guess is that it may be easier to write these tools with native libraries for those platforms. At least, the libraries for PDF display and audio recording. But this is only a(n educated?) guess.

SWFTools works out–of–the box in Windows. And it may be installed in MacOSX (using MacPorts or even Homebrew [the latter seems harder to install]).

I run Linux on my machine. So, even if I had something designed for Windows or MacOSX, I wouldn’t be able to check it on these platforms.

Flash

Flash is available for Windows, MacOSX and Linux. iPad isn’t supported, since Apple doesn’t want to have it supported.

Linux has a Flash player, but its development has stopped in version 11.2 (security fixes will be added for five years after this release).

Since Flash is a dead project in Linux, there are two other possibilities:

License

All code published within this repository is released to the public under the GNU General Public License version 3 or any later version.

There are two swfc scripts used for Flash generation, either from presentation of the loader—swfc.basic and swfc.loader. These scripts contain an exception that prevents the GNU GPLv3 being automatically applied to the generated presentation or the loader themselves.

The code comes with no warranty. Use at your own risk.

Acknowledgments

Well, I gratefully acknowledge that I stand on the shoulders of many giants: