• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..03-May-2022-

IR/H03-May-2022-4028

data/H03-May-2022-43

debian/H07-May-2022-907652

documentation/H03-May-2022-2,8162,194

factorysettings/H03-May-2022-17,59117,580

fonts/H03-May-2022-

glade-gxw/H10-Dec-2021-208174

ladspa/H10-Dec-2021-6,4854,389

libgxw/H10-Dec-2021-68,07564,876

libgxwmm/H10-Dec-2021-17,63410,449

pixmaps/H03-May-2022-2820

po/H10-Dec-2021-28,62422,705

pygxw/H10-Dec-2021-503437

rcstyles/H03-May-2022-2,4562,075

src/H10-Dec-2021-506,881447,639

tools/H03-May-2022-78,22466,559

waftools/H10-Dec-2021-902786

COPYINGH A D10-Dec-202153.5 KiB1,056861

READMEH A D10-Dec-20212.8 KiB10769

README.developersH A D10-Dec-20216.1 KiB167123

changelogH A D10-Dec-202125.3 KiB737559

guitarix.desktop.inH A D10-Dec-2021265 1210

guitarix.desktop.in_nsmH A D10-Dec-2021284 1311

org.guitarix.guitarix.metainfo.xmlH A D10-Dec-20211.6 KiB4135

wafH A D10-Dec-2021102.4 KiB174132

wscriptH A D10-Dec-202132 KiB798613

README

1Hello,
2
3Guitarix is a simple mono amplifier to be used in a 'JACKified'
4environment, i.e. a system using the JACK Audio Connection Kit, a
5professionally-capable audio/MIDI server and master transport control,
6available here:
7
8	http://jackaudio.org/
9
10Guitarix provides one JACK input port and two JACK output ports. It is
11designed to produce nice trash/metal/rock/blues guitar sounds. Controls
12for bass, treble, gain, compressor, tube selector, distortion, flanger,
13freeverb, crybaby (wah) and . . . . are available.
14
15
16======================= Building guitarix from source code
17
18---- Build environment
19
20Guitarix uses 'waf' for the build environment. The simplest and
21fastest way to build guitarix is given below:
22
23  cd guitarix_source_directory
24  ./waf configure
25  ./waf build
26  sudo ./waf install
27
28By default, this will install guitarix and related files in
29the /usr/local filesystem, e.g. /usr/local/bin.
30
31The installation prefix can be provided at configure time, e.g.:
32
33  ./waf configure --prefix=/usr
34  ./waf build
35  sudo ./waf install
36
37Thus, guitarix will be installed in /usr/bin.
38Check for all options :
39
40 ./waf --help
41
42---- Dependencies
43
44To compile and run properly guitarix needs the following extra
45packages (runtime binaries/libraries and development packages):
46
47  GTK+-3.0 >= 3.20
48  libsndfile  >= 1.0.17
49  JACK (jackd, libjack, and their development packages) >= 0.116.2
50  gtkmm-3.0 >= 3.20
51  fftw3f >= 3.1.2
52  ladspa-sdk
53
54By the way, most package managers usually list development packages as
55'packagename-dev', e.g. libsndfile-dev.
56
57---- Debian
58
59To build a Debian package, run "dpkg-buildpackage -rfakeroot -b"
60
61==================== Startup options
62
63Guitarix provides a few user options at startup.
64Check from the command line the usual -h,
65--help or --help-all options:
66
67==================== JACK startup when JACK isn't running
68
69Guitarix will pop up a JACK start dialog window if it finds that jackd
70is not running.
71
72The user can choose to activate JACK or exit guitarix.  Note that the
73supported methods for starting JACK are (by preference order):
74
751- qjackctl --start
762- Use of $HOME/.jackdrc
77
78=========== Extra information
79
80---- LADSPA
81
82Guitarix also comes as a suite of LADSPA plugins. If the user wishes
83to use guitarix or some of its effects in a LADSPA host (e.g. Ardour),
84the guitarix plugins are available. They are installed by default in
85
86  $PREFIX/lib/ladspa
87
88where PREFIX is either /usr or /usr/local.
89
90===========================================
91
92THANKS:
93
94We use FAUST to build the prototype and will say thanks
95to the following contributors:
96
97Contributors
98        : Julius Smith <http://ccrma.stanford.edu/realsimple/faust/>
99		: Albert Graef <http://www.musikwissenschaft.uni-mainz.de/~ag/ag.html>
100		: Yann Orlary <http://faust.grame.fr/>
101
102Enjoy! :)
103
104If you encounter problems building or running guitarix, please inform us.
105
106     guitarix-developer@lists.sourceforge.net
107

README.developers

