In the World of Grains – Part 1
In the World of Grains – Part 1
(contains embedded video) If you want to support my work, please make use of the "PayPal" button - thank you very much indeed!
There are not only a couple of granular synthesis VSTs, even free granular synths. There is also a surprisingly lot of computer languages and programming environments for granular sound processing. Well, there are a lot of computer languages in general, you will say. They are universal. We can use them to produce software for accounting systems, as well as software to control the course of a missile, as well as programs to analyse and to generate sound, or to manage musical notation. ALGOL, FORTRAN, or C++, JAVA and a lot more. These are not subject-matters here.I prefer to focus on those computer languages and programming environments, which are of practical use for musicians, composers and sound designers of today.
The borders between the work of a composer, a musician, a producer, or a sound designer on one hand, and a “coder”, a programmer of computer software, and a producer of musical applications on the other hand have been blurred – more and more wiped out in the last decades. Great people like Curtis Roads, Barry Truax, Paul Berg and others have started it. They cut gaps in these borders, and made paths in the jungle of code, - as software might look like for a musician at first glance – which we can follow, develop, and use as starting points to reach our own goals. This part of my series about grain synthesis, sonic grains, grains of sound etc. is not at all meant to be an introduction to any of the mentioned languages, but shall give you an overview of what´s on offer, making your decision which language you should start studying a bit easier. It´s more than a simple list, but less than a textbook. The paragraphs are accompanied by short videos demonstrating the looks and the “feeling” of the described languages.
Let me start with languages which don´t have a graphical user interface.
First of all: ChucK is still in progress, meaning its creators Ge Wang and Perry Cook are constantly developing this language, adding features to it and building libraries of code for ChucK.
It´s main features are
executing a couple of computations at
the same time (concurrently)
on-the-fly programming (real-time coding)
real-time audio synthesis
The following piece of ChucK code from the ChucK documentation generates a machine-laser like sound sequence. It´s meant to give you an impression of how coding with ChucK looks like. Just follow the link to the complementing video to learn more (and to hear the sound).
For those of you, who do some coding, this will not look too intimidating, I think. But, well, watch me coding a bit in the video.
In 1978 Paul Lansky (see chapter 1) developed the software MIX, which he used for algorithmic compositions. The RT-Cmix software of today is a decendant of this program.
It´s not merely a programming language, but a programming environment, and it´s not multi-platform, but runs only under Mac OSX, but for some older versions, which run under Windows as well.
Under the designation “iRTcmix” there are versions for iPad, iPhone and iPod.
I mention it here because of its gateway to the universal computer language C++, which allows to code snippets of software, e.g. certain functions, in C++, and to integrate them in RT-Cmix.
CLM stands for “Common Lisp Music”, and as its name suggests needs the computer language LISP to be installed on your computer. The syntax of CML is quite different to that of more recent languages like Java, C++. No wonder, isn´t LISP the second oldest higler level computer language at all! CLM is a powerful piece of software, which enables you do nearly everything you can achieve with more popular programs and languages like Csound, SuperCollider, PureData and others. But it´s a good deal more uncomfortable to use. There´s a lot of compiling going on all over the place, there is a steep learning curve, and it takes rather days than hours to really get going ...... but once being “in” it, you won´t stop coding before dawn.
To say it right away: CSound loves granular sound processing, even if it is not made especially for this field of working with sound. There are a couple of functions/methods (in CSound they are called “opcodes”) to deal with sonic grains.
And there is a huge number of “granular” application (see later chapters) written in CSound.
Let´s have a closer look therefore.
You get this free open source software at Github: http://csound.github.io/download.html .
There is a front-end application called CsoundQT, which is a part of the download nowadays, but it needs the Python27.dll, which you can download here: https://www.dllme.com/dll/files/python27_dll.html
After downloading the .dll you have to place it in the folder CSound6_x64/CSoundQT/bin. Now everything is ready to start coding, and making applications.
The really great manual (see the sources chapter) will lead you safely through your first experiments. You may start e.g. with a sine wave generator. Well then, tell the computer the following:
“Hey computer! Let´s make an instrument, that produces sine waves!” in code:
“Hey computer! Make the instrument start oscillating with an amplitude of 0.2 and a frequency of 400 Hz, and send the sound to the audio output!” in code:
out poscil(0.2, 400)
“Thank you, computer! Well done!” in code:
Not that complicated, right? In the linked video I demonstrate a bit of this, and talk a bit about the origins of CSound. There are famous names to mention.
A great feature of CSound is its ability to be embedded into other programs and application, like PureData (see later), MaxMSP (see later), Ableton live, and as a VST in all relevant DAWs.
But CSound is even more “open-minded”. So we can use the computer languages Python, or even LUA inside CSound. Do I need to mention, that CSound and MIDI are best friends?
So it´s not astounding any more, that CSound is prepared to write applications for iOS and Android.
You want to use HTML tags in CSound? No problem!
... to be continued
to part 1 about the history of sonic grains: https://www.dev.rofilm-media.net/node/340
to part 2 about the history of sonic grains: https://www.dev.rofilm-media.net/node/342
to part 3 about the history of sonic grains: https://www.dev.rofilm-media.net/node/346
to part 4 about the history of sonic grains: https://www.dev.rofilm-media.net/node/357
to part 6: https://www.dev.rofilm-media.net/node/373
to "Inthe World of Grains" part 3: https://www.dev.rofilm-media.net/node/378
to "In the World of Grains" part 4: https://www.dev.rofilm-media.net/node/385
to "In the World of Grains" part 5: https://www.dev.rofilm-media.net/node/390
to "In the World of Grains" part 6: https://www.dev.rofilm-media.net/node/398
to "In the World of Grains" part 7: https://www.dev.rofilm-media.net/node/407
to "In the World of Grains" part 8: https://www.dev.rofilm-media.net/node/414