Giter VIP home page Giter VIP logo

guitarix's People

Contributors

adegert avatar bayo avatar boomshop avatar brummer10 avatar elbeardmorez avatar govynnus avatar hfiguiere avatar kramlie avatar lfagundes avatar luzpaz avatar mauser avatar maxpayne86 avatar mrcouts avatar puleglot avatar rippert avatar rodgert avatar simonvanderveldt avatar snd1 avatar sp-pinkeye avatar thedrgreenthumb avatar torte71 avatar trebmuh avatar tristantarrant avatar unclechu avatar zamaudio avatar zonkmachine avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

guitarix's Issues

Build error Guitarix on OS X

I'm trying to build Guitarix on OS X 10.14.5. Does anyone know if this has been done or is expected to work? I know the project doesn't explicitly support non-linux platforms, just wondering if it has been done.

For my actual error, from ./waf build:

../src/headers/gx_system.h:135:12: error: cannot initialize a parameter of type 'void **' with an rvalue of type 'typeof ((oldv)) *' (aka '_jack_session_event **')

Any ideas?

Support sample rates above 96 kHz

My audio interface natively supports 192 KHz playback, so I set jack to use that. Guitarix won't launch and this message is displayed:

image

This seems like an arbitrary software limitation that is completely pointless. Jack supports refresh rates above 96 KHz just fine.

Compile error using gcc-10.3.0 on Ubuntu 21.04