1Documentation for Guitarix Developers
2
30. Tips for debugging Guitarix
41. Measurement of DSP processing times
52. Formatting of source code
63. Thread architecture
74. Parameters (for DSP algorithms etc.)
85. Integration of faust code
96. LADSPA
10
110. Tips for debugging Guitarix
12------------------------------
13
14 - waf build dependency computation is a lot faster with python3
15   than with python2
16
17 - building documentation:
18     "RUN_DOXYGEN=run python3 waf"         for fast results
19     "RUN_DOXYGEN=clang,run python3 waf"   yields precise "referenced by" information
20
21     omitting "run" creates build/documentation/Doxyfile, then run with
22     "cd build && doxygen documentation/Doxyfile"
23     View with e.g. "firefox $PWD/html/index.html"
24
25 - recommended build configuration: python3 waf configure --glade
26   --debug --debug enables a lot of extra checks (by not setting
27   -DNDEBUG)
28
29 - if you make changes to libgxw, add --generate-cpp
30
31 - when using gdb it's easier to debug without optimization:
32   --cxxflags-debug '-O0 -g'
33
34 - valgrind can be used when starting guitarix without the jackd
35   server, or when jackd runs with the dummy driver (jackd -ddummy),
36   e.g.: valgrind --leak-check=full guitarix
37
38 - when only working at the user interface (or the backend), another
39   possibility is to separate both parts by starting Guitarix in
40   headless mode and another instance as user interface:
41   terminal 1: guitarix -N
42   terminal 2: guitarix -G -H localhost
43
44 - if glade can't find the gxw support, use tools/gxglade (or do
45   sudo waf install)
46
47 - changes to scss files will be reflected instantly if you start the
48   script tools/run-scss-watch
49
50 - to inspect the internal state of the Gtk widget, use
51   "gsettings set org.gtk.Settings.Debug enable-inspector-keybinding true"
52   and start the inspector window with "Ctrl Shift I" while the mouse
53   pointer is over a widget.
54
55 - there are a lot of Gtk debug options (-> Gtk documentation), which
56   might be available in your Gtk build (like --gtk-debug=icontheme).
57
58 - if you don't find a signal source for testing, one possibility is
59   to build the osci executable from osci.dsp with faust2jack (both in
60   the Faust distribution, Debian packet faust-common). This can be
61   used together with jackd -ddummy to test the software in a
62   virtualized environment (container etc.).
63
64
651. Measurement of DSP processing times
66----------------------------------------------------------------
67
68Guitarix must be compiled with --debug (specifically NDEBUG not
69defined). Time measurement is switched on by defining the environment
70variable GUITARIX_MEASURE. When setting its value to 1 results are
71more verbose. Results are printed each second on stdout.
72
73For better controlled measurements you can disable frequency scaling
74and set cpu affinity:
75
76$ sudo cpufreq-set -d 800MHz -u 800MHz # or whatever your cpu supports
77$ GUITARIX_MEASURE=1 taskset -c 0 guitarix
78
79
802. Formatting of source code
81----------------------------------------------------------------
82
83We use emacs c++ style "cc-mode" (other formatters like astyle have
84similar styles under this name) with following modifications:
85
86 - namespaces do not increase indentation
87 - spaces preferred to tabs for indentation
88
89If you use the Emacs editor:
90In ~/.emacs:
91------
92(defconst my-cc-style
93  '("cc-mode"
94    (indent-tabs-mode . nil)
95    (c-offsets-alist . ((innamespace . [0])))))
96(c-add-style "guitarix-cc-mode" guitarix-cc-style)
97--
98In trunk/.dir-locals.el:
99------
100((c++-mode . ((c-file-style . "guitarix-cc-mode") (tab-width . 4)))
101 (c-mode   . ((c-file-style . "guitarix-cc-mode") (tab-width . 4))))
102--
103
1043. Thread architecture
105----------------------------------------------------------------
106
107Basically there are 2 threads:
108
109 - the main thread for all work (especially all user interface)
110   except audio processing
111
112 - the jack rt thread for audio processing in the process() callback
113   in hard real time (as "hard" as available..). The jack notification
114   callbacks have more relaxed time constraints and may be executed in
115   another thread created by libjack (depends on if you are using
116   jack1 or jack2).
117
118All other threads are just waiting for some semaphore or process
119signal and delegate their work to the main thread via g_idle_add (this
120is safe because the glib main loop data structures are protected by a
121mutex).
122
123An exception is the library for the zita convolver, which creates rt
124threads to spread the work for convolution processing. But this is
125internal to the library.
126
127At some places in the program g_idle and g_timeout callbacks are
128called threads, but these are running synchronous in the main loop and
129are not meant here (on MP systems the main thread can even run
130simultaneously with the rt thread).
131
132
1334. Parameters (for DSP algorithms etc.)
134----------------------------------------------------------------
135
136All parameters have a unique string id. Its a path notation of group,
137subgroup(s) and name separated by ".".
138
139There is a base type (Parameter) and a central registry
140(ParamMap) for all parameters. Parameters have a user-visible
141group and name (e.g. when you set the midi controller for a
142parameter) and a description, and can be defined in faust dsp code.
143
144Registered parameters are saved into the application settings file and
145possibly into preset files (depending on a flag in the parameter
146definition).
147
148
1495. Integration of faust code
150----------------------------------------------------------------
151
152Since faust code (http://faust.grame.fr ) is quite legible, but not so
153the generated c++ code, its a good idea to work with the faust code
154directly. This could be done by using the faust generated c++ objects
155(and quite some runtime shuffling), but we are using the python script
156tools/dsp2cc to post-process the faust output (giving some more
157control at the expense of being a bit more faust version dependent).
158
159Faust dsp files are in src/faust, the generated files get copied to
160src/faust-cc for distribution so the program can be build later even
161if faust is not installed (or no compatible version).
162
1636. LADSPA
164----------------------------------------------------------------
165
166Guitarix has been allocated the range 4061 - 4099 for LADSPA UniqueID's.
167