I get asked by various people about how to create fancy demos such as this one: Why NetBeans part 1, Why NetBeans part 2. I am tired of replying by e-mails so I thought I'd share the experiences again using a blog entry (so that I can send a link to it when someone asks me - I am lazy :). So this entry is about how to create advanced demonstrations of software products using various tools. I do different kinds of demos but here I will explain how to create a complex presentation which involves menus, slides, audio and flash screencasts. I've been recording many demos for almost two years, so I think I got some experience with doing it which is worth sharing.
If you need a basic demo, there are great free tools such as Wink (for screen recording) or Audacity (for audio recording and post-processing). These tools are good especially if you don't have experience with screencasting and you don't want to spend time with figuring out all the little details. You can use them to create a screencast quickly but the quality might not be perfect. On the other hand it's a free solution which works well enough for basic flash demonstrations.
To create fancy presentations similar to the "Why NetBeans" referenced above, I use a combination of following tools:
Some of these tools are commercial - I use them because there are no open source equivalents providing some of the functionality.
The process of creating such a fancy flash demo is following:
- Conceptual phase - I gather ideas and create the concept of the presentation with high-level points. I often discuss the concept with other people to create a better story. Sometimes I do domain-specific presentations and then discussing the concept with an expert can help a lot to get it right.
- Creating of slides - I create all slides for the presentation in OpenOffice. I use a slide template to make them look nicer. I leave empty slides for parts of the presentations where I do demos.
- Demo conceptual phase - I discuss the demos with other people and pre-record a draft of the flash demos using Camtasia without voice. I share these videos to gather high-level feedback on these demos and re-record the drafts if necessary.
- Scripting - I write script for the whole presentation. I actually script every word that I say during the presentation, because the quality of the final speech is much better than if it's not scripted. This may not be necessary if you are a native English speaker, but in general a presentation without "uhmms" will be better received by the listeners.
- Voice recoding - I record the voice for the slide parts of the presentation. I read the script and use Audacity to record my voice. I edit pauses and re-record parts which don't sound right or if there is any background noise.
- Voice postprocessing - I use Audacity to postprocess my voice. I use the noise filtering feature to remove periodical background noise such as the fan from my computer. This makes the audio much cleaner. Then I use Sony Soundforge - as the first step I use the noise filter feature to remove various cracks, breathing and background noises. Then I use the normalize feature which increases the volume of the speech. It also makes the audio sound much better and professional thanks to RMS normalization.
- Demo recording - I record the flash demos using Camtasia. In ideal case I script all things which I do in the demo, but for simpler demos it is just enough to record what I do in the IDE.
- Demo postprocessing - I edit the demos using Camtasia. I remove "dull" parts (e.g. when I need to look into my script which causes a pause). Sometimes it is also necessary to cut some sections because of various problems (e.g. an exception if I use a daily build) or I do editing of startup of the application server. I don't want the user to watch the application server startup - they will understand if I edit the startup out that I edited it - I can also mention it using the voice.
- Audio scripts for demos - I write audio scripts for demos according to what I do in the demo. I again write all that I will say because the quality of the final demo is much better than if there are pauses or "uhmms". I try to write the script in a way that it fits to the video.
- Audio recording for demos - I record the audio for the flash demos using Audacity. As usual, I apply the noise filter and postprocess the audio using Sony Soundforge to eliminate other background noises and normalize the audio level. I use .wav files as storage format because by manipulation with wavs I don't lose quality like in case of mp3s.
- Synchronization of video and audio - I play the flash demo in Camtasia and audio in Audacity at once. Whenever there is a problem with the synchronization I have several options how to fix it: a) add silence b) remove silence c) cut video. By using these three techniques I synchronize the video and the audio. It is a lot of work and this step has a lot of impact on the quality of the flash demo.
- I import the created audio files using Camtasia and add the audio to each of the flash demos.
- I import the Openoffice slides into Articulate and save them as Powerpoint presentations (created during step 2).
- I import the audio files for each of the slides (created during steps 5 and 6).
- I import the flash demos into Articulate (created during steps 7-12).
- I generate the final presentation using Articulate and watch it to see if there are any problems.
- Usually I spot many different problems and I solve them by either editing the demos, editing the demo audio, changing slides & slide audio or sometimes even re-recording the demos.
- I send the presentation to the team (still marked as draft) and gather feedback.
- Based on the feedback I receive I change the video, audio, demos, slides, etc. Often this means re-doing some of the parts of the presentation which is very painful but some feedback can really increase the quality of the demo so mostly it's worth the effort. Then I recreate the presentation using Articulate.
- I publish the final presentation on a website, watch it to enjoy the fruits of my work and take some time off after this long and painful process. Sometimes I am thinking that I don't want to do this again, but mostly positive comments from people who find my presentation useful charge me for another round of such masochism :)
I didn't touch many topics such as flash demo resolution, which hardware I use, etc., so if you have any questions feel free to ask. I may write another blog entry about some of the technical issues involved with flash demo recording.