Friday 1 December 2017

Cyberlink PowerDirector 16 Review

Cyberlink PowerDirector is a fast and well-featured video editing suite that is, in my experience, far more powerful than its relatively low cost might suggest.

This latest release adds in some useful capabilities such as enhanced tools for creating panoramic 360-degree videos (assuming you have an appropriate camera) including ‘little planet’ videos (where panoramas seem to wrap around to form a sphere) and titles that stay ‘inside’ the 3D space, better colour matching and grading tools to change the colour ‘temperatures’ of clips and match the tonal ranges of one clip with another. You can also create video collages. These are split-screen videos with clips arranged in predefined ‘patterns’ all on the same screen.

The PowerDirector 16 editing environment – clips imported into window at top-left, the multi-track timeline at the bottom, the preview window (showing three videos combined into a ‘collage’ at top-right)
There are numerous other new or enhanced features too. For example, there is improved stabilization that irons out any camera wobbles, even in 360 degree clips. And there are all kinds of new or improved add-ins for creating titles and applying effects (only with some editions – see below).
If you regularly make use of musical backing tracks in your videos, the new ‘audio-ducking’ tool might be of use. This automatically lowers the sound on a ‘background’ track containing music or some other kind of ‘background audio’ when there is some dialogue on a ‘foreground’ track.

My first attempts at audio-ducking were not entirely successful. I applied the default settings to a backing track and let PowerDirector analyse the other tracks (principally the main video track containing dialogue). It then made adjustments to the background music by increasing the volume in the pauses and decreasing it during speech. Then end result was a wild cacophony of loud music blasting out at unexpected moments. I had better luck when I adjusted the settings in the audio-ducking dialog to increase the sensitivity and ducking level. The end results were still not as good as when I made audio adjustments by hand. Even so, automatic audio-ducking is a lot faster than adjusting audio the hard way so it may be useful in some circumstances.

Audio-ducking automatically decreases the volume of a backing track when there is foreground dialog. You may need to experiment with various options to get good results however.
In spite of these additions, the essential software hasn’t really changed very much since the last release which I reviewed about a year ago. (See my review of PowerDirector 15). In fact, in terms of its core editing and production capabilities, it is really not vastly different from PowerDirector 14 (see my review from 2015). Consequently, for the sort of video editing that I do, which doesn’t need fancy effects such 360 degree panoramas and collages, the new features are not hugely important.

PowerDirector’s demo of some of its 360 degree capabilities
The user interface remains much as it was previously: there are tabs across the top that let you switch between four workspaces: Capture, Edit, Produce and Create Disc. In the Capture workspace you can capture video or audio directly from a connected camera, microphone, webcam, CD or some other device, Or you can start up the screen-recording tool to make a recording of activity on your computer screen – which is useful if you need to do ‘screencasts’ showing software being used. The Edit workspace is where you actually create your videos by arranging clips on a timeline, cutting and moving them, applying effects and transitions as required. The Produce workspace is where you select the video format of your final video and render it to disk. And the Create Disc workspace is where you can, optionally, build a video complete with a menu system for DVD.

The collage designer lets you edit together multiple video clips and show them in split-screen views. Here the collage designer lets me pick a pre-designed ‘collage’.
As I’ve mentioned in previous reviews, one remarkable thing about PowerDirector is its speed of video rendering. For some common formats (such as MP4) it produces videos at a speed that far exceeds any other software I’ve ever used. See my recent review of a competing video production suite, VEGAS Pro 15, for details of a comparative speed test I made between VEGAS and PowerDirector 15.

My review of PowerDirector 14 provides a quick overview which is still relevant to PowerDirector 16

So, in summary, PowerDirector 16 has a few useful new tools and features, the most striking of which is probably its improved support for 360 degree videos. It doesn’t really have many significant additions for more traditional types of video. Even so, it is an excellent program for fairly serious video makers and, at the price, it is terrific value.

A word of warning. If you are a serious video maker, the chances are that you are going to visit the PowerDirector web site and notice that the software seems to be targeted towards families; there are lots of examples showing people making holiday and birthday videos. You will then, quite reasonably, conclude that PowerDirector is an amateur-level tool that must surely be unsuited to your more professional-level requirements. All I can say is, don’t believe it. While its ease of use makes it a perfectly good choice for amateur video makers, its power and speed make it just as good for professional use. OK, so maybe it hasn’t got what it takes for making Hollywood blockbusters. Then again, how many of are involved in making Hollywood blockbusters? Most professional video makers these days are more likely to be making YouTube videos, online video courses, instructional DVDs, promotional and sales videos or creative videos on a budget. For that level of video-making PowerDirector 16 is just about ideal.

Additional Software

Some editions of PowerDirector are supplied with additional software – notably, PhotoDirector 9 (image editing), Audio Director 8 (audio editing) and ColorDirector 6 (more advanced ‘colour grading’). The available editions are shown below.

PowerDirector Editions

The following editions of PowerDirector are available (showing the official price and the current offer price in parentheses):

  • PowerDirector Ultra £219.97 (£54.99) – the basic video editing package
  • PowerDirector Ultimate £239.97 (£54.99) – Ultra plus extra effects
  • PowerDirector & PhotoDirector £109.99 (£84.99) – Ultra plus image editor
  • PowerDirector Ultimate Suite  £209,99 (£159.99) – Ultimate plus AudioDirector & ColorDirector
  • PowerDirector Director Suite £249.99 (£164.99) – Ultimate Suite plus PhotoDirector

For full details see feature comparison chart:

So which should you buy? 

For all the essential video editing features, the Ultra edition is fine. The Ultimate edition, which comes with additional plug-in effects is, at the time of writing, on offer at the same price as the Ultra edition, so that is obviously the one to get. If you need an image editor to work with still-camera images and bitmap graphics, the PowerDirector & PhotoDirector bundle is good value. The Ultimate Suite omits PhotoDirector but adds in colour-manipulation and audio editing packages – not really essential for many video-editing projects but possibly useful. However, if you are thinking of going for one of the more expensive bundles, then you may as well go for Director Suite which includes the full range of video, audio and image editing software.

Thursday 2 November 2017

Constructors in C#