I get this when I try to compile the latest git source, 0.28.3-1667-g819c891e
../src/headers/gx_system.h: In instantiation of ‘bool gx_system::atomic_compare_and_exchange(T**, T*, T*) [with T = _jack_session_event]’: ../src/gx_head/engine/gx_jack.cpp:1110:79: required from here /usr/include/glib-2.0/glib/gatomic.h:206:45: warning: invalid conversion from ‘volatile void*’ to ‘void*’ [-fpermissive] 206 | __atomic_compare_exchange_n ((atomic), &gapcae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE;
and it points to the &gapcae_oldval variable

My C-Fu isn't strong enough to figure out the proper solution but the quick-n-dirty fix was to add -fpermissive to CXXFLAGS in trunk/build/c4che/_cache.py

[Feature Request] MIDI out option for tuner for headless use

I really like the Guitarix tuner. It is one of the few that lets me tune my 5-string Bass with open strings. I would like to use it when I am running Guitarix on a headless system. I think something like a note-on message with the closest note value and the velocity equal to 63 when in tune. The velocity value would be lower than 63 when the note needs to be tuned higher, and higher than 63 when the note needs to be tuned lower. This could be used to provide a simple tuner display on my pedalboard similar to what the GUI display is like when set to "scale."

This could be an option under the Options menu.

Note this is different from trying to provide a note to MIDI interface which would have the velocity proportional to the loudness of the note.

Master fails to build

I try to build guitarix master version on fedora 32 64 bits.

The compilations fails with the following message (missing file ...):

1044/1044] Compiling src/LV2/faust-generated/gxtape_st.cc
Waf: Leaving directory `/home/collette/repositories/guitarix/trunk/build'
source not found: './resources/back.o' in bld(source=[/home/collette/repositories/guitarix/trunk/src/LV2/xputty/xadjustment.cpp, /home/collette/repositories/guitarix/trunk/src/LV2/xputty/xadjustment_private.cpp, /home/collette/repositories/guitarix/trunk/src/LV2/xputty/xasprintf.cpp, /home/collette/repositories/guitarix/trunk/src/LV2/xputty/xchildlist.cpp, /home/collette/repositories/guitarix/trunk/src/LV2/xputty/xchildlist_private.cpp, /home/collette/repositories/guitarix/trunk/src/LV2/xputty/xcolor.cpp, /home/collette/repositories/guitarix/trunk/src/LV2/xputty/xfilepicker.cpp, /home/collette/repositories/guitarix/trunk/src/LV2/xputty/xpngloader.cpp, /home/collette/repositories/guitarix/trunk/src/LV2/xputty/xputty.cpp, /home/collette/repositories/guitarix/trunk/src/LV2/xputty/xwidget.cpp, /home/collette/repositories/guitarix/trunk/src/LV2/xputty/xwidget_private.cpp, /home/collette/repositories/guitarix/trunk/src/LV2/xputty/widgets/xbutton.cpp, /home/collette/repositories/guitarix/trunk/src/LV2/xputty/widgets/xbutton_private.cpp, /home/collette/repositories/guitarix/trunk/src/LV2/xputty/widgets/xcombobox.cpp, /home/collette/repositories/guitarix/trunk/src/LV2/xputty/widgets/xcombobox_private.cpp, /home/collette/repositories/guitarix/trunk/src/LV2/xputty/widgets/xknob.cpp, /home/collette/repositories/guitarix/trunk/src/LV2/xputty/widgets/xknob_private.cpp, /home/collette/repositories/guitarix/trunk/src/LV2/xputty/widgets/xlabel.cpp, /home/collette/repositories/guitarix/trunk/src/LV2/xputty/widgets/xlabel_private.cpp, /home/collette/repositories/guitarix/trunk/src/LV2/xputty/widgets/xlistbox.cpp, /home/collette/repositories/guitarix/trunk/src/LV2/xputty/widgets/xlistbox_private.cpp, /home/collette/repositories/guitarix/trunk/src/LV2/xputty/widgets/xlistview.cpp, /home/collette/repositories/guitarix/trunk/src/LV2/xputty/widgets/xlistview_private.cpp, /home/collette/repositories/guitarix/trunk/src/LV2/xputty/widgets/xmenu.cpp, /home/collette/repositories/guitarix/trunk/src/LV2/xputty/widgets/xmenu_private.cpp, /home/collette/repositories/guitarix/trunk/src/LV2/xputty/widgets/xmeter.cpp, /home/collette/repositories/guitarix/trunk/src/LV2/xputty/widgets/xmeter_private.cpp, /home/collette/repositories/guitarix/trunk/src/LV2/xputty/widgets/xplayhead.cpp, /home/collette/repositories/guitarix/trunk/src/LV2/xputty/widgets/xplayhead_private.cpp, /home/collette/repositories/guitarix/trunk/src/LV2/xputty/widgets/xslider.cpp, /home/collette/repositories/guitarix/trunk/src/LV2/xputty/widgets/xslider_private.cpp, /home/collette/repositories/guitarix/trunk/src/LV2/xputty/widgets/xtooltip.cpp, /home/collette/repositories/guitarix/trunk/src/LV2/xputty/widgets/xtooltip_private.cpp, /home/collette/repositories/guitarix/trunk/src/LV2/xputty/widgets/xtuner.cpp, /home/collette/repositories/guitarix/trunk/src/LV2/xputty/widgets/xtuner_private.cpp, /home/collette/repositories/guitarix/trunk/src/LV2/xputty/widgets/xvaluedisplay.cpp, /home/collette/repositories/guitarix/trunk/src/LV2/xputty/widgets/xvaluedisplay_private.cpp, /home/collette/repositories/guitarix/trunk/src/LV2/xputty/dialogs/xfile-dialog.cpp, /home/collette/repositories/guitarix/trunk/src/LV2/xputty/dialogs/xmessage-dialog.cpp, /home/collette/repositories/guitarix/trunk/src/LV2/xputty/dialogs/xmidi_keyboard.cpp, './resources/back.o', './resources/champ.o', './resources/choice.o', './resources/chump.o', './resources/chumpknob.o', './resources/close.o', './resources/directory.o', './resources/directory_open.o', './resources/echocat.o', './resources/echocatknob.o', './resources/echoswitch.o', './resources/error.o', './resources/guitarix.o', './resources/guitarix_dark.o', './resources/guitarix_orange.o', './resources/info.o', './resources/load.o', './resources/message.o', './resources/midikeyboard.o', './resources/play.o', './resources/playreverse.o', './resources/question.o', './resources/record.o', './resources/redeyelogo.o', './resources/screw.o', './resources/screwhead.o', './resources/studiopre.o', './resources/studiopreknob.o', './resources/switch.o', './resources/tape.o', './resources/tapeknob.o', './resources/w20.o', './resources/w20knob.o', './resources/warning.o', './resources/xputty_logo.o'], target='xcairo', meths=['add_ldscript', 'add_mapfile', 'process_rule', 'process_source', 'apply_link', 'add_ldscript_dep', 'process_use', 'propagate_uselib_vars', 'apply_incpaths', 'set_macosx_deployment_target'], features=['cxx', 'cxxstlib'], path=/home/collette/repositories/guitarix/trunk/src/LV2/xputty, idx=1, tg_idx_count=467, _name='xcairo', includes=['.', './header', './header/widgets', './header/dialogs', './resources', './xdgmime'], export_includes=['..'], uselib=['X11', 'CAIRO'], cxxflags='-fPIC', use='re_sources', install_path=None, posted=True, ldflags=[]) in /home/collette/repositories/guitarix/trunk/src/LV2/xputty

mod-pitchshifter LV2 plugins don't appears

The LV2 plugins from mod-pitchshifter (Capo, Drop , Super Whammy, Harmonizer...) don't appear in Guitarix.
Is it for the same reason they don't appear in Ardour ?
Ardour says that about them:

Ardour: [WARNING]: Unsupported required LV2 feature: 'http://lv2plug.in/ns/ext/buf-size#powerOf2BlockLength' in '2Voices'.
Ardour: [WARNING]: Unsupported required LV2 feature: 'http://lv2plug.in/ns/ext/buf-size#fixedBlockLength' in '2Voices'.
Ardour: [WARNING]: Unsupported required LV2 feature: 'http://lv2plug.in/ns/ext/buf-size#fixedBlockLength' in 'Capo'.
Ardour: [WARNING]: Unsupported required LV2 feature: 'http://lv2plug.in/ns/ext/buf-size#powerOf2BlockLength' in 'Capo'.
Ardour: [WARNING]: Unsupported required LV2 feature: 'http://lv2plug.in/ns/ext/buf-size#fixedBlockLength' in 'Drop'.
Ardour: [WARNING]: Unsupported required LV2 feature: 'http://lv2plug.in/ns/ext/buf-size#powerOf2BlockLength' in 'Drop'.
Ardour: [WARNING]: Unsupported required LV2 feature: 'http://lv2plug.in/ns/ext/buf-size#fixedBlockLength' in 'Harmonizer'.
Ardour: [WARNING]: Unsupported required LV2 feature: 'http://lv2plug.in/ns/ext/buf-size#powerOf2BlockLength' in 'Harmonizer'.
Ardour: [WARNING]: Unsupported required LV2 feature: 'http://lv2plug.in/ns/ext/buf-size#powerOf2BlockLength' in 'Harmonizer2'.
Ardour: [WARNING]: Unsupported required LV2 feature: 'http://lv2plug.in/ns/ext/buf-size#fixedBlockLength' in 'Harmonizer2'.
Ardour: [WARNING]: Unsupported required LV2 feature: 'http://lv2plug.in/ns/ext/buf-size#fixedBlockLength' in 'HarmonizerCS'.
Ardour: [WARNING]: Unsupported required LV2 feature: 'http://lv2plug.in/ns/ext/buf-size#powerOf2BlockLength' in 'HarmonizerCS'.
Ardour: [WARNING]: Unsupported required LV2 feature: 'http://lv2plug.in/ns/ext/buf-size#fixedBlockLength' in 'Super Capo'.
Ardour: [WARNING]: Unsupported required LV2 feature: 'http://lv2plug.in/ns/ext/buf-size#powerOf2BlockLength' in 'Super Capo'.
Ardour: [WARNING]: Unsupported required LV2 feature: 'http://lv2plug.in/ns/ext/buf-size#fixedBlockLength' in 'Super Whammy'.
Ardour: [WARNING]: Unsupported required LV2 feature: 'http://lv2plug.in/ns/ext/buf-size#powerOf2BlockLength' in 'Super Whammy'.

Question: New dependencies since 0.40.x Cairo/xlib?

SORRY! The dev on Reaper Linux is just way too fast! There's a new version every day. So today, in Reaper 6.21+dev0130 Gx GUIS:s are there again!!

Sorry to bother you!

Just a question about possible new deps when compiling LV2 since version 0.40.x . I just compiled 0.42.x (latest) and get no LV2 GUI. In the Readme files I read that since version 0.40 Gx uses cairo/xlib instead of GTK for Lv2 plugins, but I see no new deps for that? I'm a just way off (or stupid)?

There are a few possible sources for the "no gui" problem; I'm using the newest dev version of Reaper 6.21.129-dev, and I'm on a rolling distro (PC Linux OS). So either Reaper has some temp error in itself, or I'm missing some libs in my distro. Reaper LV2 development seems to be in a rapid phase, so that bit will be fixed soonish.

By the way, Guitarix plugins are great!!! Sound is very subJective, but the possibilities with these plugins are endless! Thanks Brummer!

Build failure: error: 'signbit' was not declared in this scope

Trying to build guitarix 0.41.0 for Rosa Linux 2016.1 (a Mandriva derivative) on x86_64, with gcc 5.5.0.
The build of the following files in src/faust: champ.cc, epiphone.cc, orangedarkterror.cc and supersonic.cc, fails with the error message:


In file included from ../src/gx_head/engine/gx_faust_plugins.cpp:153:0:
src/faust/supersonic.cc: In member function 'void gx_engine::gx_poweramps::supersonic::Dsp::compute(int, float*, float*)':
src/faust/supersonic.cc:125:73: error: 'signbit' was not declared in this scope


See the full log of a failed build:
BuildFailedCMath.txt
This is likely due to the use of "<math.h>" for c++ source files, instead of "cmath".
In any case, this patch solves the issue for me:
guitarix2-0.41.0-fix-cmath-inclusion-in-generated-faust-files.txt

Cannot select non-user's preset.

Greetings!

I found that with 0.41.0 it's impossible to select preset from factory or from inet, they looks like inactive and haven't numbers. Mouse clicking does nothing too:

изображение

do I miss something?

GUI crash when using MIDI to change values of knobs

First, let me say that the MIDI feedback works really well and makes my control surface much more useful with Guitarix. Also, I don't think this is a new bug. I remember seeing this years ago when I first tried out Guitarix, but I wasn't even on github then, and I never really used the MIDI control with guitarix except to change patches and mute. Just tested changing the controls with my expression pedal once, noticed it crashed sometimes when doing that, and then never tried it again.

Crash - when the GUI is open and you use a midi CC to change the value of a knob, such as Drive, Pre Gain, Master Gain, Master Volume, etc, eventually the GUI will crash during a MIDI CC value change. Meaning that guitarix with no switches crashes, but only the guitarix -G instance crashes when using -N and -G instances. It only seems to happen when you send a bunch of CC messages in a row, like stepping on an expression pedal or turning a physical knob on a control surface.

When its the guitarix with no switches crashing, I get this error message:

**
Gtk:ERROR:../../../../gtk/gtkcssinheritvalue.c:33:gtk_css_value_inherit_free: code should not be reached
**
Gtk:ERROR:../../../../gtk/gtkcssinheritvalue.c:33:gtk_css_value_inherit_free: code should not be reached

[2]+  Aborted                 guitarix

I don't have any debugging turned on in the compile. Let me know if you want me to try that again with gdb.

Hard Limiter ratio and threshold

I was testing out the latest commit with the Limiter meter, and I noticed it started limiting long before the main output meter goes into the red. Looking at the code, you've got a ratio of 4 and a threshold of -6dB. These are pretty low for what I would consider a hard limiter. More like an output compressor.

When I set up an output limiter on my mixer, I set the ratio to 100, and the threshold to 0dB. I also set a slightly soft knee, which seems similar to what you are doing in your code. That way the compressor kicks in a little below 0dB but really limits the signal quickly as it tries to go above 0dB.

I tried this in hardlim.dsp, and it seemed to work well for me. Only coming on when the main output meter was well into the red, and not allowing any digital clipping that I could hear.

Maybe I don't understand your reason for using the softer compression, but it may be worth trying this out for yourself and see if it does what you want. It is less intrusive on the overall sound of the amp, but does provide a hard limit.

I realize that I can just turn down the Master Volume knob and turn up my Hardware Power Amp gain, which I was doing. So maybe this doesn't need to be changed if you've got reasons for the softer compression limiter.

Fuzz Face Mayer broken in git

Hi Hermann,

I have just noticed an issue with the FF Mayer on Arch Linux (latest git): it sounds like there's a badly set up noise gate with a slow volume ramp up and is pretty much unusable (tested both at 96 &48 Khz).
Last I remember it was working fine as of December, so this could be due to one of the latest commits like maybe:
634748f

Arch is changing quite fast, so I wouldn't be able to pinpoint what library was upgraded during that time.
I have currently:
faust 2.30.5-1
boost1.75.0-2

I also didn't notice any issue with the other plugins (so far)

BR,

LX

Current Raspberry Pi configuration to build guitarix

Hello, I wanted to test out your new MIDI feedback option, but I am having a hard time getting guitarix to compile and run on my Raspberry PI. Just trying a generic compile using:

./waf configure
.waf build

does not work as the Pi (a 3B+) runs out of memory.

./waf configure -j 1

does not help as the -j option is ignored. I was able to get the compilation to complete by using an environment variable (export JOBS=1) prior to configuration. However the resulting executable fails to run with the message:

guitarix: symbol lookup error: guitarix: undefined symbol: _ZN3Gxw11PortDisplay14set_cutoff_lowEi

So I figured I would stop guessing and ask what configuration options I should use to compile the latest git on a Raspberry Pi 3B+.

My current OS is archlinuxarm, and I can install and run guitarix 0.39 from the pacman repository with no problems. I also have Raspbian Stretch and Buster available to try it on if that helps.

Thanks,
Ted

Python version for dkbuilder

I have an issue with the dependencies listed to run dkbuilder. My distribution has a conflict between the packages virtualenv and python-virtualenv. The former is python3 and it explicitly breaks the latter which is python2. Since virtualenv is a meta-package, I think I can just install the other listed dependencies to get a python2 setup or use the versions prefaced with python3- to get a python3 setup.

Should I install the python3 versions of all dependencies or the python2 versions?

Certainly not your fault, but this is one of the things I hate about Python.

Can't access to own presets when starting guitarix with NSM

Hi,
I encounter an issue when i launch guitarix with NSM (and also with RaySession), guitarix doesn't show presets i made with the standalone ( outside NSM). And if I made a preset in NSM, it doesn't appear in the preset list of the Jack app. It could be very useful to have access to the presets made previously inside or outside NSM.

Add DC offset blocker at front of audio chain

This may be the reason there was a highpass filter on the tubes.

I tried turning off my soundcard's ADC highpass filter to get rid of some ringing and I noticed that the VU meter on the Tube section in Guitarix was showing a very high noise floor. I couldn't hear any noise, and the signal meters on my mixer weren't showing any signal coming off of my soundcard output.

I added back the highpass filter on the tubes in guitarix.lib and it got rid of the VU meter problem even if I set the cutoff frequency to 1 Hz. This also worked if you replace the fi.highpass() with fi.dcblockerat() set to 1 Hz. I wouldn't recommend using fi.dcblocker(), as it is set to 35 Hz, which is too high.

The problem with having this at the tube stage is that the bypass setting still is affected, and anything before the tubestage is still affected. The change in sound is minimal at low gains, but at high gains, all sound stops because of the saturated DC offset.

I'm not sure where in the code to put this myself, but there needs to be a filter to block the DC offset at the very front of the audio chain. As I said, a regular highpass filter will work even when set to 1 Hz. It could also be set to 10 Hz for margin as this will not effect the audio in a perceivable way. I tested the 10 Hz case also on my Bass amp, and could not hear any degradation in the low end of the sound.

This is probably a fairly rare problem as most sound cards will not pass DC offsets. However some do, as mine does, and mine uses some kind of adaptive digital filter that creates an annoying ringing sound as a note decays to silence so I would prefer to leave it off.

Thanks,
-Ted

Android port?

Hello, this project is very interesting. It looks huge. I tried to take a look at the code and it looks very related to GDK.

Although Jack maybe could work on Android since it's Linux (don't know exactly), I think it's not that easy. It looks like the engine.h file: https://github.com/brummer10/guitarix/blob/master/trunk/src/headers/engine.h has some dependencies to LV2 and jack. Maybe it's possible to port some of the sound processing functions to work with raw wav data, without using microphone from Jack? On Android, Oboe is a library that is able to open microphones and receive the .wav stream.

Thanks!

./waf configure --optimization fail on aarch64 (Rasperry Pi)

Trying to build Guitarix on Raspberry Pi 400 using the 64-bits OS (aarch64)

I configure with
./waf configure --optimization

Configure end with a Python error:

Traceback (most recent call last):
  File "/home/hub/source/org.guitarix.Guitarix/guitarix-0.41.0/.waf-2.0.19-1f3c580272b15a03d2566843c5fe872a/waflib/Scripting.py", line 119, in waf_entry_point
    run_commands()
  File "/home/hub/source/org.guitarix.Guitarix/guitarix-0.41.0/.waf-2.0.19-1f3c580272b15a03d2566843c5fe872a/waflib/Scripting.py", line 182, in run_commands
    ctx=run_command(cmd_name)
  File "/home/hub/source/org.guitarix.Guitarix/guitarix-0.41.0/.waf-2.0.19-1f3c580272b15a03d2566843c5fe872a/waflib/Scripting.py", line 173, in run_command
    ctx.execute()
  File "/home/hub/source/org.guitarix.Guitarix/guitarix-0.41.0/.waf-2.0.19-1f3c580272b15a03d2566843c5fe872a/waflib/Configure.py", line 85, in execute
    super(ConfigurationContext,self).execute()
  File "/home/hub/source/org.guitarix.Guitarix/guitarix-0.41.0/.waf-2.0.19-1f3c580272b15a03d2566843c5fe872a/waflib/Context.py", line 92, in execute
    self.recurse([os.path.dirname(g_module.root_path)])
  File "/home/hub/source/org.guitarix.Guitarix/guitarix-0.41.0/.waf-2.0.19-1f3c580272b15a03d2566843c5fe872a/waflib/Context.py", line 133, in recurse
    user_function(self)
  File "/home/hub/source/org.guitarix.Guitarix/guitarix-0.41.0/wscript", line 389, in configure
    conf.gxload('cpu_optimization')
  File "/home/hub/source/org.guitarix.Guitarix/guitarix-0.41.0/wscript", line 26, in <lambda>
    lambda ctx, tool: ctx.load(tool, tooldir='waftools')
  File "/home/hub/source/org.guitarix.Guitarix/guitarix-0.41.0/.waf-2.0.19-1f3c580272b15a03d2566843c5fe872a/waflib/Configure.py", line 156, in load
    func(self)
  File "waftools/cpu_optimization.py", line 169, in configure
    cpu_model = append_optimization_flags(conf, cxxflags)
  File "waftools/cpu_optimization.py", line 83, in append_optimization_flags
    "YELLOW")
  File "/home/hub/source/org.guitarix.Guitarix/guitarix-0.41.0/.waf-2.0.19-1f3c580272b15a03d2566843c5fe872a/waflib/Configure.py", line 175, in fun
    return f(*k,**kw)
TypeError: display_msg() takes at most 3 arguments (4 given)

The line in question is

    if cpu_model is None or x86_flags is None:
        conf.display_msg("Checking CPU Architecture",
                         "cpu model not found in /proc/cpuinfo",
                         "YELLOW")

The bug is two fold:

  1. the error reporting is broken, and I'm not sure why Python throw an error.
  2. the --optimization assume x86_64.

The former should be fixed first.

For the latter the gist is that is checks /proc/cpuinfo assuming a particular format.
grep ^model\ name /proc/cpuinfo returns nothing on aarch64

Let me know if you need more info.

dkbuilder buildlv2 error

Hello, I started today to look into the nice dkbuilder tool, first of all thanks for realizing this tool. I've installed Docker.io and fired the following commands

  1. host: $ docker run -it --name guitarix-dkbuilder -v /localdisk/massimo/Work/Git/brummer10/guitarix:/mnt/data ubuntu bash
  2. guest: $ apt-get update
  3. guest: $ apt-get install git geda geda-gattrib geda-gnetlist geda-gschem geda-gsymcheck geda-symbols python-dev python-virtualenv python-tk virtualenv virtualenvwrapper faust libeigen3-dev libcminpack-dev libsundials-dev libserial-dev maxima libslicot0
  4. guest: $ dpkg --list | grep faust # Need to be = 0.9.90, is actually 0.9.95~repack1-2
  5. guest: $ cd /mnt/data/trunk/tools/ampsim/DK
  6. guest: $ source /usr/share/virtualenvwrapper/virtualenvwrapper.sh
  7. guest: $ mkvirtualenv -r python_venv guitarix
  8. guest: $ nano ~/.bashrc
  9. guest: $ append this into the ~/.bashrc file

dkbuilder() {
source /usr/share/virtualenvwrapper/virtualenvwrapper.sh
cd /mnt/data/trunk/tools/ampsim/DK/gschem-schematics
workon guitarix
}

  1. guest: $ source ~/.bashrc
  2. guest: $ dkbuilder # Run dkbuilder
  3. guest: $ ./build-plug.py -i VoxWahV847.sch --buildlv2 -n VoxWahV847

Input file 1: VoxWahV847.sch
module_id: voxwahv847
['R12', 'RESISTOR', '10k', 'unnamed_net11', 'unnamed_net2']
['R11', 'RESISTOR', '10k', 'GND', 'unnamed_net10']
['RL', 'RESISTOR', '60', 'unnamed_net12', 'V6']
['L1', 'INDUCTOR', '0.5H', 'unnamed_net8', 'unnamed_net12']
['R3', 'RESISTOR', '22k', 'unnamed_net3', '+9V']
['Vcc', 'POWER', '9V', '+9V']
['P1', 'VARIABLE_RESISTOR', 'value=80k,var=Wah,a=3', 'unnamed_net10', 'unnamed_net11', 'unnamed_net9']
['C1', 'CAPACITOR', '0.01u', 'V2', 'V1']
['R10', 'RESISTOR', '10k', 'GND', 'unnamed_net6']
['R5', 'RESISTOR', '100k', 'GND', 'V6']
['R7', 'RESISTOR', '33k', 'unnamed_net8', 'V6']
['R6', 'RESISTOR', '470k', 'V6', 'unnamed_net3']
['R8', 'RESISTOR', '470k', 'unnamed_net5', 'unnamed_net3']
['R1', 'RESISTOR', '68k', 'V1', 'unnamed_net7']
['C4', 'CAPACITOR', '0.22u', 'unnamed_net5', 'unnamed_net9']
['C3', 'CAPACITOR', '0.01u', 'unnamed_net6', 'unnamed_net8']
['R4', 'RESISTOR', '510', 'GND', 'unnamed_net4']
['R2', 'RESISTOR', '1.5k', 'unnamed_net8', 'V2']
['C2', 'POLARIZED_CAPACITOR', '4.7u', 'V6', 'GND']
['OUT1', 'OUTPUT', 'None', 'unnamed_net2']
['IN1', 'INPUT', 'None', 'unnamed_net7']
['T2', 'NPN_TRANSISTOR', 'Vt=26mV,Is=20.3fA,Bf=1430,Br=4', 'unnamed_net1', 'unnamed_net5', 'unnamed_net6']
['T1', 'NPN_TRANSISTOR', 'Vt=26mV,Is=20.3fA,Bf=1430,Br=4', 'unnamed_net3', 'V2', 'unnamed_net4']
['C6', 'CAPACITOR', '0.22u', 'unnamed_net2', 'unnamed_net3']
['R9', 'RESISTOR', '1k', 'unnamed_net1', '+9V']

S = ((R(12), 'u11', 'u2',),
(R(11), GND, 'u10',),
(R('L'), 'u12', 'V6',),
(L(1), 'u8', 'u12',),
(R(3), 'u3', '+9V',),
(V('cc'), '+9V',),
(P(1), 'u10', 'u11', 'u9',),
(C(1), 'V2', 'V1',),
(R(10), GND, 'u6',),
(R(5), GND, 'V6',),
(R(7), 'u8', 'V6',),
(R(6), 'V6', 'u3',),
(R(8), 'u5', 'u3',),
(R(1), 'V1', 'u7',),
(C(4), 'u5', 'u9',),
(C(3), 'u6', 'u8',),
(R(4), GND, 'u4',),
(R(2), 'u8', 'V2',),
(C(2), 'V6', GND,),
(T(2), 'u1', 'u5', 'u6',),
(T(1), 'u3', 'V2', 'u4',),
(C(6), 'u2', 'u3',),
(R(9), 'u1', '+9V',),
(OUT, 'u2',),
(IN, 'u7',),
)
V = {C(1): 0.01e-6,
C(2): 4.7e-6,
C(3): 0.01e-6,
C(4): 0.22e-6,
C(6): 0.22e-6,
L(1): 0.5,
P(1): dict(value=80.e3, var='Wah', a=3),
R('L'): 60.,
R(1): 68.e3,
R(10): 10.e3,
R(11): 10.e3,
R(12): 10.e3,
R(2): 1.5e3,
R(3): 22.e3,
R(4): 510.,
R(5): 100.e3,
R(6): 470.e3,
R(7): 33.e3,
R(8): 470.e3,
R(9): 1.e3,
T(1): dict(Vt=26e-3, Is=20.3e-15, Bf=1430, Br=4),
T(2): dict(Vt=26e-3, Is=20.3e-15, Bf=1430, Br=4),
V('cc'): 9.,
}

personality failure 1


Truncated output: ...
Traceback (most recent call last):
File "./build-plug.py", line 479, in
main(sys.argv[1:])
File "./build-plug.py", line 476, in main
dk.build()
File "./build-plug.py", line 397, in build
faustdsp, faustui = c1.get_faust_code(filename=str(dspname))
File "./analog.py", line 780, in get_faust_code
b, a = self.sim_filter.get_z_coeffs(samplerate=FS)
File "./dk_simulator.py", line 244, in get_z_coeffs
expr = self.solve(expr, self.in_mat, self.out_mat)
File "./dk_simulator.py", line 334, in solve
maxima_error("unexpected output from maxima")
File "./dk_simulator.py", line 328, in maxima_error
raise ValueError(s)
ValueError: unexpected output from maxima`

