1 |
<html> |
2 |
<head> |
3 |
<meta name="author" content="Christian Schoenebeck"> |
4 |
<title>Instrument Scripts</title> |
5 |
<meta name="description" content="Introduction to real-time instrument scripts."> |
6 |
</head> |
7 |
<body> |
8 |
<h1>Real-Time Instrument Scripts</h1> |
9 |
<p> |
10 |
The sampler technology is constantly evolving to satisfy new feature |
11 |
requirements of sound designer in order to allow them creating more and |
12 |
more realistic sounds. As an example you might look at state of the art |
13 |
orchestra libraries. They not only allow you pick one of the individual |
14 |
instrument sounds of an orchestra, they also allow you to control the |
15 |
articulation of the respective orchestra instrument while playing them |
16 |
live with your keyboard. So you might start playing an interesting intro |
17 |
with a string ensemble in |
18 |
<i title="Technique that uses a bowing style that leaves the string clearly to produce a light 'bouncing' sound.">spiccato</i> |
19 |
playing style, then you might go over into a slow bridge part where the |
20 |
string ensemble is resembling a |
21 |
<i title="Of successive notes in performance, connected without any intervening silence of articulation.">legato</i> |
22 |
articulation or even |
23 |
<i title="Portamento is a continous pitch sliding from one note to another.">portamento</i> |
24 |
in between, which makes that part of the song very calm and |
25 |
relaxed, and then you shock your audience all of a sudden with a loud |
26 |
<i title="Staccato signifies a note of shortened duration, separated from the note that may follow by silence.">staccato</i>, |
27 |
automatically supported by kettledrum and brass sounds, that wakes up even |
28 |
the last one in the back row. And the best thing: you did not switch to |
29 |
another instrument during that entire song. |
30 |
</p> |
31 |
|
32 |
<h3>Technical Challenge</h3> |
33 |
<p> |
34 |
Adding these kinds of features to a sampler had long been a challenge for |
35 |
software developers. On one hand you need to provide the musician |
36 |
additional controls to let him switch between such kind of orchestra |
37 |
articulations. Sound designers came up with various ideas to let the |
38 |
keyboard player do this. For example by |
39 |
<ul> |
40 |
<li>using continous controllers like the keyboard's modulation wheel</li> |
41 |
<li>using a dedicated keys section on the keyboard where each key selects another playing style</li> |
42 |
<li>utilizing aftertouch support of keyboards</li> |
43 |
</ul> |
44 |
and some more. And on the other hand developers needed to extend the |
45 |
sampler software and the instrument file format to deal with all those |
46 |
extensions. Thinking about <i>portamento</i> for example, the sampler not |
47 |
only has to pick the right sample for the first key the keyboard player |
48 |
hits, the sampler also has to detect the next note and needs to pick a |
49 |
special dedicated portamento sample that goes specifically from that one |
50 |
note to that other note. If the sampler would do that synthetically |
51 |
instead, then it would sound synthetically. |
52 |
</p> |
53 |
<p> |
54 |
And if that was not enough, sound designers started even to ask for very |
55 |
exotic features, specifically for just a bunch of sounds or even for just |
56 |
one single sound of |
57 |
theirs, for example |
58 |
a specific note pattern that shall automatically be added by the sampler |
59 |
to each note being played by the keyboard player. |
60 |
The requested feature set became such large, that sampler developers |
61 |
failed to put all this into their stock sampler software package. |
62 |
A completely new solution was required. |
63 |
</p> |
64 |
|
65 |
<h3>Scripts as Solution</h3> |
66 |
<p> |
67 |
Instead of bloating the sampler engine with more and more suboptimal |
68 |
features that not really suited anybody, the sampler developers turned the |
69 |
way around and opened the sampler engine for sound designers, so that they |
70 |
could add their own custom software components and bundle them with their |
71 |
sounds. These kinds of software plugins that are directly glued and |
72 |
shipped with sounds are called <i>Instrument Scripts</i>, they extend |
73 |
the sampler software with new software features required by the |
74 |
respective sound. |
75 |
</p> |
76 |
<p> |
77 |
Sound designers were finally free to add their own features to the sampler |
78 |
and used <i>Instrument Scripts</i> extensively to create stunning new |
79 |
sounds. For example they came up with a feature called |
80 |
<i title="Sympathetic resonance is a harmonic phenomenon wherein a formerly passive string responds to external vibrations to which it has a harmonic likeness."> |
81 |
symphatetic resonance |
82 |
</i> for their piano sound libraries, which brought piano sounds another |
83 |
great leap forward to match their real, physical counter parts. |
84 |
</p> |
85 |
|
86 |
<h2>Using Scripts with LinuxSampler</h2> |
87 |
<p> |
88 |
LinuxSampler allows you to write and use such <i>Instrument Scripts</i> |
89 |
as well. At this point however, support for instrument scripts is limited |
90 |
to the GigaStudio format engine of LinuxSampler yet. The script engine was |
91 |
developed in a very modular design, where most of the script engine's |
92 |
software is independent from the actual sampler format and the |
93 |
respective sampler format engine is just adding its format specific |
94 |
extensions to the script language. For example the GigaStudio format |
95 |
engine adds scripting functions to allow the sound designer to control the |
96 |
dimension region by scripts. |
97 |
</p> |
98 |
<p> |
99 |
In other words: adding script support to the SFZ format engine for |
100 |
example would not be much work. Simply nobody so far had time and |
101 |
passion to add the scripting feature to the SFZ engine yet. |
102 |
</p> |
103 |
|
104 |
<h3>Bundling Scripts with Sounds</h3> |
105 |
<p> |
106 |
Our graphical instrument editor for the GigaStudio format - <i>gigedit</i> - |
107 |
includes an instrument script editor and allows you to attach |
108 |
instrument scripts to individual GigaStudio format sounds. Refer to the |
109 |
gigedit manual for <a href="gigedit_scripts.html">how to manage instrument scripts with gigedit.</a> |
110 |
</p> |
111 |
|
112 |
<h3>Learning the Script Language</h3> |
113 |
<p> |
114 |
You certainly find some instrument scripts ready to be used on the |
115 |
Internet. So you can simply download and attach them to your sounds with |
116 |
<i>gigedit</i>. In order to write your own custom instrument scripts though, you |
117 |
need to get in touch with the scripting language. Refer to the |
118 |
<a href="nksp.html">NKSP Language Tour</a> |
119 |
for learning how to write your own scripts. |
120 |
</p> |
121 |
|
122 |
<h3>Script Language Reference</h3> |
123 |
<p> |
124 |
If you are already familiar with the instrument script language basics, |
125 |
and just need details and examples to the individual built-in functions |
126 |
and built-in variables, then refer to the |
127 |
<a href="nksp_reference.html">NKSP Reference Manual</a>. |
128 |
</p> |
129 |
|
130 |
</body> |
131 |
</html> |