C# (C-Sharp) is an object oriented programming language or OOP for short. Many modern language such as C++, Objective-C, Java, Ruby and Python are also object oriented. You can think of an object as a sort of package that wraps up data – that’s variables, such as strings and numbers – and behaviour – that’s functions or methods that do something, often by manipulating an object’s internal data.

The definition of an object is called its class. You can think of a class as a blueprint for an object. It’s just like the blueprint for a car. The blueprint defines all the fundamental features of a car but you can’t actually drive the blueprint. To use a car you have to create one based on the blueprint’s definition. That’s what you do in programming too. You write a class and you create usable objects from it. In fact, just as you can create many cars based on a single blueprint, so you can create many objects based on a single class.

When you create a new object from a class, you can call that class’s constructor to initialize the object. A constructor is a method that has the same name as the class itself. This class is called MyClass, so the constructor method will also be called MyClass.

public MyClass( ) {

The constructor has to be public – that is, it has to be visible to code outside the class itself – because clearly I need to call the constructor method from other parts of my program, whenever I want to create a new MyClass object.

A constructor doesn’t have to have any parameters. However, when an object has some internal fields, it is quite common for the constructor to define a list of parameters to initialize those fields. In that case, when you invoke the constructor, to create a new object, you would need to pass the appropriate arguments to initialize those fields. When an object descends from another object and the object from which it descends has a constructor that initializes some fields, the descendent class’s constructor can call the ancestor class’s constructor, passing to it any arguments required by the ancestor constructor to initialize its fields. It does that by putting a colon after the parameter list of the constructor, then the keyword base, then a comma-separated list of arguments between parentheses.

This short video (taken from my course ‘Learn C# Programming (in ten easy steps)’ gives a few more details about C# constructors.

This course was first created in 2012 but now, in 2017, it has been completely remade. Every single video has been re-done and no less than 86 new video lessons have been added. What’s more, students can also download the entire version 1 of the course (almost 4 more hours of video) as an added bonus. This is what the course contains:

  • 117 video lessons
  • 7 hours, 7 minutes of video
  • 32 sample projects
  • 10 quizzes
  • 89-pages of pdf documentation
  • PLUS: The entire version 1 course as a free download!

The regular price for this course is $145. But use the link below to sign up for just $35 (valid only until the end of 2017, so don’t wait!)

Wednesday 1 November 2017

C Programming - Arrays, addresses and pointers

#include <stdio.h>

int main(int argc, char **argv) {
char str1[] = "Hello";
char *str2 = "Goodbye";
// str2 = &str1;
// str2 = str1;
printf("%d %d %s\n", &str1, str1, str1);
printf("%d %d %s\n", &str2, str2, str2);
return 0;

Let’s now look at how pointers and addresses work in C – and why arrays are special. In the code shown above I declare two string variables, str1 and str2. You can create string variables using either syntax but you need to understand that these two variables are by no means the same as one another. The first, str1, declared with a pair of square brackets is an array. The second, str2, declared using the star operator, *, is a pointer. As we know (see previous article), an array and an address are equivalent. So str1 is the address at which the array of characters in the string “Hello” are stored. But str2 is a pointer whose value is not the string “Goodbye” but the address of that string. So str2 'points to' the address at which the characters “Goodbye” are stored.

This should be clearer when you run the code.

When displayed as an integer value, the address of str1 (returned by the & address-of operator) is the same as the value of the variable str1 itself. That’s because str1 is an array - and an array is, in effect, an address.

But the address of str2 (returned by the & address-of operator) is different from the value of the str2 variable. Here the address gives us the location in memory of the pointer variable, str2. But the value of that variable is the address of the array of chars to which it points.

str1 is the location of the start of this array of characters, “Hello”, in computer memory. The address of str1 is the location where that string of chars begins.

But the value of the pointer variable str2 is a number that gives the location of the start of the array of characters “Goodbye” in computer memory. The address of str2 is the location where the str2 pointer variable is stored – and if we just want to get at data in the array, the address of the pointer variable itself is of no interest to us. For now, I’m only interested in the address of the array to which this pointer points. The value of str2 is the address of that array: the address of the first character in the string “Goodbye”.

The video below is taken from my online course, Advanced C Programming: Pointers. You can subscribe to this course, for a limited period, and save 63% by clicking this link. This lets you join up for $35 (regular price is $95):

Monday 30 October 2017

C Programming – Arrays and Pointers

One of the things I’ve discovered, through teaching C programming, is that many students find it extremely hard to figure out how arrays work. In most modern programming languages, arrays seem to be simple lists of items like a virtual filing cabinet with numbered drawers for storing things. But that’s quite a ‘high-level’ abstraction of an array. C doesn’t do arrays like that.

In C, you are forced to deal with the way the computer actually stores these items in memory. And that’s when you discover the surprising fact that an array – or a string – is an address. That’s right. It is a memory location. What? But how can that be…?

Let me explain. The address of the array is the same as the address of the first item in the array. To understand this, let’s look C strings. C does not have a dedicated string data type. In C, a string is an array of characters that are terminated by a null character ‘\0’.

Consider this short program:

#include <stdio.h>

int main(int argc, char **argv) {
char str1[] = "Hello world";
printf("%s %c %d %d %d\n", str1, str1[0], &str1, &str1[0], str1);
return 0;

First it displays string – that is, the array of characters – of the variable str1, then the character at index 0, that is, at the first index of the array which here is H of ‘Hello world’. Then it shows the address of the array, which is this number representing a memory location (here, I am using %d in the format string to show it as a decimal value, but many compilers prefer you to use %p to show a hexadecimal value). Now I get the address of the first character. Remember that I said that the address of the array is the same as the address of the first item in the array. Well, if you run this program you will see that is true because the address of the character ‘H’ (which is shown when I use the ampersand ‘address-of’ operator) is the same as the address of the string, shown when I use the address-of operator with the string variable, str1. But look at this last value here. Instead of using the ampersand to get an address, I just display the variable itself, str1, as an integer using %d in my format string. And this shows the same number – the address of the array.

The address of an array is the same as the address of the first item in the array. Because it’s where the array begins. And the name of the array – that is the name you give to the array variable – is also the address of the array.

In other words, we may tend to think of arrays as fixed-length lists. And in many other programming languages, that may be all you need to know about arrays. But, in fact, an array is really the same as an address in memory that defines the beginning of a list of data items. So when you deal with arrays, including strings, you are dealing with addresses.

The video below is taken from my online course, Advanced C Programming: Pointers.

Save 63% by clicking this link to subscribe to the course for just $35 (regular price is $95):

Sunday 22 October 2017

Clearing the Junk out of Windows

How my disk defragmenter led me to find and delete millions of unwanted files cluttering up my hard disk!

I’ve spent the last three weeks defragmenting my hard disk. Yes, really!  And along the way I’ve discovered that I had several million useless files clogging up the disk in hard-to-find, difficult-to-delete subdirectories.

It all started when I decided to move all the programs and files I use most often onto a new PC and leave my old PC free for testing and reviewing software. It seemed to go pretty well until I decided to defragment my old PC’s hard disk. The PC’s startup time had been getting slower and slower over the years. Defragmentation was just one of the measures I took to speed it up. I first tried using the standard Windows defragmenter (right-click the disk drive in Windows Explorer, then select Properties/Tools/Defragment now). That was not only horribly slow but, to make matters worse, it provided very little feedback to show what, if anything, was being defragmented.

Windows Defragmenter - it does the job but is far from informative!

So I tried out Piriform’s free Defraggler instead. This wasn’t exactly quick either but at least it showed me what it was doing. It displays a colour-coded representation of your disk, showing fragmented files, unfragmented files, when data is being read and when data is being written. It also shows a list of fragmented files and you can optionally defragment selected files. The only trouble was that Defraggler got stuck in the initial analysis stage of defragmentation. It showed it had analysed 100% of my disk and then just stayed there, constantly busy, but continuing to show 100%. I suspected that it was stuck analysing a specific set of problematic files, but I didn’t know which ones. Clearly I needed to know which files were taking up most of my disk space.

Defraggler - a free tool that shows you what it's doing!
The rather good free disk mapping too, TreeSize, helped out here.  This draws a map of your disk sorted by the directories containing either the largest amount of data or the largest number of files. It took quite a while to finish and I was prompted a few times to ask if I wanted to abort. But I stuck with it and eventually it showed me exactly what was causing all my problems.

TreeSize - a very useful disk-mapping utility
The folder c:\Windows\sysWOW64\config\systemprofile\AppData\Local\Microsoft\Windows\Temporary Internet Files\Content.IE5 contained over 11,000,000 files (yes, I really do mean eleven million!) while c:\Windows\system32\config\systemprofile\AppData\Local\Microsoft\Windows\Temporary Internet Files\Content.IE5 contained another three million. Where the heck did they come from?

It took me a while to figure it out. Then I came across this article written by someone who had experienced a similar problem: That jogged a memory. Years ago – many, many years ago – I has used the Fusion Assembly Binding Log viewer (Fuslogvw.exe) to help the debugging of some software my company was then developing.  This tool keeps track of DLL loading and it writers a tiny HTML file to store each bit of information. This article explains this:

I’d forgotten all about Fuslogvw. And over the years it had been busily writing files, millions of files, that I neither needed nor even knew were there. To stop it doing so, I just went into the Registry Editor and disabled it. This explains how to do that:

OK, so maybe my problem is pretty obscure. But it illustrates a more general problem when doing disk intensive operations such as backups and defrags. Namely: the more files you have, the longer the backup or defrag takes. And millions of files, as I had, can really slow things down. The obvious solution is to delete them. But how?

Using Windows Explorer to delete this number of files is incredibly slow. Besides which, in special Windows system directories you may need Admin privileges. The solution then is to load a command prompt (Windows Menu/All Programs/Accessories/Command Prompt) – but don’t just click Command Prompt. Right-click it and select ‘Run as administrator’. Then navigate to the directory containing all the unwanted files and enter del *.*

Urgh! But deleting files this way is incredibly slow and it gives you no information on whether or not any files are actually being deleted. My solution to that was to write a simple batch file that deleted all the files ending with .htm alphabetically (first delete those starting with ‘A’, then ‘B’, all the way up to ‘Z’, then all those starting with ‘0’ up to ‘9’…) and showed me the times when each group of files had been deleted. That didn’t speed up the file deletion but at least it gave me peace of mind to know that something really was happening. Here’s a short fragment of that batch file to show what I mean:

time /t
del A*.htm
time /t
del B*.htm
time /t
del C*.htm
time /t

Anyway, it took me about three days (night and day) to delete those files. Once I’d done that I ran Defraggler again and this time it got on with the job pretty effectively. Along the way, I discovered a whole load of other directories containing unneeded junk. For example, some programs which I had long ago uninstalled, had left all kinds of stuff under \ProgramData. I duly removed  them. I’m not providing any details, however, since some apparently unneeded files under \ProgramData and other ‘system’ folders may be important and I don’t want to be blamed for encouraging you to delete anything that may cause problems. When you go hacking around in these directories you are on your own! But if, like me, you are frustrated by the slow speed of your defragging or disk backup programs, you may want to take a look, using TreeSize, to see if your disk space is being taken up by junk you didn’t know about. You’ll almost certainly find that it is!

Thursday 5 October 2017

VEGAS Pro 15 Review

VEGAS Pro 15 Edit – € 399 / $399 / £299
VEGAS Pro 15 – € 599 / $599 / £499
VEGAS Pro 15 Suite – € 799 / $799 / £649

If you’ve used VEGAS before, the first thing you’ll notice when you load the new version is that it looks nicer. I’ve criticized VEGAS before for its rather inelegant and screen-hogging user interface so I am pleased to see that version 15 gets rid of some of the unnecessary clutter.

For a general overview of VEGAS see my previous review of VEGAS 14.

The user interface has redesigned icons, full-colour timeline tracks and the addition of four switchable colour schemes. As in previous releases, you can tailor some elements to taste – for example, by selecting alternative track colours. A new feature lets you switch the overall colour scheme of the entire user interface from a choice of four: Dark, Medium, Light or White. However, there is no way of previewing the colour-scheme change when you make it. Any change you make is only applied after you restart VEAGAS which, let’s be frank, is hardly the final word in user-friendliness!

In an attempt to reduce clutter, some new context-sensitive menu configuration tools (called, ‘hamburger’ buttons) have been added. These buttons are shown as three horizontal lines which appear on various UI elements such as the video preview window, the track panel and also in the top right-hand corner of individual video and audio clips. When you click the hamburger button a drop-down menu appears from which you can select various options. For instance, in the video preview window the hamburger menu shows items to go to the next or previous frame, to the start or to the end. In the track pane, it pops down a cascading menu to let you track motion, bypass motion blur, select a compositing mode and various other arcane options. If you decide that you need these features frequently and want a faster way of getting at them you can add them as icons to the window or tool itself.

Hamburger buttons have been around for a while – they are often used in mobile apps and web sites to hide functionality and keep the interface ‘clean’. Some users hate them. I have to say, though, that the way they are used in VEGAS (to hide less frequently used options or configure the selected track or window) they seem to me to be a reasonable way of keeping the user interface under control.

Notice the ‘hamburger’ buttons that provide menus from both the preview window and individual media clips
You can also rearrange the windows and the pages on tabbed panes by dragging them and dropping them into selected areas of the workspace. To redock an undocked pane you have to hold CTRL while dragging. Once you’ve created a layout you like you can save it by name or you can select from one of the redefined layouts – this is just as well as I found that it takes quite a bit of trial and error to redock tabbed panes in exactly the place you want (I kept accidentally messing up the layout in my attempts) once they’ve been undocked!

But never mind the appearance, what about new and improved functionality? Top of my personal list of desirable features would be increased rendering speed, so I was pleased to see that this is one of VEGAS 15’s claimed improvements.

There is no simple way to benchmark the speed of video rendering. The size and format of the project media, the overhead due to any editing and effects that have been added, plus the rendering varying efficiency of different production settings and the specifics of your computer hardware setup all have an impact. Even so, I decided to run a very simple test to get some idea of the speed of video rendering.

I ran this test on a PC with 16Gb of system memory and a NVIDIA GTX 980Ti graphics card with 6 Gb of video memory. I tried rendering a single 5 minute 25fps 1920x1080 video clip, with no editing applied. I enabled the NVIDIA GTX GPU acceleration using the VEGAS Preferences dialog. In VEGAS 14 I rendered as Mainconcept AVC/AAC H.264 MP4 at the original video size (1080p). It took 8 minutes and 52 seconds to render.  With VEGAS 15 the same clip was rendered with MAGIX AVC/AAC MP4 (the replacement for the Mainconcept format). It took 8 minutes and 10 seconds to render. So, in short, not much difference. For the sake of comparison, I rendered the exact same clip in Cyberlink PowerDirector 15 (AVC H.264 MP4, 25fps, 1080p with its hardware video encoder enabled) and the entire video was rendered in 31 seconds. Yes, really! More than 7 and a half minutes faster than VEGAS 15.

You may need to go and take a break while your videos are rendered
Now, as I say, rendering results vary according to numerous different factors and it may be that for certain projects, with certain hardware and rendering settings, VEGAS can be made to render more efficiently. There is, at any rate, a long discussion thread about this here:

All I can say for sure is that, in long experience of video editing and producing, Cyberlink PowerDirector has by far the fastest video rendering of any program I’ve ever used. VEGAS 15 doesn’t, as far as I can see, offer any real challenge in this respect.

One thing I do like is the new interactive sizing and cropping of video clips. Both Picture-in-Picture and Crop editing have been improved so that you can, for example, modify the size and position of a video clip that overlays another clip. For instance, if you have a video clip showing some scenery or a tutorial of some sort and you want to overlay a ‘talking head’ clip, you just drop the overlaid clip onto a new track and apply the ‘picture in picture’ plugin to it. This now lets you move and resize the overlaid clip right inside the video preview window. You can, of course, achieve the same results by panning and cropping the overlaid clip as in earlier VEGAS releases. But traditional VEGAS pan/crop has to be applied in a popup dialog so the new interactive PIP tools add an extra level of convenience. The Crop plugin works in a similar way. You start by dropping Crop from a list of plugins onto a video track. In order to do the actual cropping you have to pop up the Crop dialog box and then you can either make adjustments using sliders or you can drag the edges of the video clip in the preview window.

If you add a video overlay, you can use the Picture In Picture plugin to alter its size, position and rotation either using a dialog box or by dragging and dropping the overlay using the mouse
There are numerous other enhancements to tools throughout this release. These include the ability to selectively paste event attributes’ (such as an audio pitch shift, transitions or pans and crops) from one clip to another. And you can automate video rendering and uploading to YouTube, Facebook or Vimeo.

There are improvements to colour grading using lookup tables and enhanced titling capabilities. An expanded range of 3rd party plugins has been provided (for the Pro and Pro Suite editions). These include plugins some of the best known suppliers – BorisFX, HitFilem and NewBlueFX. You can find the full range of improvements and additions listed online along with a number of short video demos and tutorials:

In summary, this release of VEGAS has some useful improvements both to functionality and interactivity. But it has both the strengths and the weaknesses of earlier versions. Its ability to chain together multiple effects, for example, and tweak individual parameters in the ‘effects chain’ provides a high level of editing control but the downside is that this means that you have to do a lot of work in popup dialog boxes which can be quite fiddly and time-consuming. And its video rendering speed may have been improved a bit but it is still far from being a speed-demon. So if you need precise editing control and don’t mind the extra time it takes to edit and render, VEGAS has a lot to offer. But if you just want to get a whole load of videos edited and uploaded as rapidly as possible, VEGAS may not be the best choice.

Wednesday 20 September 2017

C Programming for Beginners: Operators

This is part 4 of my series on C programming for beginners. (See also part 3)

In your programs you will often want to assign values to variables and, later on, test those values. For example, you might write a program in which you test the age of an employee in order to calculate his or her bonus. Here I use the ‘greater than’ operator > to test of the value of the age variable is greater than 45:

if (age > 45) {
bonus = 1000;

Operators are special symbols that are used to do specific operations such as the addition and multiplication of numbers. One of the most important operators is the assignment operator, =, which assigns the value on its right to a variable on its left. Note that the type of data assigned must be compatible with the type of the variable. This is an assignment of an integer (10) to an int variable named myintvariable:

int myintvariable;
myintvariable = 10;


Beware. While one equals sign = is used to assign a value, two equals signs == are used to test a condition.

= this is the assignment operator.
e.g. x = 1;

== this is the equality operator.
e.g. if (x == 1) 


C can perform tests using the if statement. The test itself must be contained within parentheses and it should be capable of evaluating to true or false. If true, the statement following the test executes. Optionally, an else clause may follow the if clause and this will execute if the test evaluates to false. Here is an example:

if (age > 45) {
bonus = 1000;
} else {
bonus = 500;

You may use other operators to perform other tests. For example, this code tests if the value of age is less than or equal 70. If it is, then the conditional evaluates to true and "You are one of our youngest employees!"  is displayed. Otherwise the condition evaluates to false and nothing is displayed:

if (age <= 70){
printf("You are one of our youngest employees!\n");

Notice that the <= operator means ‘less than or equal to’. It performs a different test than the < operator which means ‘less than’. These are the most common comparison operators that you will use in tests:

== // equals
!= // not equals
> // greater than
< // less than
<= // less than or equal to
>= // greater than or equal to


Some assignment operators in C perform a calculation prior to assigning the result to a variable. This table shows some examples of common ‘compound assignment operators’ along with the non-compound equivalent.

operator                    example                       equivalent to
+= a += b a = a + b
-= a -= b a = a - b
*= a *= b a = a * b
/= a /= b a = a / b

It is up to you which syntax you prefer to use in your own code. Many C and C++ programmers prefer the terser form as in: a += b. But the same effect is achieved using the slightly longer form as in: a = a + b.

I’ll explain prefix and postfix operators in the next article. And if you want to learn C in more depth, why not sign up to my online video course – C Programming for beginners. See here:

Monday 4 September 2017

iClone 7 Review

iClone 7 $199
iClone 7 Pro Bundle (includes 3DXchange7 Pro and Character Creator 2) $299

iClone 7 is a 3D animation package. It lets you create and render scenes populated with animated figures. It provides realtime animation, so that you can view your animation as you create it rather than being forced to wait until it is rendered. It can be used either for creating animations from scratch or it can exchange data with other packages including game development software such as Unity or general-purposes modelling and animation software such as Maya, 3ds Max and Blender. It can also be used for creating still images and for designing figures and animations to be used in games created using packages such as Unity 3D or Unreal (though you may need additional tools and licenses to use some exporting options).

iClone 7 is a 3D animation package. Here I am editing a supplied cartoon-like figure. I’ve added two props (a hat and dark glasses) and applied a predefined pose.

This is how Reallusion describes the product: “Integrated with the latest real-time technologies, iClone7 simplifies the world of 3D Animation in a user-friendly production environment that blends character creation, animation, scene design and cinematic storytelling. The GPU powered renderer gives unparalleled production speed and artistic visual quality. The iClone Animation Pipeline seamlessly connects industry-standard 3D tools and game-engines for interactive applications, film and virtual production.”

Let’s see how you get started. First, let’s suppose you want to animate a character. You can use a pre-designed figure by selectin one from the Content panel and dropping it right into the main edition area. Here you can tailor the figure as required by morphing and shaping it. You can do that using dialog boxes to set parameters to change the width of the mouth, the length of the hair, the figure’s height, muscularity and so on. Then you can go on to add clothes from a supplied library and use a timeline editor to modify and animate the figure’s movement and facial expressions.

You can also create entire scenes by arranging objects – chairs, doors, stairways and so on - and you can use the software to make adjustments to the lighting, including subtle effects from multiple-light sources and reflections from surfaces. For advanced video-makers, there is even the ability to use simulations of real-world cameras to ‘film’ the action using settings based on specific real-world camera models. The video below provides a short overview of some of the most significant new features in this release.

Where to start?

This is undoubtedly a powerful product. But, if you are new to iClone (as I am), how easy is it to learn to use? Well, in my experience, it is by no means easy as it could be. The user interface looks really slick but it is also very, very complicated. There is a menu system across the top - File, Edit, Create, Modify etc. – and each menu item shows a drop-down menu with many items having further levels of pop-out menus. Below this is a toolbar of icons covering features ranging from scaling and rotating to enabling global illumination and setting constraints. Then there are multi-page docked panels at the sides (Template, Animation, Stage, Modify and more) which are furher complicated by sub-selecting side-tabs (Content, Scene, Visual), nested pages (Template, Custom) which contain collapsible outlines of items (Characters, GI, Morph and so forth) used to browse folders of items shown in yet another nested pane. The arrangement of views can be altered by selecting various workspaces from a menu (Standard, Visual Effects, Animation etc.) and in some of these workspaces an animation Timeline appears down at the bottom of the screen.

But where exactly do I start? Several cups of coffee later, a browse through the online Help and a visit to the web site to watch some video tutorials and I am still not entirely sure… To give them their due, I have to say that Reallusion has a lot of online lessons and having watched a few I quickly discovered that I use iClone to create scenes, modify figures, add props, do facial animation and much more besides. But I didn’t find a simple “This is how to create your first iClone 7 project” lesson.  Or “Your first ten minutes with iClone”. The online Help isn’t that helpful either. It starts with a detailed section on the user interface ‘Knowing The Environment’ which laboriously documents all the menus and panels before going on to explain optimal rendering settings and the various software capabilities – 3D character generation, Character Animation, Facial Animation and so on. Yes, this is no doubt a great reference. But even so, as a beginner – where do I start?

The user interface is quite crowded, with panels, pages, buttons, icons, menus and folders all needing to be navigated. The editing is fast and good quality, though. Here I am posing one of the supplied figures.

OK, so over the years I’ve used numerous graphics and animation packages – everything from general-purpose packages such as Cinema 4D and Blender to specialist packages such as Vue (for landscape design) and Poser (for character animation) so with a bit of playing about I was eventually able to work out how to create geometrical objects, add and modify characters and do some basic animation. Assuming you have previous experience, you too should probably be able to work out how to create and animate simple objects fairly quickly just by trial and error. But if you are completely new to 3D design and animation, iClone doesn’t go out of its way to help you get going.

Let’s assume that you stick with it long enough to get over the initial hurdles. The good news is that adding and animating objects is actually quite a fast and straightforward business once you know how. You can even animate cameras to, for example, follow an object or change its focal length to ‘zoom in’. You can make most of these changes by selecting specific ‘modes’ by clicking icons to scale, move or rotate objects but some things, such as camera focal length, need to be selected in one of the docked panels. Each change is automatically added as a marker or ‘keyframe’ on the timeline and the motion between keyframes is automatically calculated by the software.

More, more, more…

Things start to get a bit more interesting when you use some of the supplied content. There are ready-to-use figures that can be dropped into the edit view ready for you to animate. To save time, you can even drop on some predefined poses and animations – for example, there is a ‘leaning against a wall’ pose and a ‘walking down a catwalk’ animation. When these are added, the figure immediately adopts the pose or follows the predefined animation. It’s worth noting, by the way, that (assuming your computer has the appropriate memory and graphic requirements – see below) the quality of the in-editor preview is extraordinarily good. The facial animation is slick too. The skin and muscles really do seem to respond pretty convincingly when a character moves its eyes, smiles or speaks.

Here I’ve re-posed my figure just by dropping onto it one of the predefined poses. This will need some manual adjustments (his fingers seem to be going through his boots).

Here I’m fixing the hand position using a feature called ‘Edit motion layer’ that lets me move virtual bones to repose the figure. You can also animate figures with predefined animations.

When you’ve finished designing and animating you can render your video in a variety of formats and resolutions up to a theoretical 3840 x 2160 – but in fact when I tried to produce video at that resolution on my Windows 7 PC it warned me that 1920 x 1088 is the maximum possible on Windows 7 or 8.

Overall, this is a remarkably capable package that lets you create and edit scenes, figures and animations and shows an impressively high resolution and fast preview of animations right inside the editing area. If you are already an experienced animator you will probably be able to ‘guess your way’ around the user interface to find the essential resources, properties, tools and timelines reasonably quickly. If you are not so experienced, however, the learning curve is likely to be steep. In spite of a fairly detailed manual and a good range of tutorial videos, this software really would benefit from one or more ‘quick start’ guides to get the new user up and running quickly.

Bear in mind too that while it comes with a number of ready to use figures, props and scenes, these may not supply everything you need, depending of course on the type of project you are working on. Reallussion has many additional add-in packages that can fill the gaps. These include libraries of additional characters, monsters, talking heads, video effects and 3d assets. There are also plug-in tools for thing such as motion capture, Chroma key (green screen) and enhanced rendering. In fact, I suspect that the market for add-ins and additional content explain the relatively low price of the base software. True, you can do a great deal without paying for any of the added extras, but many of the optional add-ins are so darn’ useful that most serious iClone user will probably want to buy some of them at some point.

Overall then, this is a good, low-cost animation package that could be both useful and fun for the serious amateur animator, graphic artist or video-maker. It does take some effort to learn but once you are over the initial hurdles, it really is quite impressive. If you plan to use it professionally, however, for example to create characters for 3D games you may need to buy some additional tools and content which could push up the price quite a bit.

iClone 7 Recommended System Requirements

  • Intel i5 dual core CPU or higher
  • 8GB RAM or higher recommended
  • 10GB free hard disk space or higher recommended
  • Display Resolution: 1920 x 1080 or higher
  • Graphics Card: NVidia Geforce GTX 600 Series/ AMD Radeon HD 7000 Series or higher
  • Video Memory: 2GB RAM or higher recommended
  • Video card compatible with Pixel Shader 3.0 recommended for optimized visual performance

Tuesday 15 August 2017

Landscape Pro 2 Review

Anthropics Technology Ltd.

So you take a photo. Everything looks great. The arrangement of the sea, the mountains in the distance, the people in the foreground is just as you want it. The trouble is, it’s all a bit dull. The lighting is flat. The sky is dull. The water is as flat and boring as a mill pond.

That is where Landscape Pro can help out. This program can change the lighting, the colours and the atmosphere of an image. It does this by letting you select different image elements – sky, water, mountain, grass and so on – and then changing its visual properties such as the colour and brightness or by dropping in completely new images to, for example, substitute a dramatic cloudy sunset sky for a boring cloudless afternoon sky.

My boring holiday snap loaded into Landscape Pro 2. What can I do to add some drama to it?

I reviewed the previous version of Landscape Pro HERE. For a quick overview of its features, be sure to read that review.  This latest release is broadly similar in both look and operation to its predecessors. Some small improvements have been made to the user interface (including the addition of separate icons for the Save and Save As buttons which I criticised in my previous review).

However, the most significant changes include a large expansion of the number of ‘presets’. So, for example, there are now over 100 new skies – that is, images of a daytime and night-time skies, sunsets, storms and unusual skies including rainbows and auroras. The selection tools have been improved and there is a new 3D lighting brush that lets you ‘paint’ lighting effects onto selected surfaces of structural objects and scenes.  And one of my favourite improvements is the ability to make lakes and seas reflect the sky, producing more convincing results than hitherto.

First you need to select important photo elements such as water, buildings and sky. Landscape Pro does this automatically and you can extend regions if it fails to get the boundaries exactly right.
Then you can select presets from a panel on the left or use sliders to make fine adjustments to specific image elements, tones and colours.

You can switch instantly from one preset to another. Notice here I have chosen to reflect the new sky in the water of the lake.
And here I have selected a new sky to put my once quite dull scene into a dramatic sunset!
All in all, this is a great product for anyone who wants to fix faults or add dramatic effects to landscape photographs.  The regular price of £59.90 is quite reasonable but the current offer price of £29.95 makes it a really good buy.

There are also some higher end editions.  Landscape Pro Studio (£99.990 but on offer for £49.95) supports some additional camera and image output formats and also works as a PhotoShop or Lightroom plugin.  Landscape Pro StudioMax ($199.90, on offer for $99.95) has everything in Landscape Pro Studio plus batch mode for quickly processing multiple images and a histogram panel. See the feature lists for full details:

System requirements:
Windows 10, Windows 8, Windows 7, Vista or Mac OSX (10.7 or later)

Sunday 30 July 2017

The Golden Wombat Of Destiny (the game, the musical and me)

Little did I know when I wrote my first big computer program that it would end up as possibly the most enduring thing I’ve ever done. This was back in the early 1980s. Having decided to learn how to program, I bought myself a copy of Turbo Pascal and within weeks I’d embarked on writing a text-based adventure game of vast complexity (it’s more normal for a beginner programmer to begin by learning how to print “Hello world” but I obviously had ambitions well above my talents). Anyway, it took me a year to write that game, The Golden Wombat Of Destiny, and it was one of the most difficult things I’ve ever done. Also one of the most enjoyable. It taught me more about programming that I could ever have learnt if I’d followed a more traditional route.

You can still download a copy of the game from THIS PAGE should you be interested.

When it was finished, I sent it away to a distributor of public domain (free) software. And pretty soon it was being played by people all over the world. I know this for a fact, because in subsequent years many of them wrote to me…

I’ve kept a stack of old letters. Here are some extracts…

“I am writing from the padded cell into which I was flung after being driven completely loopy by your dreadfully devious game…”
(A Wombat Fan from Nottingham, UK)

“I’m stumped. I’ve been trying to crack (your game) for a few months now…”
 (A Wombat Fan from Ballajura, Australia)

“Have you thought of developing a visual version of ‘Wombat’? … Can’t imagine what a potto looks like.”
(A Wombat Fan from Honolulu, Hawaii)

“I was really frustrated when I played your game because I couldn’t get into the Forbidden City…. Then my dad found the trapdoor. Your game gave me a great many laughs.”
(A Wombat Fan from a town whose name includes letters that don’t even appear on my keyboard, Finland)

I also occasionally get letters saying something like “I really enjoyed playing your game when I was little. Now I’m playing it with my grand-daughter” (which makes my heart sink somewhat – it doesn’t really seem so long ago).

Over the years I’ve also been approached by several people who wanted to turn The Wombat into a play or a film. None of these ventures has ever come to fruition. So I was, to say the least, surprised when Peter Theophilus-Bevis not only asked me if he could create a film musical about the Wombat but then went ahead and actually did it!

Um, but before you watch it, here is the obligatory “author’s introduction” which will no doubt feature among the Extras on the DVD when the Director’s Cut is eventually released….

And here is The Golden Wombat Of Destiny epic musical movie itself….

Thursday 22 June 2017

MAGIX Video Pro X (2017 edition) review
£349 (399.99 Euros)
[Currently (June 2017) on offer at: £299]
Upgrade from previous version: £149 (199.99 Euros)

If you need a good video-editing package for Windows, the latest release of Video Pro X from MAGIX software is something that you may want to consider. It’s a nice-looking, easy-to-use package that lets you import video and audio clips, edit them on a multi-track time-line, apply transitions and video effects and export the final movie in various common formats. For a broad overview see my review of the previous release, Video Pro X 8. Contrary to expectations, this new release is not called Video Pro X 9. The number has now been silently omitted. This is now just plain Video Pro X. More on that later…

The main new feature in this version is something called ‘deep colour grading’. Colour grading is a post-production process for altering the overall appearance of your video by changing the colours. This may involve ‘colour correction’ (adding warmth to the colour of a video made using cold-looking studio lighting, for example) as well as effects to  make the videos look more vibrant or subdued or to give them the look of certain types of traditional film stock. This is what MAGIX has to say: “Colour-true processing of material is carried out by precise measuring instruments: vectorscope, waveform monitor, histogram and RGB parade. The software supports all formats from the professional and consumer sector such as ProRes, HEVC 10-Bit, AVC and MPEG-2. Thanks to new support for lookup tables (LUT) in Video Pro X, it can sync flat recordings with LUTs from the camera manufacturer or upload cinematic effect LUTs to create unique film styles. Lookup tables save colour grading information and can easily be imported and applied, or custom created and saved.”

Here I’ve applied one of the (admittedly fairly extreme) Lookup Table colour effects to a clip. The original clip is on the right. The one with the colour effects applied is on the left.
Colour grading can be a fairly specialised area of video processing and high-end professional users may use a combination of expensive software and hardware (editing and mixing panels) for this job. By integrating a useful range of colour correction tools, Video Pro X seems to be trying to appeal to the ‘mid range’ professional video-maker. However, you need to be aware that, in spite of heavy promotion of this feature, Video Pro X does not provide a completely new ‘Colour Grading’ toolset (as I was expecting). Instead, the existing colour manipulation effects such as brightness/contrast, Colour, Colour Correction and Shot Match (the ability to automate make two video adopt the same range of colours and tonal values) have all been updated to provide greater (16-bit) colour accuracy. There are also sets of predefined colour schemes called ‘lookup tables’ which let you quickly apply to a clip a set of colour values with names such as ‘Cinematic’, ‘Neo’ and ‘Vintage’.

The other principal changes to this release of Video Pro X are support for more video formats such as H.264 and HEVC/H.265; more control over audio processing for sound mixing and audio restoration; and various new effects including some new blurs and masks that can be ‘attached’ to moving images. It also does 360 degree ‘video stitching’ and exporting, assuming you have a camera capable of recording 360 degree videos.

As I mentioned earlier, Video Pro X no longer uses version numbers. The idea is that rather than release a mass of updates all at once, when a new version is released, updates will be made incrementally as the software continues to be developed. The purchaser gets all new updates at no additional cost for one year. After that, you can carry on using your existing version but you will only get updates if you extend your ‘Update Service subscription’ at an additional cost.  That cost is, in my view, rather high at £149 (199.99 Euros). I can’t say I’m terribly keen on this subscription model. When software is upgraded with a numbered release you should usually expect to see a definitive list of fairly substantial changes and you can then make an informed decision on whether or not the upgrade cost is worth it. By signing up to a ‘trickle through’ system of updates you have no real idea whether you are paying for major new features or just minor changes and bug fixes.

The other thing I dislike about this ‘non-numbered’ update system is that new versions of the software overwrite older versions. If you have an older version that works and that you are happy with, that means that you cannot keep that installation while you evaluate a new release. I experienced a problem with this myself. When I installed the latest version, it failed to activate successfully online. I had to consult MAGIX technical support to find out how to remove an initialisation file in order to uninstall and reinstall the software and activate it as required. If a user had a similar – or even more catastrophic – problem with installation, there would be no way to revert back to the older release while that problem was solved because the new installation automatically removes any previous release. I think that’s essentially undesirable.

MAGIX often has special deals and added extras on offer. At the time of writing, a bundle is offered including 3rd part effects such as the HitFilm Toolkit pack which I am using here to enhance skin tones.
So, in short, how does this latest release compare with the previous one? Is it worth upgrading? The only ‘big’ new feature in this release is the integrated colour grading. Now, I don’t mean to underestimate the importance of this. If you want more control over colour temperature, saturation and so on, well, this will give it to you. And for artistic video-making – for example, if you want to convey mood and drama in your videos – that’s a good thing to have. But if that is not of compelling interest to you, then it seems to me that this new release is a bit thin on exciting new features.


Video Pro X is a good general-purpose video editing application that (depending on your perspective) sits at the high end of the ‘serious amateur’ or low end of the ‘professional’ calibre products. MAGIX also markets the VEGAS video-editing suites, which it acquired from Sony (see my reviews of VEGAS Pro Edit 14 and VEGAS Movie Studio). As I’ve said previously, this large range of competing editions is confusing. It’s confusing to me and I can only assume it must be equally confusing to most potential customers. The various editions of VEGAS range from beginner to advanced level. It appears that the high-end VEGAS editions are now considered to be the more professional-level of the offerings from MAGIX since ‘upgrade’ deals are offered from Video Pro X to VEGAS Pro Edit ($199) or VEGAS Pro ($299).

Video Pro X is pretty easy to use and has a decent range of features. Personally, I’d be happy to use it for most video-editing projects. As for the value of the new additions, though, that all depends on how much you need ‘deep colour grading’. If you don’t feel any compelling need for this feature, then this new release may seem somewhat underwhelming.

Tuesday 6 June 2017

C Programming for Beginners: Variables and Types

This is part 3 of my series on C programming for beginners.

See also: part 2.

When you want to store values in your programs you need to declare variables. A variable is simply a name (more formally, we’ll call it an ‘identifier’) to which some value can be assigned. A variable is like the programming equivalent of a labelled box. You might have a box labelled ‘Petty Cash’ or a variable named pettycash. Just as the contents of the box might vary (as money is put into it and taken out again), so the contents of a variable might change as new values are assigned to it. You assign a value using the equals sign (=).

In C a variable is declared by stating its data-type (such as int for an integer variable or double for a floating-point variable) followed by the variable name. You can invent names for your variables and, as a general rule, it is best to make those names descriptive.

This is how to declare a floating-point variable named mydouble with the double data-type:

double mydouble;

You can now assign a floating-point value to that variable:

mydouble = 100.75;

Alternatively, you can assign a value at the same time you declare the variable:

double mydouble = 100.75;


There are several data types which can be used when declaring floating point variables in C. The float type represents single-precision numbers; double represents double-precision numbers and long double represents higher precision numbers. In this course, I shall normally use double for floating-point variables.


Now let’s look at a program that uses integer and floating point variables to do a calculation. My intention is to calculate the grand total of an item by starting with its subtotal (minus tax) and then calculating the amount of tax due on it by multiplying that subtotal by the current tax rate. Here I’m assuming that tax rate to be 17.5% or, expressed as a floating point number, 0.175. Then I calculate the final price – the grand total – by adding the tax onto the subtotal. This is my program:

#include <stdio.h>

int main(int argc, char **argv) {
int subtotal;
int tax;
int grandtotal;
double taxrate;

taxrate = 0.175;
subtotal = 200;
tax = subtotal * taxrate;
grandtotal = subtotal + tax;

printf( "The tax on %d is %d, so the grand total is %d.\n",
subtotal, tax, grandtotal );
return 0;

Once again, I use printf to display the results. Remember that the three place--markers, %d, are replaced by the values of the three matching variables: subtotal, tax and grandtotal.

When you run the program, this is what you will see:

The tax on 200 is 34, so the grand total is 234.

But there is a problem here. If you can’t see what it is, try doing the same calculation using a calculator. If you calculate the tax, 200 * 0.175, the result you get should be 35. But my program shows the result to be 34.

This is due to the fact that I have calculated using a floating-point number (the double variable, taxrate) but I have assigned the result to an integer number (the int variable, tax). An integer variable can only represent numbers with no fractional part so any values after the floating point are ignored. That has introduced an error into the code.

The error is easy to fix. I just need to use floating-point variables instead of integer variables. Here is my rewritten code:

#include <stdio.h>

int main(int argc, char **argv) {
double subtotal;
double tax;
double grandtotal;
double taxrate;

taxrate = 0.175;
subtotal = 200;
tax = subtotal * taxrate;
grandtotal = subtotal + tax;

printf( "The tax on %.2f is %.2f, so the grand total is %.2f.\n",
  subtotal, tax, grandtotal );
return 0;

This time all the variables are doubles so none of the values is truncated. I have also used the float %f specifiers to display the float values in the string which I have passed to the printf function. In fact, you will see that the format specifiers in the string also include a dot and a number numbers like this: %.2f. This tells printf to display at least two digits to the right of the decimal point.

You can also format a number by specifying its width – that is, the minimum number of characters it should occupy in the string. So if I were to write %3.2 that would tell printf to format the number in a space that takes up at least 3 characters with at least two digits to the right of the decimal point. Try entering different numbers in the format specifiers (e.g. %10.4f) to see the effects these numbers have. Here are examples of numeric formatting specifiers that can be used with printf:


%d   print as decimal integer
%4d   print as decimal integer, at least 4 characters wide
%f   print as floating point
%4f   print as floating point, at least 4 characters wide
%.2f   print as floating point, 2 characters after decimal point
%4.2f   print as floating point, at least 4 wide and 2 after decimal point

This series of C programming lessons is based on my book, The Little Book Of C, which is the course text for my online video-based course, C Programming For Beginners, which teaches C programming interactively in over 70 lessons including a source code archive, eBook and quizzes. For information on this courses see HERE.