Any clue?

gx_colwah.lv2 manifest.ttl is installed in wrong location

The manifest.ttl file for the gx_colwah.lv2 LV2 bundle is installed as /usr/lib/lv2/gx_wah.lv2/manifest.ttl, but the bundle is actually in /usr/lib/lv2/gx_colwah.lv2. The source directory is called src/LV2/gx_wah.lv2, though, apparently the wscript doesn't handle that correctly.

Encountered in guitarix 0.39.0.

Build error: error: 'class Glib::RefPtr<Glib::Object>' has no member named 'get'

After working around issue #32, I stumbled upon on another roadblock: the build now fails with this error message


In file included from ../src/headers/guitarix.h:83:0,
from ../src/gx_head/gui/gx_sequencer_settings.cpp:20:
../src/headers/gx_ui_builder.h: In member function 'void gx_gui::GxBuilder::find_object(const Glib::ustring&, T_Object*&)':
../src/headers/gx_ui_builder.h:118:52: error: 'class Glib::RefPtrGlib::Object' has no member named 'get'
object = dynamic_cast<T_Object*>(get_object(name).get());


See the full log of a failed build:
BuildFailedGlibmm.txt

This one could be originated by an outdated glib/gtk/glibmm/gtkmm library on my system; I have installed:
boost 1.61
gtkmm2.4 2.24.0
gtkmm3.0 3.22.
glibmm2.4 2.50.0
glib2.0 2.58.3
gtk+3 3.22.4
gtk+2 2.24.30

