/[svn]/doc/docbase/release_notes/linuxsampler_2_1_0/01_linuxsampler_2_1_0.html
ViewVC logotype

Annotation of /doc/docbase/release_notes/linuxsampler_2_1_0/01_linuxsampler_2_1_0.html

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3377 - (hide annotations) (download) (as text)
Sun Nov 26 23:15:52 2017 UTC (6 years, 4 months ago) by schoenebeck
File MIME type: text/html
File size: 20480 byte(s)
- Minor fixes for release notes.

1 schoenebeck 3376 <html>
2     <head>
3     <meta name="author" content="Christian Schoenebeck">
4     <title>Release Notes LinuxSampler 2.1.0</title>
5     <navpath>LinuxSampler 2.1.0</navpath>
6     <meta name="description" content="Release notes for LinuxSampler 2.1.0.">
7     <link rel="stylesheet" href="http://doc.linuxsampler.org/css/preview.css">
8     <script type="text/javascript" src="http://doc.linuxsampler.org/js/preview.js"></script>
9     </head>
10     <body>
11     <h1>LinuxSampler 2.1.0</h1>
12     <p>
13     LinuxSampler 2.1.0 and friends were released on November 25th 2017.
14     Two years have passed since the last release of LinuxSampler.
15     Here is a summary about what's new.
16     </p>
17    
18     <h3>Real-Time Instrument Scripts</h3>
19     <p>
20     In the <a href="01_linuxsampler_2_0_0.html">previous release</a> a major
21     new feature called <i>Real-Time Instrument Scripts</i> was added, which
22     are essentially small programs that may be bundled with sound files to extend the
23     sampler with custom behavior specifically intended for individual sounds.
24     <a href="instrument_scripts.html">Find out more ...</a>
25     </p>
26     <p>
27     These programs are written by sound designers in a script language called
28     <a href="01_nksp.html">NKSP</a>.
29     In this release a large amount of extensions and improvements have been
30     added for this real-time instrument scripting support of LinuxSampler.
31 schoenebeck 3377 For example <b>48 new built-in functions</b> and <b>21 new built-in
32     variables</b> have been added.
33 schoenebeck 3376 <a href="01_nksp_reference.html">Find out more ...</a>
34     </p>
35     <p>
36     Also the NKSP language and the underlying engine itself was extended.
37     Most notably the script engine now has an execution scheduler which is
38     the basis for many of the timing relevant new NKSP features in this
39     release, like programmatically suspending and resuming scripts for an
40     exact duration or at an exact point of time or triggering or killing notes
41     at very precise times (all with microsecond accuracy).
42     You can now even launch new threads in your NKSP scripts by
43     calling the new built-in function <code lang="nksp">fork()</code>.
44     Furthermore
45     <a href="01_nksp.html#boolean_operators">bitwise operators</a>
46     have been added to NKSP, as well as support for
47     read only built-in variables,
48     <a href="01_nksp.html#synchronized_blocks">"synchronized" code blocks</a>
49     , as well as
50     <a href="01_nksp.html#user_functions">user declared functions</a>
51     and user declared const array variables have been added to the NKSP language,
52     and finally automatic suspension of RT threatening scripts by the RT script engine
53     has been implemented. The latter ensures that the sampler remains stable,
54     and does not cause audio dropouts, even while you are working on heavy and
55     extremely buggy scripts.
56     Also syntax error messages with NKSP scripts have
57     been improved to output more clear and user friendly error messages, as
58     well as the NKSP editor API has been improved which brings handy new features
59     to gigedit's NKSP script editor, which will further be described below,
60     along with gigedit's new features.
61     </p>
62    
63     <h3>SFZ Engine</h3>
64     <p>
65     The SFZ engine now supports <code lang="sfz">&lt;global&gt;</code>,
66     <code lang="sfz">&lt;master&gt;</code> sections,
67     <code lang="sfz">#define</code> statement and <code lang="sfz">set_ccN</code>
68     opcode. And finally the SFZ engine now supports NKSP real-time
69     instrument scripts as well by adding a new
70     <code lang="sfz">script</code> opcode for this purpose. So NKSP scripts
71     are no longer limited to our Giga engine.
72     </p>
73    
74     <h3>New GigaStudio format features</h3>
75     <p>
76     The equally named software on Windows has gone years ago,
77     but the format lives on with LinuxSampler and this release adds
78 schoenebeck 3377 yet some more new extensions to the gig format.
79     </p>
80     <p>
81     <img src="gigedit_state_machine_options.png" title="EG State Machine Options (Gigedit)">
82     Most notably you
83 schoenebeck 3376 now have options to control envelope generators' state machines.
84     For example you can now define whether a certain EG state should
85     either be aborted or continued to its end when a note off arrived.
86     These controls are especially useful for certain kinds of sounds
87 schoenebeck 3377 like percussive instruments.<br>
88     <br>
89 schoenebeck 3376 Accordingly you will now find new check boxes for this in gigedit.
90     As these are extensions of the original format, setting these options
91     will only work with LinuxSampler and would be ignored with the
92     original GigaStudio software.
93     </p>
94    
95     <h3>Instruments DB</h3>
96     <p>
97     Also the Instruments Database feature has received important maintenance
98     fixes. Before this release, the instrument DB feature was barely usable
99     for quite some time. Fundamental instruments DB issues have been fixed in
100     this release to finally consider this feature stable again as well.
101     </p>
102    
103    
104     <h2>Gigedit 1.1.0</h2>
105     <p>
106     Also <i>Gigedit</i>, our instrument editor for the GigaStudio/Gigasampler
107     format, had been enhanced quite a lot. The most important new features are
108     summarized next.
109     </p>
110    
111     <h3>Script Editor</h3>
112     <p>
113     Gigedit's integrated instrument script editor supports now tight coupling
114     directly with LinuxSampler's actual real-time instrument script backend.
115     That provides several improvements for the script editor.
116     </p>
117     <p>
118 schoenebeck 3377 <img src="nksp_editor_error_tooltip.png" title="NKSP Error Tooltips">
119 schoenebeck 3376 For example
120     colored syntax highlighting of scripts is now always displayed correctly and
121     simply looks much better now. Previously there was some small hard coded
122     script parser code on Gigedit's side which however was buggy and simply
123     did no great job. Now all the heavy lifting of handling all the details
124     of the numerous NKSP language aspects are handled by the sampler instead,
125 schoenebeck 3377 which also provides the following new script editor features.<br>
126     <br>
127 schoenebeck 3376 Due to that direct coupling with LinuxSampler's
128     script backend, gigedit's script editor now shows all issues related to the script (errors
129     and warnings) directly within the script editor in real-time while you are
130     typing. The actual erroneous locations of the script are automatically
131     highlighted with red background color, locations of the script with
132     warnings are automatically highlighted with yellow background color, and
133     when you move your mouse over the respective code location, the precise
134     error/warning message is displayed as a tooltip. And last but not least
135     there is a summary of issues displayed in the status bar of the script
136     editor. Since LinuxSampler's instrument script backend is actually doing
137     all the work for the script editor, all aspects of the language, all
138     details about built-in functions and variables, and all potential issues
139     with their precise cause and messages are automatically covered by the
140     script editor now.
141     That way you immediately know whether or whether not your script
142     is OK with every character you are typing, and without requiring to
143     actually load the script with an instrument into the sampler.
144     </p>
145     <p>
146 schoenebeck 3377 <img src="nksp_editor_strike_through.png" title="NKSP Disabled Code Blocks">
147 schoenebeck 3376 Additionally when clicking on the
148     script editor's "Apply" button or using Ctrl+S keyboard shortcut, then
149     the script is automatically reloaded by the sampler. So you no longer
150     have to reload the respective instrument manually while you are
151     developing instrument scripts. There are also visual enhancements for the
152     script editor, for example the line numbers are now shown on the left,
153     the font size can be altered by the user, and unused code portions (i.e.
154 schoenebeck 3377 disabled by <a href="01_nksp.html#preprocessor_statements">NKSP preprocessor statements</a>)
155 schoenebeck 3376 are automatically striked through. That way you can immediately see
156     which code portions of your scripts are actually used, and which are not.<br>
157     <br>
158     As as side note, you may have noticed a handy new built-in preprocessor
159     condition in LinuxSampler 2.1.0 which can be enabled with
160     <code lang="nksp">SET_CONDITION(NKSP_NO_MESSAGE)</code> and allows you
161     to quickly disable <code lang="nksp">message()</code> function calls,
162     i.e. to conviently switch your scripts between a debug and release mode.
163     <a href="01_nksp.html#disable_messages">Find out more ...</a>
164     </p>
165    
166     <h3>Macros</h3>
167     <p>
168     Another major new feature in this release are macros.
169     A macro is a set of changes that should be applied to currently selected instrument.
170     </p>
171     <p>
172 schoenebeck 3377 <img src="gigedit_macros_setup.png" title="Macro List (Gigedit)">
173 schoenebeck 3376 Such macros can be reviewed and edited, and they can be saved permanently for
174     example as templates for common instrument creation tasks. Macros can be
175     assigned to F keys on the keyboard so that they can be quickly triggered,
176     you can transfer them over the OS clipboard and you can write comments
177     to your macros so that you never forget what kind of purpose you had in
178     mind for them. The macro features are based on libgig's new
179     "Serialization" framework (described below) and accordingly you need at
180     least libgig 4.1.0 for using these macro features.
181     </p>
182     <p>
183 schoenebeck 3377 <img src="gigedit_macro_editor.png" title="Macro Editor (Gigedit)">
184 schoenebeck 3376 This is an example of editing a macro. Usually you may start creating a
185     new macro by simply taking all parameters of a selected dimension region.
186     Then in the macro editor you usually multi-row select (i.e. by Ctrl clicking
187     items in the list) just the parameters you want this macro to alter, then
188     click on "Inverse Delete" to just keep those few selected parameters in
189     that macro. As a result, when you are going to apply this macro during your
190     upcoming work, only those few parameters are modifed by this macro and all
191     other ones are left untouched.
192     Of course you can also alter the individual parameter values in
193     this editor as well.
194     </p>
195    
196     <h3>Persistent Settings</h3>
197     <p>
198     All user settings of gigedit are now persistently saved and automatically
199     restored. This also includes gigedit's windows' dimensions and positions.
200     </p>
201    
202     <h3>Multi-Row Selection</h3>
203     <p>
204 schoenebeck 3377 <img src="gigedit_multi_row_action.png" title="Multi Row Selection &amp; Actions (Gigedit)">
205 schoenebeck 3376 Multi-row selection has been added to all list views now, so you can now
206     more efficiently apply actions to multiple samples, instruments or scripts
207     simultaneously at once, instead of requesting those actions for each item
208     individually.
209     </p>
210    
211     <h3>Multi-Zone Selection</h3>
212     <p>
213 schoenebeck 3377 <img src="gigedit_multi_dimreg_zone_actions.png" title="Multi Zone Selection &amp; Actions (Gigedit)">
214 schoenebeck 3376 Also modifying key features of several dimension region zones
215     simultaneously is now supported. That means you can now delete, split and
216     resize multiple dimension region zones at once. Oh yes, I forget, Ctrl+click
217 schoenebeck 3377 selecting multiple dimension region zones is supported now as well.
218 schoenebeck 3376 </p>
219    
220     <h3>Feature Icons</h3>
221     <p>
222 schoenebeck 3377 <img src="gigedit_zone_icons.png" title="Feature Icons (Gigedit)">
223 schoenebeck 3376 You will also note that there are now icons displayed on the individual
224     regions and dimension region zones. Those icons visualize common key
225     features of regions and dimension region zones. For example if you forgot
226     to assign any sample to one of them, then you will see a red dot on the
227     respective region or dimension region zone. Another icon type is showing
228     you whether a region or dimension region zone uses a sample loop.
229     For example when you just imported a drum sample, you don't really want
230     a loop to be on.
231     This way
232     you can immediately see and control the key features of all regions
233     and their dimension region zones, without requiring to browse through all
234     of them individually.
235     </p>
236    
237     <h3>Keyboard Shortcuts</h3>
238     <p>
239     Various new keyboard shortcuts have been added so you can work more
240     efficiently on your sounds. For example you can now use Ctrl+Left and
241     Ctrl+Right to navigate through all regions of the currently selected
242     instrument, and likewise you can use Alt+Left, Alt+Right, Alt+Up and
243     Alt+Down to navigate through all dimension region zones of the currently
244     selected region. Since there are many actions that can be either applied
245     on instrument level, or on region level, or on dimension region level, as
246     a general rule, for all keyboard shortcuts:
247     <ul>
248     <li><b>Shift</b> key is used for actions on instrument level</li>
249     <li><b>Ctrl</b> key is used on region level</li>
250     <li><b>Alt</b> key is used by gigedit for actions on dimension region level</li>
251     </ul>
252     So as another example you may copy all parameters of the currently
253     selected dimension region zone by hitting Alt+C, then you might select
254     another dimension region zone, or another instrument and then use Alt+V
255     to apply the parameters from the clipboard. While the parameters are
256     (as macro actually) on the clipboard you can also review, edit and
257     delete the individual parameters before applying them. As a final
258     example for new important shortcuts you may now use Shift+Up and
259     Shift+Down for switching between instruments.
260     </p>
261    
262     <h3>Combine Tool Improvements</h3>
263     <p>
264 schoenebeck 3377 <img src="gigedit_combine_tool_reorder.png" title="Combine Tool (Gigedit)">
265 schoenebeck 3376 Also the Combine Tool has been improved. You can now simply select the
266     (multiple) instruments you want to combine directly from the applications
267     main window, i.e. by Ctrl or Shift clicking them from the instruments
268     list view, and then right click to call the combine tool on that
269     selection. The Combine Tool now also shows you as preview the order in
270     which the selected instruments are going to be combined. This is
271     especially useful when combining instruments with certain dimension
272     types where the order matters for the actual resulting sound; for example
273     when using the velocity dimension. Simply use drag n drop to reorder
274     the previously selected instruments before combining them.
275     </p>
276    
277     <h3>Search Filter</h3>
278     <p>
279 schoenebeck 3377 <img src="gigedit_search_filter.png" title="Search Filter (Gigedit)">
280 schoenebeck 3376 And last but not least a filter option field had been added to the
281 schoenebeck 3377 instruments list view and samples list view, which allows you to find specific
282 schoenebeck 3376 samples and instruments very quickly by typing search key words, which is
283     especially very helpful in case you are working on gig files which contain
284     a very large amount of samples or instruments in a single gig file
285     (like this one, which apparently has far more than 400 instruments).
286     </p>
287    
288     <h2>libgig 4.1.0</h2>
289     <p>
290     Our fundamental file access C++ library
291     <a href="http://download.linuxsampler.org/doc/libgig/api/">libgig</a>
292     has also received some major improvements, which are outlined next.
293     </p>
294    
295     <h3>Files larger than 2 GB</h3>
296     <p>
297     libgig 4.1.0 adds support for files much larger than 2 GB for GigaStudio /
298     Gigasampler (.gig), DLS, as well as for RIFF files in general. This file size
299     limitation existed for a very long time due to the RIFF format's historical,
300     internal 32 bit file offsets. To circumvent this file size limitation the
301     concept of so called "extension files" was added in the past to the
302     GigaStudio format, which means that the GigaStudio instrument editor
303     (the original one on Windows) splitted
304     the respective overall instrument file into a set of files (.gig, .gx01,
305     .gx02, ...), each being max. 2 GB in size, and all of them were expected to be
306     located in the same directory for the sampler to load the entire large
307     instrument successfully. libgig always supported only reading such gig
308     extension files, however libgig never supported to create .gig files with
309     extension files, nor did it support modifying existing ones.
310     <p>
311     </p>
312     In this release
313     it was necessary to finally get rid of this overall file size limitation in
314     libgig. Now when that concept of extension files was introduced years ago, it
315     made sense at that point, because there were still many systems out there
316     which still had no support for large files (on either OS or file system
317     level). However today even on low end mobile devices support for large files
318     is already a broad standard. Accordingly instead of adding write support for
319     extension files in libgig, the problem was addressed at its root by
320     transparently using appropriate, automatic file offset sizes. So when writing
321     .gig/DLS/RIFF files smaller than 2 GB there are still 32 bit file offsets
322     being used by libgig. Accordingly such files are still backward compatible
323     with older software. However if the overall file size to be written is 2 GB or
324     larger, then 64 bit file offsets are automatically used by libgig instead.
325     Note though that due to that circumstance such files &#8807; 2 GB are not backward
326     compatible with older versions of libgig, nor could they be loaded with the
327     original GigaStudio software.
328     </p>
329    
330     <h3>Serialization API</h3>
331     <p>
332     Another major new feature in this libgig release is the entirely new
333     <a href="http://download.linuxsampler.org/doc/libgig/api/namespaceSerialization.html">Serialization API</a>
334     which provides a powerful and easy way
335     to serialize and deserialize an arbitrary set of native C++ objects into an
336     abstract data stream. Which means you can simply save the entire runtime state
337     of an application to a file or send it as data over "wire" (i.e. over network
338     or to another process) and restore that runtime state from that data there at
339     any time. In contrast to other C++ serialization frameworks out there, this
340     framework provides two major benefits:
341     <ol>
342     <li>
343     This serialization framework is designed to be very robust regarding
344     potential versioning changes of the native C++ classes being
345     (de)serialized. So even if the C++ classes have seen massive software
346     changes between the point where they were serialized and the point where
347     they are to be deserialized; for example if class member variables of
348     serialized C++ objects were renamed in meantime, or if variable offsets, or
349     variables' data types had been changed, then the deserialization algorithm
350     can still cope with such common software changes automatically in many
351     cases, that is as long as the deserialization algorithm can "guess" what
352     the changes were exactly. If the serialization framework is unable to
353     automatically detect the precise software changes, then it will abort the
354     deserialization task with an exception and an error message stating that
355     the software versions are incompatible.
356     </li>
357     <li>
358     This serialization framework supports "partial" deserialization. That
359     means it not only allows to restore an entire runtime state, but it also
360     allows to only restore an arbitrary desired subset of information
361     from the previously serialized data stream, while leaving all other data
362     of the running C++ objects untouched. The serialization framework also
363     incorporates a reflection API which allows applications to implement
364     convenient editors on top of such serialized data, i.e. allowing end users
365     to pick or alter specific information within the serialized data.
366     </li>
367     </ol>
368     This new Serialization framework is already embedded into the gig classes of
369     libgig, and it is used as basis for the new powerful macro features in the
370     gigedit instrument editor, like already outlined above.
371     </p>
372    
373     </body>
374     </html>

  ViewVC Help
Powered by ViewVC