I’ve been preparing to write about general architecture of our demo when I noticed, that some of the tools required to develop this project need to be updated on my mini PC. So, let’s set up the environment first.
Compiler and IDE
This will be a Windows project (at least for now), so we have a wide spectrum of compiler and IDE combinations. I will keep using probably the most popular IDE, Microsoft’s Visual Studio. Now, there are various editions of VS, and we are interested in two free versions: Visual Studio Community Edition and Visual Studio Express 2015.
What’s the difference? You cannot use plugins in VS Express and there are separate versions for specific targets. With Express for Windows, you can create apps for Universal Windows Platform, with Express for Desktop you can build standard desktop programs, and with Express for Web you can make websites, web APIs and other web-related software. VS Community Edition integrates all of this in one place, so you can use C++, Python, C#, F# plus other languages. It also allows you to use plugins and has Git integration.
So, where’s the catch? Well, as long as both are free for individual developers and you can develop free or paid software, if you are a part of an organisation and want to create something else than open source projects you cannot use VS Community Edition (actually, there is a limit of 5 users for non-enterprise organisations: those with less than 250 PCs or less than $1 Million US Dollars in annual revenue). As these restrictions don’t apply for this project, Visual Studio Community Edition is the best choice here.
It is a good practice to build project with a different compiler too. There is a chance, that it will generate additional warnings. Can you fix the code to make them disappear? And the most important question: is the program faster?
You can select GitHub Extension to install it together with Visual Studio Community Edition. A more flexible way (if you want to use Git outside VS) is to install Git for Windows and then TortoiseGit.
You probably don’t want to mess with the final audio file provided by the musician. After all, he knows what he’s doing, and the audio should be already properly normalised, mastered and cut. In this case, use an audio editor only to check timing or to put some markers inside. Audacity is a free, open source editor that should do the job. You probably don’t need commercial Adobe Audition for this.
Sometimes, when you want to use a random mp3 track from the internet it may be a good idea to normalise it. Use mp3gain to boost (or lower) the volume without re-encoding it.
This project will not feature any 3D scenes player, as this itself is a topic for a separate series of articles. We will generate most of the geometry in code. For some single 3D objects, free and open source Blender should be more than needed. Additionally, some commercial packages like Maya, Modo, Houdini often have a free (or reduced fee) educational versions.
Last but not least, one utility that is really useful if you work in the evenings or even at night. When the sun goes down, the temperature of the ambient color shifts to the red, making it warmer. It is also a signal for our bodies to increase production of melatonin, which regulates the sleep-wake cycle. Unfortunately, the monitor keeps emitting a cold blue light which simulates daylight. This can cause eye strain and sleep problems.
The solution is to match the color temperature of the display screen to the environment. This can be achieved by suppressing the blue component of the image. I recommend Flux for that. After entering your location, it will know when the sun sets and adjust the color temperature of your display accordingly. You will be surprised how cold your screen looks when you turn it off in the late evening. There are also versions for iOS / Android tablets and smartphones if you use them before sleep.