If one or more are outdated, then waf should test and warn about this, but I got no such warning...

Error when compiling using lv2 1.18.0

i was trying to compile guitarix v0.39.0 using the latest lv2 release, but the compile fails with this error:

Waf: Leaving directory `/home/build/YPKG/root/guitarix/build/guitarix-0.39.0/build'
Build failed
 -> task in 'gx_amp_gui' failed with exit status 1 (run with -v to display more information)
 -> task in 'gxautowah_gui' failed with exit status 1 (run with -v to display more information)
 -> task in 'gx_amp_stereo_gui' failed with exit status 1 (run with -v to display more information)

I think this might be due to to deprecated functions in LV2 or something along those lines. I see a lot of references to [-Wdeprecated-declarations] in the terminal output.

Bug: compile error (faust)

I am getting the following compile error on version 0.42.1:

$ ./waf build -v
Waf: Entering directory `/home/marcello/Documents/Softwares/guitarix-0.42.1/build'
[ 92/309] Compiling src/faust/compressor.dsp
11:36:05 runner system command -> /home/marcello/Documents/Softwares/guitarix-0.42.1/tools/dsp2cc -o /home/marcello/Documents/Softwares/guitarix-0.42.1/build/src/faust/compressor.cc --no-version-header --double --init-type=plugin-instance ../src/faust/compressor.dsp
11:36:05 runner ['/home/marcello/Documents/Softwares/guitarix-0.42.1/tools/dsp2cc', '-o', '/home/marcello/Documents/Softwares/guitarix-0.42.1/build/src/faust/compressor.cc', '--no-version-header', '--double', '--init-type=plugin-instance', '../src/faust/compressor.dsp']
Alarm clock
Traceback (most recent call last):
File "/home/marcello/Documents/Softwares/guitarix-0.42.1/tools/dsp2cc", line 2337, in
main()
File "/home/marcello/Documents/Softwares/guitarix-0.42.1/tools/dsp2cc", line 2315, in main
parser = Parser(faust.stdout,
File "/home/marcello/Documents/Softwares/guitarix-0.42.1/tools/dsp2cc", line 563, in init
self.faust_version = headvers.group(3)
AttributeError: 'NoneType' object has no attribute 'group'

Waf: Leaving directory `/home/marcello/Documents/Softwares/guitarix-0.42.1/build'
Build failed
-> task in '' failed with exit status 1:
{task 139708088173168: dsp compressor.dsp -> compressor.cc}

build fail due undefined section `.rt.text'

Hi,

While local build is fine I'm stuck with building 0.40.0 in open build service:

[  235s] /usr/lib64/gcc/x86_64-suse-linux/9/../../../../x86_64-suse-linux/bin/ld:../src/LV2/gx_cabinet.lv2/gx_cabinet.lds:1: undefined section `.rt.text' referenced in expression
[  235s] collect2: error: ld returned 1 exit status
[  235s]
[  237s] Waf: Leaving directory `/home/abuild/rpmbuild/BUILD/guitarix-0.40.0/build'
[  237s] Build failed
[  237s]  -> task in 'gx_cabinet' failed with exit status 1:
[  237s]        {task 140328447568576: cxxshlib gxcabinet.cpp.1.o,gx_convolver.cc.1.o,gx_resampler.cc.2.o,resampler.cc.2.o,resampler-table.cc.2.o -> gx_cabinet.so}
[  237s] ['/usr/bin/g++', '-shared', 'src/LV2/gx_cabinet.lv2/gxcabinet.cpp.1.o', 'src/LV2/DSP/gx_convolver.cc.1.o', 'src/LV2/DSP/gx_resampler.cc.2.o', 'src/zita-resampler-1.1.0/resampler.cc.2.o', 'src/zita-resampler-1.1.0/resampler-table.cc.2.o', '-o/home/abuild/rpmbuild/BUILD/guitarix-0.40.0/build/src/LV2/gx_cabinet.lv2/gx_cabinet.so', '-Wl,-Bstatic', '-Wl,-Bdynamic', '-lglibmm-2.4', '-lgobject-2.0', '-lglib-2.0', '-lsigc-2.0', '-lzita-convolver', '-Wl,../src/LV2/gx_cabinet.lv2/gx_cabinet.lds', '-Wl,-Map=src/LV2/gx_cabinet.lv2/gx_cabinet.map']

Maybe you have any ideas?
openSUSE TW, gcc 9.3.1

Option to turn High Pass filter off

I saw a discussion over at LinuxMusicians about Guitarix, and Hermann mentioned some high and low pass filters that are always on for the sake of smoother distorted sounds. As I play Bass, I really don't use much distortion but I do notice that my old tube amp has much deeper bottom end than almost all digital simulations, including Guitarix.

Would it be possible to have an option to turn the high pass filter off, so that I can get a tone closer to my old Bassman without having to turn up the Bass Boost? The Bass boost works, but has the "boomy" sound of an EQ, not the tight deepness I get from my old amp. If you know what I mean.

I could try doing my own "alpha" test of this if you would tell me where in the code the high pass filter is. I could compile with it commented out and let you know whether I experience any problems or if it sounds good or not.

Thanks
-Ted

Feature request: "reset" for tempo-based, oscillating effects

(Not a bug, but a feature request.)

I use guitarix almost exclusively inside Ardour, relying heavily on automation points to toggle and adjust the effects as the song plays. I'm having an issue when I need an effect that has its own internal tempo (chorus, flange, tremolo and vibe) matched to the tempo of the song.

But I'm NOT asking for tempo matching (although that would be nice). My issue is something else. Read on.

What's happening is there will be a part of the song where, say, tremolo is enabled, but the trem is not at the correct point in its sine/triangle curve. Even if I get the trem effect perfectly matched to the tempo of the song, the "enable" signal may catch the trem in the trough of its sine wave.

Even if the trem tempo were 100% perfectly matched to the tempo of the song, the user can start playback at any time. So it's impossible to know at which part of the sine wave the tremolo effect will be when it comes time for it to be enabled.

What I need is a "reset" switch on these types of effects so that I can "reset" the sine wave (or triangle or whatever) at the same time the effect is toggled on.

I hope I explained this well enough. Image attached. https://imgur.com/3MVIqrb Let me know if I need to try again.

Increase range of Power Amp Input and Output controls (version 0.42.0)

On version 0.42.0, it is possible to saturate the PowerAmp tubes, especially the singlended 6V6, with the Input Volume knob all the way down at -20dB. This is with the overall signal level well below clipping when the PowerAmp section is turned off (actually everything turned off but the main tube amp section).

A range of -30dB to +30dB may be more useful than the current -20dB to +20B. Probably want to also increase the Output gain range also, to match if you do this.

This allows setting the Pre Gain and Master Gain of the Tube section how one likes it and then tweaking the PowerAmp to get just the right tone.

This is also more consistent with the hardware PowerAmps I own that have a gain range of around 30dB.

Guitarix at ultra low latency - watchdog keeps killing jconv_mono

I've been experimenting with using Guitarix at 2.1 ms roundtrip latency on a raspberry pi. It does work with some core isolation tricks, even with fairly complex racks that include a speaker IR.

The problem I'm having is that when I try to confine Guitarix to a single core it works pretty well, until some blip in the cpu usage causes the watchdog to declare an overload on jconv_mono. For instance, this happens every time I try to minimize the Guitarix Window.

Is there some way to reduce the sensitivity of the watchdog? If not, maybe you could point me to the section of code that controls the watchdog and I can try some hacking on it.

phaser_mono.dsp should pass 1 instead of 2 for depth

Because phaser_mono.dsp is passing '2' for depth to the underlying phaser implementation, it is currently implementing vibrato mode (allpass signal chain only). For phaser mode (equal blend of direct and allpass), it should pass '1' (or pass 'depth' instead of 'mdepth').

-fpermissive required to build guitarix

with the latest source I have to do the following to get guitarix to build:

CPPFLAGS=-fpermissive ./waf distclean configure

otherwise I get the following error:

../src/headers/gx_system.h: In instantiation of ‘bool gx_system::atomic_compare_and_exchange(T**, T*, T*) [with T = _jack_session_event]’:
../src/gx_head/engine/gx_jack.cpp:1110:79:   required from here
/usr/include/glib-2.0/glib/gatomic.h:206:45: error: invalid conversion from ‘volatile void*’ to ‘void*’ [-fpermissive]
  206 |     __atomic_compare_exchange_n ((atomic), &gapcae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
      |                                             ^~~~~~~~~~~~~
      |                                             |
      |                                             volatile void*
../src/headers/gx_system.h:135:12: note: in expansion of macro ‘g_atomic_pointer_compare_and_exchange’
  135 |     return g_atomic_pointer_compare_and_exchange(reinterpret_cast<void* volatile*>(p), static_cast<void*>(oldv), newv);
      |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

[Feature Request] Support a bypass button in Guitarix LV2 Plugins

If the Guitarix LV2 plugins were to be switchable on/off in a DAW using generic MIDI learn, they'd need to support a bypass toggle button.

Would it be possible to add a bypass button to the various Gx* plugins?

This should make it possible to control the sound via MIDI foot controllers like the Behringer FCB1010, or even via a regular MIDI controller (still better than mouse clicks).

It'll make it a lot easier to use Guitarix in a live setting. 🤘

Guitarix segfault when moving a control that is outputting midi feedback

So I've got the Issue #8 commit compiling and running on my RPi. To test the midi feedback I assign a continuous controller to one of the knobs. I've tried Drive and Main Volume, and they both act the same.

After moving the control with the mouse and seeing the CC output on a midi monitor, the control freezes, the midi monitor gets flooded with repeating output at the last CC value, and then Guitarix segfaults.

Here's the full backtrace from gdb:

Reading symbols from guitarix...
(gdb) run
Starting program: /usr/bin/guitarix 
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/usr/lib/libthread_db.so.1".
[New Thread 0x71c23270 (LWP 9031)]
[New Thread 0x710f2270 (LWP 9032)]
[New Thread 0x708f1270 (LWP 9033)]
mlock 1267032 bytes
[New Thread 0x6b9c8270 (LWP 9034)]
[New Thread 0x6b815270 (LWP 9035)]
[New Thread 0x6b782270 (LWP 9036)]
[New Thread 0x665ff270 (LWP 9037)]
[New Thread 0x66785270 (LWP 9038)]
[New Thread 0x65dfe270 (LWP 9039)]
[New Thread 0x65aff270 (LWP 9040)]
[New Thread 0x650ff270 (LWP 9041)]

Thread 1 "guitarix" received signal SIGSEGV, Segmentation fault.
0x76cff344 in g_slice_alloc () from /usr/lib/libglib-2.0.so.0
(gdb) bt -full
#0  0x76cff344 in g_slice_alloc () at /usr/lib/libglib-2.0.so.0
#1  0x76cd94d4 in g_list_prepend () at /usr/lib/libglib-2.0.so.0
#2  0x7661f08c in  () at /usr/lib/libgtk-3.so.0
(gdb) 

That doesn't look too helpful, so I tried the trick where I run an instance with the -N switch, and one with the -G switch. This time it was the -N instance that was segfaulting. Here's its backtrace:

(gdb) run
Starting program: /usr/bin/guitarix -N
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/usr/lib/libthread_db.so.1".
[New Thread 0x71c23270 (LWP 9143)]
[New Thread 0x7121a270 (LWP 9144)]
[New Thread 0x70a19270 (LWP 9145)]
mlock 1267032 bytes
[New Thread 0x6bd35270 (LWP 9146)]
[New Thread 0x6bb82270 (LWP 9147)]
[New Thread 0x66b73270 (LWP 9148)]
[New Thread 0x668ff270 (LWP 9149)]
[New Thread 0x66af0270 (LWP 9150)]
[New Thread 0x660fe270 (LWP 9151)]
Ctrl-C to quit
[New Thread 0x6607d270 (LWP 9152)]

Thread 1 "guitarix" received signal SIGSEGV, Segmentation fault.
0x005f0ec8 in sigc::slot_base::empty (this=0x10b1550)
    at /usr/include/sigc++-2.0/sigc++/functors/slot_base.h:329
329	    { return (!rep_ || !rep_->call_); }
(gdb) bt -full
#0  0x005f0ec8 in sigc::slot_base::empty() const (this=0x10b1550)
    at /usr/include/sigc++-2.0/sigc++/functors/slot_base.h:329
        slot = @0x10b1550: {<sigc::functor_base> = {<No data fields>}, rep_ = 0x3, blocked_ = 25}
        __for_range = <synthetic pointer>: <optimized out>
#1  sigc::internal::signal_emit1<void, float, sigc::nil>::emit(sigc::internal::signal_impl*, float const&) (_A_a1=@0xed64e0: 0.377952754, impl=0x10b1540) at /usr/include/sigc++-2.0/sigc++/signal.h:1039
        slot = @0x10b1550: {<sigc::functor_base> = {<No data fields>}, rep_ = 0x3, blocked_ = 25}
        __for_range = <synthetic pointer>: <optimized out>
#2  sigc::signal1<void, float, sigc::nil>::emit(float const&) const
    (this=<optimized out>, _A_a1=@0xed64e0: 0.377952754) at /usr/include/sigc++-2.0/sigc++/signal.h:2951
#3  sigc::signal1<void, float, sigc::nil>::operator()(float const&) const
    (_A_a1=@0xed64e0: 0.377952754, this=<optimized out>) at /usr/include/sigc++-2.0/sigc++/signal.h:2967
#4  gx_engine::ParameterV<float>::trigger_changed() (this=<optimized out>)
    at ../src/gx_head/engine/gx_paramtable.cpp:1276
#5  0x005f1860 in gx_engine::MidiController::trigger_changed() (this=0xf9ae58)
    at ../src/headers/gx_parameter.h:726
        i = {param = 0xcddc40, _lower = 0, _upper = 1, toggle = false, _toggle_behaviour = 0}
        ctr_list = 
            std::__cxx11::list = {[0] = {param = 0xcddc40, _lower = 0, _upper = 1, toggle = false, _toggle_behaviour = 0}}
        n = 12887632
        saved_values = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0 <repeats 317 times>}
#6  gx_engine::MidiControllerList::on_val_chg() (this=0x7ef93df0)
--Type <RET> for more, q to quit, c to continue without paging--c
    at ../src/gx_head/engine/gx_paramtable.cpp:585
        i = {param = 0xcddc40, _lower = 0, _upper = 1, toggle = false, _toggle_behaviour = 0}
        ctr_list = std::__cxx11::list = {[0] = {param = 0xcddc40, _lower = 0, _upper = 1, toggle = false, _toggle_behaviour = 0}}
        n = 12887632
        saved_values = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0 <repeats 317 times>}
