forked from hydrogen-music/documentation
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmanual.docbook
4168 lines (3541 loc) · 182 KB
/
manual.docbook
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<?xml version="1.0" encoding="UTF-8"?> <!-- -*- mode:nxml; indent-tabs-mode:nil; fill-column:80; -*- -->
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook V4.0//EN"
"http://www.oasis-open.org/docbook/xml/4.0/docbookx.dtd">
<book id="Hydrogen-manual" lang="en">
<bookinfo>
<title>Hydrogen Manual</title>
<authorgroup>
<author>
<firstname>Antonio</firstname>
<surname>Piraino</surname>
</author>
<author>
<firstname>Alessandro</firstname>
<surname>Cominu</surname>
</author>
<author>
<firstname>Thijs</firstname>
<surname>Van Severen</surname>
</author>
<author>
<firstname>Sebastian</firstname>
<surname>Moors</surname>
</author>
</authorgroup>
<date>06/september/2016</date>
<abstract>
<para>Hydrogen is a software synthesizer which can be used alone,
emulating a drum machine based on patterns, or via an external MIDI
keyboard/sequencer software. Hydrogen compiles on Linux, Mac OS X and Windows.</para>
</abstract>
</bookinfo>
<!--
###################
# FIRST CHAPTER #
###################
-->
<chapter id="chap.introduction">
<title>Introduction</title>
<section id="sect.download">
<title>Download</title>
<para>
You can download Hydrogen from
<ulink url="http://www.hydrogen-music.org/hcms/node/21">http://www.hydrogen-music.org</ulink>.
On the 'Downloads' page you can find several binaries (installers) for Linux, Mac and Windows. (note that some versions may not be available for Windows and Mac)
</para>
<para>
If you want to compile Hydrogen yourself (see <xref linkend="sect.compilation"/>), you can download the latest source files directly from our
git repository with:
<screen><prompt>$</prompt> <command>git clone git://github.com/hydrogen-music/hydrogen.git</command></screen>
A certain release can be fetched with:
<screen><prompt>$</prompt> <command>git checkout tags/1.0.0</command></screen>
</para>
<para>Compiling Hydrogen depends on the following libraries (among others):</para>
<itemizedlist mark="opencircle">
<listitem>
<para>Qt 5 at <ulink url="http://www.qt.io">http://www.qt.io</ulink></para>
</listitem>
<listitem>
<para>libsndfile at <ulink url="http://www.mega-nerd.com/libsndfile/">http://www.mega-nerd.com/libsndfile/</ulink></para>
</listitem>
<listitem>
<para>ALSA (>= 1.x) at <ulink url="http://www.alsa-project.org">http://www.alsa-project.org</ulink>
(only if you wish to use ALSA as audio driver)</para>
</listitem>
<listitem>
<para>Jack Audio Connection Kit (>= 0.80) at
<ulink url="http://jackaudio.org/">http://jackaudio.org/</ulink>
(only if you wish to use Jack as audio driver)</para>
</listitem>
<listitem>
<para>PortAudio at <ulink url="http://www.portaudio.com">http://www.portaudio.com</ulink>
(only if you wish to use PortAudio as audio driver)</para>
</listitem>
<listitem>
<para>PulseAudio at <ulink url="http://www.pulseaudio.org">http://www.pulseaudio.org</ulink>
(only if you wish to use PulseAudio as audio driver)</para>
</listitem>
<listitem>
<para>Flac at <ulink url="http://flac.sf.net">http://flac.sf.net</ulink> (only if you
wish to use flac samples)</para>
</listitem>
<listitem>
<para>ladspa at <ulink url="http://www.ladspa.org">http://www.ladspa.org</ulink> (only if you wish
to use ladspa effects)</para>
</listitem>
<listitem>
<para>liblrdf at <ulink url="http://sf.net/projects/lrdf">http://sf.net/projects/lrdf</ulink> (only if you wish to use lrdf to categorise effects)</para>
</listitem>
<listitem>
<para>lash at <ulink url="http://lash.nongnu.org">http://lash.nongnu.org</ulink> (only if
you wish to use lash)</para>
</listitem>
</itemizedlist>
<para>Please install them with your distribution's package manager. If
you're running a Debian-based system, you can install the libraries
with:</para>
<screen>
<prompt>$</prompt> <command>apt-get install qtbase5-dev qtbase5-dev-tools \
qttools5-dev qttools5-dev-tools libqt5xmlpatterns5-dev \
libarchive-dev libsndfile1-dev libasound2-dev liblo-dev \
libpulse-dev libcppunit-dev liblrdf-dev \
liblash-compat-dev librubberband-dev libjack-jackd2-dev</command>
</screen>
</section>
<!-- COMPILATION -->
<section id="sect.compilation">
<title>Build</title>
<para>Depending on the branch you are compiling you will need to use cmake. Check the INSTALL.txt and the README.txt files for more info (located in the top level dir once you downloaded the sources).</para>
<para>Compiling with cmake can be done easily by using the build.sh script. Go to the directory where the git repository
was cloned and run the build.sh script without any arguments to display the help :</para>
<screen>
<prompt>$</prompt> <command>./build.sh</command>
</screen>
<para>The help is now displayed (and is self-explanatory) :
</para>
<screen>
<command> r[m] => all built, temp and cache files</command>
<command> c[lean] => remove cache files</command>
<command> m[ake] => launch the build process</command>
<command> d[oc] => build html documentation</command>
<command> g[raph] => draw a dependencies graph</command>
<command> h[elp] => show the build options</command>
<command> x|exec => execute hydrogen</command>
<command> t[ests] => execute tests</command>
<command> p[kg] => build source package</command>
<command>ex: ./build.sh r m pkg x</command>
</screen>
<para>To build Hydrogen run the build script with the 'm' option :
</para>
<screen>
<prompt>$</prompt> <command>./build.sh m</command>
</screen>
</section>
<section id="sect.preferences" xreflabel="Preferences">
<title>Preferences</title>
<para>First of all you should make sure that the audio engine is
configured properly. The preferences dialog can be accessed via the tools
menu (tools -> preferences).</para>
<section id="sect.preferences.general_tab">
<title>The General tab</title>
<para>On the "General" tab (<xref linkend="fig.preferences.general_tab"/>) you can
choose to automatically reopen the last used song and/or playlist. This can save you
the trouble of having to reopen the song you are working on every time you open
Hydrogen. Auto loading the playlist can come in handy when you are using Hydrogen live.</para>
<para>If you want to use Lash for session management you should enable
it here so Hydrogen allows interaction with Lash.</para>
<para>The Beat Counter drift compensation and start offset allow you to compensate
for system latency when you are using the Beat Counter function (see <xref linkend="sect.tap_tempo"/>)</para>
<para>The Max number of bars in a song can be set here (currently limited to 800)
and if you want to use rubberband for sample time-stretching (see <xref linkend="sect.layer_editing.section2"/>)
you need to enter the path where rubberband is installed on you system here.</para>
<!-- THIJS : NEED TO AD LINK TO SAMPLE EDITOR -->
<figure id="fig.preferences.general_tab">
<title>The General Tab</title>
<mediaobject>
<imageobject>
<imagedata fileref="img/PreferencesGeneral_V3.png" format="PNG"/>
</imageobject>
</mediaobject>
</figure>
</section>
<section id="sect.preferences.audio_tab">
<title>The Audio System tab</title>
<para>From the "Audio System" tab (<xref
linkend="fig.preferences.audio_tab"/>) it is possible to modify the
audio driver being used (OSS, Jack, ALSA, PortAudio, PulseAudio, CoreAudio, Auto) with its buffer and
sampling rate (unless you are using JACK, in this case the audio driver
configuration should happen before starting the JACK server).</para>
<para>Also keep an eye on the value of "Polyphony": depending on your
CPU you may want to change the max simultaneous notes in order to
prevent hydrogen from overrunning the audio driver.</para>
<para>The "Interpolate resampling" parameter allows you to select your preferred
interpolation method.</para>
<figure id="fig.preferences.audio_tab">
<title>The Audio System Tab</title>
<mediaobject>
<imageobject>
<imagedata fileref="img/PreferencesAudioSystem_V3.png" format="PNG"/>
</imageobject>
</mediaobject>
</figure>
<para>
The following drivers are available:
</para>
<itemizedlist>
<listitem>
<para><emphasis role="bold">Auto</emphasis>: Hydrogen will try a
number of different drivers in a predetermined order, choose the
first working one, and display the result. This option is
recommended for beginners.</para>
</listitem>
<listitem>
<para><emphasis role="bold">Jack</emphasis>: The Jack driver is a
professional audio server which permits very low lag and exchanges
with other audio software. <emphasis>We strongly recommend using
this driver to have the best out of Hydrogen</emphasis>. JACK
server will start automatically if not already running.</para>
<para>Available options:</para>
<itemizedlist>
<listitem>
<para><emphasis role="bold">Track output</emphasis>: This
options determines which audio settings will be applied to the
audio of the per-instrument output ports.</para>
<para>Post-Fader:</para>
<itemizedlist>
<listitem><para>note velocity</para></listitem>
<listitem><para>note and instrument pan</para></listitem>
<listitem><para>layer, instrument, and component gain</para></listitem>
<listitem><para>instrument and main component volume</para></listitem>
</itemizedlist>
<para>Pre-Fader:</para>
<itemizedlist>
<listitem><para>note velocity</para></listitem>
<listitem><para>layer gain</para></listitem>
</itemizedlist>
</listitem>
<listitem>
<para><emphasis role="bold">BBT sync method</emphasis>: If
Hydrogen uses Jack transport in the presence of an external Jack
Timebase master (TBM), it will use the provided measure and
tempo information instead of the local one of either the Song's
tempo (see <xref linkend="sect.main_toolbar"/>) or the markers
added to the Timeline (see <xref
linkend="sect.song_editor.tempo_and_markers"/>). But due to
limitations in the current implementation, Hydrogen can not set
both measure and speed provided by Jack for arbitrary pattern
combinations. The user has two options. Either drop all measure
changes in the TBM and work with tempo changes only to support
arbitrary patterns (using option <emphasis>constant
measure</emphasis>) or to keep the length of each pattern
consistent with the corresponding measure in the TBM and to use
both tempo and measure provided by Jack (option
<emphasis>matching bars</emphasis>).</para>
<para>For this option to take effect the J. TRAMS button has to
be activated and the J. MASTER button deactivated (next to
having a Jack TBM application). See <xref
linkend="sect.main_toolbar"/>.</para>
</listitem>
<listitem>
<para><emphasis role="bold">Connect to Default Output
Pair</emphasis>: Connects the main stereo output of the Mixer to
the default ports of your system
(<emphasis>system:playback_1</emphasis> and
<emphasis>system:playback_2</emphasis>) every time Hydrogen
starts up or the audio driver is restarted.</para>
</listitem>
<listitem>
<para><emphasis role="bold">Create per-instrument
outputs</emphasis>: In addition to the main stereo output
Hydrogen will register Jack output ports for every single
instrument. This can be useful if you want to add effects to a
single instrument with jack-rack for example.</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para><emphasis role="bold">Alsa</emphasis>: The widely adopted
Linux standard audio drivers</para>
</listitem>
<listitem>
<para><emphasis role="bold">OSS</emphasis>: The Oss audio driver
uses /dev/dsp and it's based on the OSS interface which is supported
by the vast majority of sound cards available for Linux; this said,
the use of this audio driver blocks /dev/dsp until Hydrogen is
closed i.e. unusable by any other software. Use it as last
resort.</para>
</listitem>
<listitem>
<para><emphasis role="bold">PortAudio</emphasis>: an open-source
multi platform audio driver</para>
</listitem>
<listitem>
<para><emphasis role="bold">CoreAudio</emphasis>: a driver for Mac
OS X (experimental)</para>
</listitem>
<listitem>
<para><emphasis role="bold">PulseAudio</emphasis>: a driver for the cross platform
PulseAudio sound server.</para>
</listitem>
</itemizedlist>
</section>
<section id="sect.preferences.midi_tab">
<title>The Midi System tab</title>
<para>The "Midi System" tab (<xref linkend="fig.preferences.midi_tab"/>)
contains all MIDI settings. Here you can choose the MIDI driver (ALSA, PortMidi,
CoreMidi or JackMidi) input, and channel(s) that Hydrogen should respond to.
You can also define midi bindings: link a midi note/message to an action.
To do this simply press the red 'REC' button left of the event-action binding line.
A popup will inform you that Hydrogen is waiting for your input. Press/hit/turn
the key/pad/knob on your midi keyboard (or controller) that you want to link to
this action. The popup will close and the Event Param value will now show the
midi note value of the key you pressed. Once this is done you can select an Action
from the action drop-down list. Note that some actions (like SELECT_NEXT_PATTERN)
also require an Action Param that references the pattern you want to select with this midi action.</para>
<para>See <xref linkend="sect.midi"/> for more info on Midi actions.</para>
<figure id="fig.preferences.midi_tab">
<title>The MIDI System Tab</title>
<mediaobject>
<imageobject>
<imagedata fileref="img/PreferencesMidiSystem_V2.png" format="PNG"/>
</imageobject>
</mediaobject>
</figure>
</section>
<section id="sect.preferences.appearance_tab">
<title>The Appearance tab</title>
<para>The "Appearance" tab (<xref
linkend="fig.preferences.appearance_tab"/>) let's you modify Hydrogen look
and feel (font settings and interface style). On this tab you can also change the
VU meters fall-off speed and switch between Single pane and Tabbed interface
mode (see <xref linkend="sect.UIoverview"/>)
</para>
<figure id="fig.preferences.appearance_tab">
<title>The Appearance Tab</title>
<mediaobject>
<imageobject>
<imagedata fileref="img/PreferencesAppearance_V2.png" format="PNG"/>
</imageobject>
</mediaobject>
</figure>
</section>
<section id="sect.preferences.audio_engine_tab">
<title>The Audio Engine tab (debug only)</title>
<para>The "Audio Engine" tab (<xref linkend="fig.preferences.audio_engine_tab"/>) is a window that shows
various stats about Hydrogen and the audio driver. In case JACK is used,
buffer and sampling rate should be set in the configuration of the JACK
server before starting Hydrogen (JACK automatically starts when an
application tries to connect).</para>
<para>Note that the Audio Engine tab is only available if Hydrogen was compiled with
debug support.</para>
<figure id="fig.preferences.audio_engine_tab">
<title>The Audio Engine tab</title>
<mediaobject>
<imageobject>
<imagedata fileref="img/AudioEngineInfoDialog.png" format="PNG"/>
</imageobject>
</mediaobject>
</figure>
</section>
</section>
</chapter>
<!--
####################
# SECOND CHAPTER #
####################
-->
<chapter id="chap.using_hydrogen">
<title>Using Hydrogen</title>
<!-- FILETYPES -->
<section id="sect.file_types">
<title>Used Filetypes</title>
<para>Before working with Hydrogen, please familiarize with these
filetypes:</para>
<itemizedlist>
<listitem>
<para><emphasis role="bold">*.h2pattern</emphasis>: XML file
describing a single pattern. Patterns are group of beats and are
managed in the pattern editor.</para>
</listitem>
<listitem>
<para><emphasis role="bold">*.h2song</emphasis>: XML file describing
the whole song (or sequence). Songs are group of patterns with their
properties and are manager using the song editor</para>
</listitem>
<listitem>
<para><emphasis role="bold">*.h2playlist</emphasis>: XML file
describing a playlist. A Playlist is a (ordered) group of songs.</para>
</listitem>
<listitem>
<para><emphasis role="bold">*.h2drumkit</emphasis>: a compressed and
archived folder containing all sound samples composing a drumkit and a
description XML file. Drumkits are basically group of sound
samples.</para>
</listitem>
</itemizedlist>
</section>
<!-- KEYBOARD AND MOUSE -->
<section id="sect.keyboard_and_mouse">
<title>Keyboard and Mouse</title>
<para>
The Hydrogen user interface is designed so that it can be
used entirely with the mouse, with the exception of text entry.
</para>
<para>
The keyboard can also be used for navigating and editing in
the pattern and song editors, using a combination of
<itemizedlist>
<listitem>
<para>
<emphasis role="bold">Arrow keys</emphasis>: move the
keyboard input cursor's position, or adjust values under
the cursor.
</para>
</listitem>
<listitem>
<para>
<emphasis role="bold">Shift + Arrow keys</emphasis>:
can be used to make selections of notes or pattern
groups as if the mouse had been dragged over them.
</para>
</listitem>
<listitem>
<para>
<emphasis role="bold">Enter / Return</emphasis>: generally
performs the same action as a mouse click, but can also
start or end a move (or copy) of items in the same way
a mouse drag would.
</para>
</listitem>
<listitem>
<para>
<emphasis role="bold">Tab / Shift + Tab</emphasis>: move
between different areas of the main interface.
</para>
</listitem>
<listitem>
<para>
<emphasis role="bold">Delete</emphasis>:
delete notes or patterns.
</para>
</listitem>
<listitem>
<para>
<emphasis role="bold">Escape</emphasis>:
cancels an ongoing selection, move or copy.
</para>
</listitem>
</itemizedlist>
</para>
<para>
Note that the keyboard input cursor is hidden
from view until one of the above keys is pressed. This keeps
the display clear and uncluttered when using the mouse.
</para>
<para>
Most other keys on the keyboard can be used to play
samples and enter notes in the same way a MIDI keyboard can be.
</para>
</section>
<!-- UI OVERVIEW -->
<section id="sect.UIoverview">
<title>The main User Interface : an overview</title>
<para>The Main UI comes in 2 flavors : the (classic) Single Pane mode (ideal for
large- and medium size screens), and the Tabbed mode (optimized for netbook screen
sizes).
</para>
<para>
Below you can see the main UI split up in 5 parts : the Main Menu, Main
Toolbar, Song Editor, Pattern Editor and the Instrument and Sound Library Editor.
These sections will be explained in detail further down in this manual.</para>
<figure id="fig.UI_overview">
<title>The Main UI in Single Pane mode</title>
<mediaobject>
<imageobject>
<imagedata fileref="img/GUI_Sections_0.9.5_v2.png" format="PNG"/>
</imageobject>
</mediaobject>
</figure>
<figure id="fig.tabbed_UI_overview">
<title>The Main UI in Tabbed mode</title>
<mediaobject>
<imageobject>
<imagedata fileref="img/MainUI_tabbed.png" format="PNG"/>
</imageobject>
</mediaobject>
</figure>
</section>
<!-- MAIN MENU -->
<section id="sect.main_menu">
<title>Main menu</title>
<para><emphasis role="bold">Projects</emphasis>: this menu offers file
related functions.</para>
<itemizedlist>
<listitem>
<para><emphasis>New</emphasis> - Create a new song</para>
</listitem>
<listitem>
<para><emphasis>Show Info</emphasis> - Set general properties of the
song such as name, author, license and generic notes</para>
</listitem>
<listitem>
<para><emphasis>Open</emphasis> - Open a song</para>
</listitem>
<listitem>
<para><emphasis>Open Demo</emphasis> - Open a demo song (demo songs
are stored in
<emphasis>$INSTALLPATH/share/hydrogen/data/demo_songs</emphasis>)</para>
</listitem>
<listitem>
<para><emphasis>Open recent</emphasis> - Open a menu showing last used
songs</para>
</listitem>
<listitem>
<para><emphasis>Save</emphasis> - Save changes to current song</para>
</listitem>
<listitem>
<para><emphasis>Save as</emphasis> - Save current song specifying a
name (default path:
<emphasis>$HOME/.hydrogen/data/songs)</emphasis></para>
</listitem>
<listitem>
<para><emphasis>Open pattern</emphasis> - Open a saved pattern
belonging to the current drumkit</para>
</listitem>
<listitem>
<para><emphasis>Export pattern as</emphasis> - Saves a
pattern. It will be stored in
<emphasis>$HOME/.hydrogen/data/patterns/drumkit_name</emphasis></para>
</listitem>
<listitem>
<para><emphasis>Export MIDI file</emphasis> - Export current song in
MIDI format</para>
</listitem>
<listitem>
<para><emphasis>Export song</emphasis> - Export current song in WAV
format (see <xref linkend="sect.song_editor.export_song"/>)</para>
</listitem>
<listitem>
<para><emphasis>Export Lilypond file</emphasis> - This is a first version of the LilyPond export.
It has the following limitations: Only GM-kit is supported, No triplets support</para>
</listitem>
<listitem>
<para><emphasis>Quit</emphasis> - Quit Hydrogen</para>
</listitem>
</itemizedlist>
<para><emphasis role="bold">Undo</emphasis>: Undo/Redo functions.</para>
<itemizedlist>
<listitem>
<para><emphasis>Undo</emphasis> - Lets you undo your last action</para>
</listitem>
<listitem>
<para><emphasis>Redo</emphasis> - Lets you redo the last undone action</para>
</listitem>
<listitem>
<para><emphasis>Undo History</emphasis> - Gives you an overview of your previous
actions</para>
</listitem>
</itemizedlist>
<para><emphasis role="bold">Instruments</emphasis>: this menu offers
instruments functions.</para>
<itemizedlist>
<listitem>
<para><emphasis>Add instrument</emphasis> - Add a new instrument to your current drumkit</para>
</listitem>
<listitem>
<para><emphasis>Clear all</emphasis> - Delete all instruments from the current drumkit</para>
</listitem>
<listitem>
<para><emphasis>Add component</emphasis>: - A component is a part of Hydrogen's instrument model.
Each instrument consists of one or more components, and each component consists of one or more layers.
</para>
<para>To make an example: A snare could have two components.
One component includes sounds from the top side of the snare drum, and the other component includes
the sounds from the bottom side of the snare drum (where the snare wires are fitted).
Each component can consist of several layers (snare drum hits with different velocities).
Now you can adjust the volume of the two components to build your ideal drum sound.
If you want more of the attack, you can put in more of the "top head" component.
If you want more of the snare wires, you put in more of the bottom component.
</para>
</listitem>
</itemizedlist>
<para><emphasis role="bold">Drumkits</emphasis>: this menu offers drumkit (sound libraries) functions.</para>
<itemizedlist>
<listitem>
<para><emphasis>Save</emphasis> - Saves all instruments settings (and their sound samples) in
<emphasis>$HOME/.hydrogen/data/library_name</emphasis>
</para>
</listitem>
<listitem>
<para><emphasis>Export</emphasis> - Compress all instruments samples and settings in a drumkit in
<emphasis>$HOME/.hydrogen/data/library_name</emphasis>
</para>
</listitem>
<listitem>
<para><emphasis>Import</emphasis> - Imports another drumkit from the local filesystem.
To load another drumkit in your
current working session of Hydrogen, read <xref
linkend="sect.sound_library"/>.
</para>
</listitem>
<listitem>
<para><emphasis>Online import</emphasis> - Imports another drumkit from a remote location
through an XML feed. The XML file that should be provided is <emphasis
role="bold">NOT</emphasis> RSS compliant (see <ulink
url="http://www.hydrogen-music.org/feeds/drumkit_list.php" >Hydrogen
website</ulink> for an example). To load another drumkit in your
current working session of Hydrogen, read <xref linkend="sect.sound_library"/>.
</para>
</listitem>
</itemizedlist>
<para><emphasis role="bold">View</emphasis>:Opens the director, the playlist editor, the instrument rack
and the general preferences window.
</para>
<itemizedlist>
<listitem>
<para><emphasis>Playlist editor</emphasis> - A tool to manage
playlists.</para>
</listitem>
<listitem>
<para><emphasis>Director</emphasis> - Open the director window.</para>
</listitem>
<listitem>
<para><emphasis>Mixer</emphasis> - Open the mixer window.</para>
</listitem>
<listitem>
<para><emphasis>Instrument rack</emphasis> - Open the instrument rack
panel.</para>
</listitem>
<listitem>
<para><emphasis>Automation path</emphasis> - Open the automation path
panel.</para>
</listitem>
<listitem>
<para><emphasis>Timeline</emphasis> - Open the time line
panel (auto hiding the playback track)</para>
</listitem>
<listitem>
<para><emphasis>Playback track</emphasis> - Open the time line
panel (auto hiding the timeline)</para>
</listitem>
<listitem>
<para><emphasis>Full screen</emphasis> - Maximises the window size to the whole screen area</para>
</listitem>
</itemizedlist>
<para><emphasis role="bold">Options</emphasis>: selects the input mode and opens the general preferences
window.</para>
<itemizedlist>
<listitem>
<para><emphasis>Input mode</emphasis> -
when set to <emphasis>Drumset</emphasis> the keys on your midi keyboard will map to the instruments
in your drumkit. If you set it to <emphasis>Instrument</emphasis> the keys of your midi
keyboard will trigger the instrument that is currently selected.
The pitch of the instrument will follow the key you press on your keyboard.
This feature is mainly used for non-drum instruments.
An example: if you use a sample of a piano for one of your instruments, you will be able to 'play'
that piano instrument using your keyboard just like you are playing a piano synth.</para>
</listitem>
<listitem>
<para><emphasis>Preferences</emphasis> - Open the main preferences
window. Read <xref linkend="sect.preferences"/> on how to configure
Hydrogen.</para>
</listitem>
</itemizedlist>
<para><emphasis role="bold">Debug</emphasis>: tools mainly for debugging
and monitoring Hydrogen (only available when compiled with debug
support !).</para>
<itemizedlist>
<listitem>
<para><emphasis>Show audio engine info - </emphasis>Open a monitor
with various <link
linkend="sect.preferences.audio_engine_tab">stats</link></para>
</listitem>
<listitem>
<para><emphasis>debug action - </emphasis> Insert debug
commands.</para>
</listitem>
<listitem>
<para><emphasis>Print Objects - </emphasis>Print on stdout current
objects map.</para>
</listitem>
</itemizedlist>
<para><emphasis role="bold">Info</emphasis></para>
<itemizedlist>
<listitem>
<para><emphasis>User manual - </emphasis>Open a window with this
manual :)</para>
</listitem>
<listitem>
<para><emphasis>About - </emphasis>The usual window with license
information, acknowledgments, etc.</para>
</listitem>
<listitem>
<para><emphasis>Report bug - </emphasis> Opens the Hydrogen issue page at github.com in Internet browser
You can open a new issue to communicate a bug here (first search if there exists already an issue about it)</para>
</listitem>
<listitem>
<para><emphasis>Donate - </emphasis> Make a donation to developers/mantainers</para>
</listitem>
</itemizedlist>
</section>
<!-- MAIN TOOLBAR -->
<section id="sect.main_toolbar">
<title>The main toolbar</title>
<para>Before analyzing the two main frames of Hydrogen, let's take a quick
look at the main toolbar and its components:</para>
<itemizedlist>
<listitem>
<para>Pilot the song using the start, stop, pause, etc. buttons</para>
</listitem>
<listitem>
<para>Choose between "pattern" or "song" mode: in "pattern" mode only
the currently selected pattern will play, while in "song" mode all
patterns inserted will be played.</para>
</listitem>
<listitem>
<para>An advanced tap tempo function: choose note length and how many
notes to wait before recalculating BPM, then hit the comma key
repeatedly until the 'R' letter appears and then the BPM will be
updated. (see <xref linkend="sect.tap_tempo"/>)</para>
</listitem>
<listitem>
<para>Manually set BPM</para>
</listitem>
<listitem>
<para>Manage JACK transport</para>
</listitem>
<listitem>
<para>Open the mixer and the instrument rack panels</para>
</listitem>
</itemizedlist>
<figure id="fig.main_toolbar">
<title>The Main Toolbar</title>
<mediaobject>
<imageobject>
<imagedata fileref="img/MainToolbar_V2.png" format="PNG"/>
</imageobject>
</mediaobject>
</figure>
<itemizedlist mark="opencircle">
<listitem>
<para><inlinemediaobject><imageobject><imagedata
fileref="img/background_Control_V2.png" format="PNG"/>
</imageobject></inlinemediaobject></para>
<para>Main controls to start <emphasis role="bold">[Hotkey =
Spacebar]</emphasis>, stop, record, fast forward, rewind, loop a song or a
pattern.</para>
</listitem>
<listitem>
<para><inlinemediaobject><imageobject>
<imagedata fileref="img/background_Mode.png" format="PNG"/>
</imageobject></inlinemediaobject></para>
<para>Set Pattern/Song Mode. When Song mode is selected Hydrogen will play
the complete song. This is the sequence of patterns you have created in the Song
Editor (see <xref linkend="sect.song_editor"/>). When Pattern mode is selected
Hydrogen will play the pattern that is currently selected, and thus displayed
in the Pattern Editor (see <xref linkend="sect.pattern_editor"/>).</para>
</listitem>
<listitem>
<para><inlinemediaobject><imageobject>
<imagedata fileref="img/MeasureSettings.png" format="PNG"/>
</imageobject></inlinemediaobject></para>
<para>Set measure type and Beat Counter (see <xref linkend="sect.tap_tempo"/>).</para>
</listitem>
<listitem>
<para><inlinemediaobject><imageobject>
<imagedata fileref="img/background_BPM.png" format="PNG"/>
</imageobject></inlinemediaobject></para>
<para>Set speed of playing (range: 30-400 bpm) <emphasis
role="bold">[Hotkey = mouse wheel]</emphasis> and button to
enable/disable metronome</para>
</listitem>
<listitem>
<para><inlinemediaobject><imageobject>
<imagedata fileref="img/MidiIN_CPU.png" format="PNG"/>
</imageobject></inlinemediaobject></para>
<para>Shows CPU load and MIDI events. The CPU bargraph gives you an indication of the CPU load. The MIDI led lights up every time Hydrogen receives a midi message.</para>
</listitem>
<!--
<listitem>
<para><inlinemediaobject><imageobject>
<imagedata fileref="img/midi_in.png" format="PNG"/>
</imageobject></inlinemediaobject></para>
<para>Shows MIDI events.</para>
</listitem>
-->
<listitem>
<para><inlinemediaobject><imageobject>
<imagedata fileref="img/JackTrans_Master.png" format="PNG"/>
</imageobject></inlinemediaobject></para>
<para>Click J. TRANS to enable Jack transport. If the J. MASTER button is pressed Hydrogen will work as Jack timebase 'master' by sending additional information, like the current speed, to other Jack clients. Else it will either act as 'slave' in the presence of another timebase master (e.g. Ardour) or as a stand-alone client in the absence of it. Please note that when acting as 'slave' Hydrogen will obey the tempo provided by the timebase master and instead of its own tempo markers (see <xref linkend="sect.preferences.audio_tab"/>).</para>
</listitem>
<listitem>
<para><inlinemediaobject><imageobject>
<imagedata fileref="img/mixer-instrrack_btn.png" format="PNG"/>
</imageobject></inlinemediaobject></para>
<para>
The last section gives you quick access to the Mixer window and the Instrument Rack.
The LCD screen displays what Hydrogen is up to.
</para>
</listitem>
</itemizedlist>
<!-- TAP TEMPO -->
<section id="sect.tap_tempo" xreflabel="Tap Tempo and BeatCounter">
<title>Tap Tempo and BeatCounter</title>
<para>It is possible to change the tempo at any time using the Tap Tempo and
BeatCounter features of Hydrogen. You can do this while the song is playing or
while the song is stopped. To change the tempo, hit the
<keycap>,</keycap> (comma) key in the tempo you want.
After the correct number of keystrokes have been detected (see
below for details), the tempo will change to the average tempo
you tapped the comma key. If you continue to tap,
these new taps will become a part of a rolling average. If you tap
accidentally, or if you wait too long between taps, the tap tempo
counter will start over.</para>
<para>The Tap Tempo is a part of the BeatCounter, which is essentially a
Tap Tempo on steroids. By default the BeatCounter display is not
visible. To see the BeatCounter widget click the upright button
(<guilabel>BC</guilabel>) between Song/Pattern mode selector and the
BPM-widget, or, simply press the comma key.
(<keycap>,</keycap>).</para>
<para>The tempo that you tap will be considered even beats of the song's
beat type. The beat type can be set to 1/8 (for eight-note beats), 1/4 (for
quarter-note beats), 1/2 (for half-note beats), and 1/1 (for whole-note
beats). To change the beat type use the left +/- buttons. To change
the Countdown Counter value, use the right +/- buttons. The Countdown
Counter value can be set between 2 and 16 beats. (I.e. if you set the beat to 6, you will
have to tap 6 times before the new tempo is computed and set.) When the
display shows an <guilabel>R</guilabel>, it means that the BeatCounter
is ready to start from 0. When you tap the comma key, the R will change to
1, and will increment with every keystroke until it reaches the Countdown
Counter value (shown just below the 'R').</para>
<para>The button in the bottom right-hand controls the auto-start
feature, and it toggles between <guilabel>S</guilabel> and
<guilabel>P</guilabel>. When it shows <guilabel>P</guilabel> for
(<emphasis>Play</emphasis>), the song will set the new tempo and
automatically start to play after you tap the right number of beats (if
it's not already playing, of course). This way, if you have the
BeatCounter set up for 4/4, you can tap 1-2-3-4, and start playing on
the next beat. When it shows <guilabel>S</guilabel> (for <emphasis>Set
BPM</emphasis>), the auto-start is disabled.</para>
<para>For example: Suppose you have a live band, Hydrogen, and a
softsynth that is controlled by Seq24)... and you want them all to start
at the same time. Set the beat type to 1/4 and the number of beats to
4. Enable auto-start (button shows <guilabel>P</guilabel>). Count off
the band 1-2-3-4 (while tapping the comma key) — and everyone
starts on 1.</para>
<para>Another example: Same situation, but the song doesn't require
Hydrogen or synths until some point later. During that time, a human
(e.g. guitar player) will be setting the tempo. On the measure before
Hydrogen is supposed to play, tap the comma key 1-2-3-4 with the
beat... and you're in on the next beat (at the right tempo).</para>
<para>If you are using the JACK Transport, the BeatCounter continues to
work. If another program is the JACK Transport Master, Hydrogen will
respond to tempo change events from that application. Note that in this
situation, Hydrogen is supposed to be a <emphasis>slave</emphasis>, so
some of the BeatCounter features will be disabled or will not work
properly. If Hydrogen is the JACK Transport Master, tempo changes from
Hydrogen will be reflected in those programs (if they support
it).</para>
<para>Some of the settings to adjust the BeatCounter's latency
compensation, are located on the General tab of the Preferences Dialog
(see <xref linkend="sect.preferences.general_tab"/>
). Here you will find two spinboxes:</para>
<itemizedlist>
<listitem><para><emphasis role="bold"><guilabel>Beat counter drift
compensation in 1/10ms</guilabel></emphasis> — adjust to
compensate for latency between the keyboard and the
program.</para></listitem>
<listitem><para><emphasis role="bold"><guilabel>Beat counter start
offset in ms</guilabel></emphasis> — adjust the time between the
BeatCounter's last input stroke and when the song starts playing (if
auto-start is activated).</para></listitem>
</itemizedlist>
<para>Note that these can be set to positive (+) or negative (-) values.
In order to find useful values for these, you will need to take some
time to play with it. Also, you may want different values depending on
the speed of your hardware, audio devices, drivers, etc. Using the
BeatCounter effectively requires practice.</para>
</section>
</section>
<!-- SONG EDITOR -->
<section id="sect.song_editor">