#7  0x7598fff8 in Glib::DispatchNotifier::pipe_io_handler(Glib::IOCondition) () at /usr/lib/libglibmm-2.4.so.1
#8  0x759925a4 in Glib::IOSource::dispatch(sigc::slot_base*) () at /usr/lib/libglibmm-2.4.so.1
#9  0x759927f4 in Glib::Source::dispatch_vfunc(_GSource*, int (*)(void*), void*) () at /usr/lib/libglibmm-2.4.so.1
#10 0x76cdeb8c in g_main_context_dispatch () at /usr/lib/libglib-2.0.so.0
#11 0x00000000 in  ()
(gdb) 

Add more Volume plugins

I think if you added a few more Volume plugins, say Volume-1, Volume-2, Volume-3, etc., that would take care of the need for input and output gain knobs on every non-linear plugin. Since it's just a cut and paste of existing code, it's a lot less work than modifying all the distortion type plugins. It also avoids having to allow more than one instance of a plugin. You only need a few more, since most effects chains won't have too many distortion plugins and many of them have either an input or output gain knob now.

[Feature Request] Standalone version as LV2 plugin

Would it be possible to provide the standalone interface as an LV2 plugin?

I love Guitarix and find it better than its commercial counterparts but I find it very difficult to use it inside a DAW. The three ways I know of:

  1. Run the standalone app and route the signals to the DAW. Not convenient since the app presets are not tied to the project loaded inside the DAW and it can become really cumbersome for multiple guitar tracks.
  2. Use the LV2 plugins. I couldn't find any clear relationship between a preset made or downloaded from the standalone app to its LV2 plugins equivalent, making their reproduction inside a DAW a real hassle.
  3. Create an LV2 plugin from the standalone app using Carla. This is close to the experience I'm looking for except that in order to save multiple presets one needs to create as multiple plugins and mess with XML files. Not super user friendly and not officially supported.

So I wonder if it would be possible to provide an LV2 version of the standalone app, similar to what others do (e.g Guitar Rig, Bias, etc). I find that approach easier to work this, especially when switching between projects.

As a C++ dev myself I'd be happy to contribute but I never worked on audio related products so if this is something achievable by a newcomer like me, I welcome any pointer to know where to start.

failed to lock memory: Cannot allocate memory

I've already used guitarix in other distros (Debian, Artix) but now (on Archlinux) I'm having error trying to use it.
When I start the program (with jackd already runnig through QJackCtl as I always did and worked) it fails wit this error messages:

[16:17:43] system init *** mlockall failed: [16:17:43] system init

*** failed to lock memory: Cannot allocate memory
[16:17:43] system init *** failed to lock memory: Cannot allocate memory [16:17:44]

loaded state *** from file /home/fabio/.config/guitarix/gx_head_rc

[16:17:44] Jack init *** The jack sample rate is 48000/sec

[16:17:44] Jack init *** The jack buffer size is 1024/frames ...

[16:17:44] PitchTracker *** error creating realtime thread - tuner

not started

I've already added my user to the audio group and restarted but the error remains.

Add input and output volume (gain) controls to Power Amp plugin

I was experimenting with the Power Amp plugin and realized that I needed to use a volume plugin both before and after it to control the distortion level and the output level. I imagine this would also be useful for other plugins.

Is there a way to have more than a single instance of a plugin in the Rack?

It seems like putting the plugin into the rack from the pool removes it from the pool so you can only have one instance of each.

[Feature Request] fizz-remover

Most virtual amps, including Boss GT and Line6 pedal boards, have a fizz in the distortion. It's been described as "angry bees".

The Radtone Harmonic Converger was made and sold as a solution to the pedal board problem but a simple solution in the software world is to add a notch filter to tame the obnoxious frequency.

In the attached example I'm using the LSP Parametric EQ 16 with a notch filter at 5556 Hz, Q = 8.5 and Gain = -8.5 between the gx_head_fx outs and Jack's playback inputs and flip between the EQ being Off and On.

It would be neat to have this feature built in; either as a pedal or as a switch somewhere, since I bet some people like the fizz.

Guitarix-LSP-ParamEQ16.mp3.zip

JSON-RPC questions

I was trying out your python example in your new GIST, and I had some questions.

I wanted to see how the RPC interface handled moving plugins from the pool to the rack, but the GUI locks up when I tried that. I know it works when you use the -G switch, but something in the python demo was blocking that.

What is the syntax to read out just the list of plugins in the rack, plugins in the pool and how to move from one to the other?

Is there a general documentation of the RPC commands?

Seems like the RPC stuff is pretty similar to OSC, using a socket server and client protocol with text messages going back and forth. Is there a reason you chose RPC over OSC?

Clarification: What are metal head and metal amp?

First, what are these based on?
Second, is "metal head" just a "head" sim to be used with a convolver?
If so, does that mean "metal amp" has a built-in convolver or amp sim of some sort?

I'm having trouble getting a decent tone from these, but it might just be my misunderstanding of what they are supposed to be. Thanks for the clarification.

gxts9.lv2 modgui is currently empty / not showing correctly

So I'm testing Guitarix 0.42.1 on Aida DSP OS. What I've found are a lot of positive things, for example the multitrack looper is a killer and I'm having fun playing with it! At the same time one of the pedals I use very often such as the gxts9.lv2 has a missing/broken modgui graphics. I've tried the one available here

https://github.com/moddevices/mod-lv2-data.git
8288478857983609e6dd32c2351b72cb44b0a3af

but substituting the ttl of guitarix with the ones from there, when loaded the plugin makes the interface to crash. I've tried to merge them (ttls from guitarix and modgui from lv2-data) and it seems to work although it's displaying a wrong screenshot (but the thumbnail graphics seems ok).
I don't know if the reason is the guys from moddevices are not fast enough to cope with the guitarix release rate or whatever, it seems they're stuck with a very old version of guitarix in their system. I understand that for guitarix developers taking the burden of maintaining this interface is a pain. So it seems nobody is winning here.
I'll try to propose to them (moddevices) the following solution: render the graphics from the infos in the ttl. I mean for things like background color we can add a directive in the ttl. In this way plugins always look decent even if a true interface is not available. Any comment much appreciated!

-DGSEAL_ENABLE flag causes bug in splash screen and high CPU usage

I was trying to use the --cxxflags-release switch while building guitarix, and I noticed that when I do, the splash screen doesn't come up when I run the executable. Instead I see a mlock 1505172 bytes or similar, on the command line. With the same flags, but using the --cxxflags switch, I do get the splash screen and no command line messages. Also, the xruns and CPU usage are through the roof for even simple presets with the --cxxflags-release switch, but not with the -cxxflags switch.

The only difference I see between the two is that the --cxxflags switch sets a -NDEBUG flag, but the --cxxflags-release sets a -DGSEAL_ENABLE flag.

This is on a raspberry pi. I tested in both archlinuxarm and raspberian buster.

MIDI data range

Is there currently a way to set the midi input data range for MIDI CCs?
My cheap expression pedals data range is only 0-116. I can't max out knobs with it.

Thank you!

Guitarix still requires python 2.7 to build

You can't build Guitarix from git without having python 2.7

Python 2.7 has been deprecated for a while now.

libgxwmm/gxwmm/wscript require pygobject-2.0 and then call python2 explicitely.

Unknown ld options on Mac OS X

I have gotten further in my journey to compile Guitarix on OS X, taking detailed notes along the way of course.

One hurdle is that the version of ld on OS X does not support some of the options that exist throughout the codebase in various Makefiles, wscript files, tools/ampsim/DK/dk_templates.py and waftools/lv2.py. These are:

  • -b binary
  • -z relro
  • -z noexecstack
  • --exclude-libs ALL

I have tried removing these options, and I end up with different ld errors, like:

[1121/1606] Linking build/src/LV2/gx_amp.lv2/gx_amp_gui.so
21:47:47 runner ['g++', '-L/opt/X11/lib', '-lX11', '-lpthread', '-Qunused-arguments', '-L/opt/X11/lib', '-lX11', '-lpthread', '-fvisibility=hidden', '-dynamiclib', 'src/LV2/gx_amp.lv2/gxamp_ui.cpp.3.o', '-o/private/tmp/guitarix/trunk/build/src/LV2/gx_amp.lv2/gx_amp_gui.so', '-Lsrc/LV2/xputty', '-lxcairo', '-L/usr/local/Cellar/cairo/1.16.0_3/lib', '-lX11', '-lcairo', '-L/opt/X11/lib', '-lX11', '-lpthread', '-Qunused-arguments', '-L/opt/X11/lib', '-lX11', '-lpthread']
Undefined symbols for architecture x86_64:
  "__section$__DATA__guitarix_orange_png", referenced from:
      instantiate(LV2UI_Descriptor const*, char const*, char const*, void (*)(void*, unsigned int, unsigned int, unsigned int, void const*), void*, void**, LV2_Feature const* const*) in gxamp_ui.cpp.3.o
  "__section$__DATA__screw_png", referenced from:
      instantiate(LV2UI_Descriptor const*, char const*, char const*, void (*)(void*, unsigned int, unsigned int, unsigned int, void const*), void*, void**, LV2_Feature const* const*) in gxamp_ui.cpp.3.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

So my main question is whether those ld options are necessary. Am I breaking something by removing them?

And any clues for how to get past this latest error?

[Feature request] Mute when tuning

I find the tuner plugin super handy, but I haven't found a way to mute the output when tuning, which can be quite annoying.
Is that possible and I simply haven't figured out how to do it?
If not, would it be hard to implement?

Thanks!

NSM support

As one of the pillars of modular linuxaudio it's time for NSM (Non-Session-Manager) support in Guitarix.

NSM is now chosen by the main developer of JACK as session management API to use and jack-session is set to deprecated: https://media.ccc.de/v/sonoj2019-1902-jack-past-present-future#t=1873

There are about 30 applications supporting NSM at the moment.

A great feature of NSM is the fact that it stores all files of the different JACK applications in one session folder. This makes it extremely easy to share sessions between musicians and guitarists.

http://non.tuxfamily.org/wiki/Non%20Session%20Manager
non.tuxfamily.org/nsm/API.html

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.