Guitarix DrumSequencer

All your LV2 and LADSPA goodness and more.

Moderators: MattKingUSA, khz

gimmeapill
Established Member
Posts: 564
Joined: Thu Mar 12, 2015 8:41 am
Has thanked: 44 times
Been thanked: 8 times

Re: Guitarix DrumSequencer

Post by gimmeapill »

Ok, steps work fine now - thx!

Could you also share that /src/plugins/drumseq.dsp too?
I'd like to play with the individual generators in Faust, see if I can copy pasta to make some funny stuff :wink:
tramp
Established Member
Posts: 2348
Joined: Mon Jul 01, 2013 8:13 am
Has thanked: 9 times
Been thanked: 468 times

Re: Guitarix DrumSequencer

Post by tramp »

The reason why it isn't included is, that you can't rebuild gx_drumseq.cc from /src/plugins/drumseq.dsp.
I've edited the generated file to make it a sequencer. So including the faust file will break the build system.

But maybe I could made it into a separate project, say "FAUST Sequencer" with a automated build system, so that one could build a sequencer from any Faust synthesis file.
On the road again.
gimmeapill
Established Member
Posts: 564
Joined: Thu Mar 12, 2015 8:41 am
Has thanked: 44 times
Been thanked: 8 times

Re: Guitarix DrumSequencer

Post by gimmeapill »

Ah, ok. I wrongly assumed it was Faust generated. Not a big deal, don't let this go out of hand ;-)
tramp
Established Member
Posts: 2348
Joined: Mon Jul 01, 2013 8:13 am
Has thanked: 9 times
Been thanked: 468 times

Re: Guitarix DrumSequencer

Post by tramp »

I've added now the possibility to add sequences from the saved plugin presets to the existing sequence.
That will allow you to pattern songs from blocks quickly.
On the road again.
tramp
Established Member
Posts: 2348
Joined: Mon Jul 01, 2013 8:13 am
Has thanked: 9 times
Been thanked: 468 times

Re: Guitarix DrumSequencer

Post by tramp »

gimmeapill wrote:
Could you also share that /src/plugins/drumseq.dsp too?
I'd like to play with the individual generators in Faust, see if I can copy pasta to make some funny stuff :wink:
Okay, I've wrote a adapter class now, so that we could use the faust sources directly to build the sequencer plug.
Means, you'll find the drum sources now in the faust folder, could play with / edit them and rebuild all with your changes applied.
Just note that guitarix still use the bit outdated faust version 0.9.73, you can't use newer versions right now to work with guitarix faust sources.

Have fun, :)
hermann
On the road again.
tramp
Established Member
Posts: 2348
Joined: Mon Jul 01, 2013 8:13 am
Has thanked: 9 times
Been thanked: 468 times

Re: Guitarix DrumSequencer

Post by tramp »

I've just added 2 more tom's, here is a other brain-splashing drum sequence from the new sequencer.
https://vocaroo.com/i/s0BopzggyXV4
On the road again.
gimmeapill
Established Member
Posts: 564
Joined: Thu Mar 12, 2015 8:41 am
Has thanked: 44 times
Been thanked: 8 times

Re: Guitarix DrumSequencer

Post by gimmeapill »

Thanks Hermann,

I've just tested the new stuff quickly and that works - including the pattern chaining.
I've had so far a single crash while controlling the instruments volumes with midi CCs, but I couldn't reproduce it (the response to midi events seems to be overall a bit sluggish, this could be related).

Regarding the overall usefulness of the tool: after playing a bit more with it, I'm still not too sure how to integrate it in my workflow.
Don't get me wrong - I've been playing techno for cca 20y, so I do love classic sounds and step sequencing (especially with the tube emulations), but the synthesized drums feel a bit like an uncanny valley when I'm in the mood for playing metal guitar ;-)
So, as a glorified metronome, I'd still rather pop up a simple pattern in Renoise or Hydrogen, and use instead the Guitarix drums for standalone experiments.

BR,

LX
tramp
Established Member
Posts: 2348
Joined: Mon Jul 01, 2013 8:13 am
Has thanked: 9 times
Been thanked: 468 times

Re: Guitarix DrumSequencer

Post by tramp »

gimmeapill wrote:I've just tested the new stuff quickly and that works - including the pattern chaining.
Thanks for testing. :)
gimmeapill wrote:I've had so far a single crash while controlling the instruments volumes with midi CCs, but I couldn't reproduce it (the response to midi events seems to be overall a bit sluggish, this could be related).
I'll keep an eye on it, just I haven't a crash so far, . .
To the response of midi events, as well I ain't notice sluggish response. Just, midi cc is bound to a range from 0-127, so the values needs some interpolation to the range of the controller, this may lead to some kind of jumping in the UI controllers, specially when you move them fast. . But the values been smoothed out for the engine, so you shouldn't notice jumping UI controllers in the sound.
gimmeapill wrote:Regarding the overall usefulness of the tool: after playing a bit more with it, I'm still not too sure how to integrate it in my workflow.
Don't get me wrong - I've been playing techno for cca 20y, so I do love classic sounds and step sequencing (especially with the tube emulations), but the synthesized drums feel a bit like an uncanny valley when I'm in the mood for playing metal guitar ;-)
Yes, I understand what you mean.
gimmeapill wrote:So, as a glorified metronome, I'd still rather pop up a simple pattern in Renoise or Hydrogen, and use instead the Guitarix drums for standalone experiments.
Me to, just I ain't use renoise. :lol:

regards
hermann
On the road again.
tramp
Established Member
Posts: 2348
Joined: Mon Jul 01, 2013 8:13 am
Has thanked: 9 times
Been thanked: 468 times

Re: Guitarix DrumSequencer

Post by tramp »

gimmeapill wrote:the response to midi events seems to be overall a bit sluggish
Actual the midi response is set to 60ms, if you like to do some experiments with the time set, go to gx_paramtable.cpp line 494

Code: Select all

Glib::signal_timeout().connect(
	sigc::mem_fun(this, &MidiControllerList::check_midi_values), 60);
and change the timeout value. Maybe a setting of 20ms is more suitable.

EDIT://
Or even better, do a fresh checkout, I've just switch the the midi value check from the timeout thread to a dispatcher callback, (no timeout any more)
On the road again.
gimmeapill
Established Member
Posts: 564
Joined: Thu Mar 12, 2015 8:41 am
Has thanked: 44 times
Been thanked: 8 times

Re: Guitarix DrumSequencer

Post by gimmeapill »

Sorry for the late feedback, the back to school period was pretty busy ;-)

Ok, so finally some time to test: the lag visible when sending midi cc is indeed gone, the rotation is now perfectly smooth - that one can be ticked off the list.
However, it still segfaults from time to time when receiving midi data, yet I couldn't a reliable way to reproduce the issue.
One of my midi controllers, an akai midimix has a "send all" button which is quite useful for making software crash. But that doesn't seem to help here.
I'm opening two Guitarix instances - one for guitars and one for drums: only the drums receive midi and only that instance crashes, usually just after starting and receiving the first cc packets - if that can help.

Next, I found another issue with the pattern chaining: if you chain a pattern with itself, dang! instant death :D

+ one minor gripe regarding the volumes: +40db max value is too much, I'd put a sane default between 0 and 10db.
This can be changed in the midi mappings, but I still can't figure why anyone would want that much output.

& in the feature request department, some random thoughts:

- Controlling from midi what will play next. -> send midi cc (or better midi note) to schedule preset XX after the current one finishes playing.
That's useful for rehearsal scenarios, for the lucky owners of foot controllers for example. Proper transport controls wouldn't hurt also.

- Some ability to tweak the sounds while playing. I'm thinking here about TRX0X style controls (since this is about old school techno, right?). Mutes, flame rolls also come to mind...

- Adding / Removing instruments: Since Guitarix probably lacks the internal routing options for multitrack output, I was thinking of starting one instance per sound / instrument to have more flexible routing possibilities while keeping the same spirit.
Or maybe spliting the beast into severals modules (BD, SD, TOMs, etc...). That's the old school Buzz tracker user who's speaking now ;-)

- LV2 version: in it's current shape I think the Guitarix drum module would probably already appeal to a few folks outside of the Guitarix world, and I don't remember seeing any decent linux synthetized drums plugin in recent history.

- Live drumming / pattern programming from midi - mapping each step to a midi note or something like that, or the ability to trigger sounds from midi notes. This could also open the possibility to use an external sequencer.
tramp
Established Member
Posts: 2348
Joined: Mon Jul 01, 2013 8:13 am
Has thanked: 9 times
Been thanked: 468 times

Re: Guitarix DrumSequencer

Post by tramp »

gimmeapill wrote:Next, I found another issue with the pattern chaining: if you chain a pattern with itself, dang! instant death :D
Ups, well, a typo in a parameter name. :? Srry. fixed now. Let me know if you still able to crash it?
gimmeapill wrote:One of my midi controllers, an akai midimix has a "send all" button which is quite useful for making software crash. But that doesn't seem to help here.
I'm opening two Guitarix instances - one for guitars and one for drums: only the drums receive midi and only that instance crashes, usually just after starting and receiving the first cc packets - if that can help.
So, the question is, do guitarix only crash, when you connect a controller from the drum sequencer, or, are you able to crash guitarix with MIDI CC connected to any other controller? -> Is the Bug in the MIDI implementation or in the Drum Sequencer Module?

Thanks for your suggestions, will think about it when we've fixed the above bugs. :)
Most of them are easy to implement.

regards
hermann
On the road again.
tramp
Established Member
Posts: 2348
Joined: Mon Jul 01, 2013 8:13 am
Has thanked: 9 times
Been thanked: 468 times

Re: Guitarix DrumSequencer

Post by tramp »

gimmeapill wrote:Proper transport controls wouldn't hurt also.
Jack transport is implemented already, you could connect a toggle control to it by enter "24" in the controller number field, see "Help" in the midi learn widget.
On the road again.
gimmeapill
Established Member
Posts: 564
Joined: Thu Mar 12, 2015 8:41 am
Has thanked: 44 times
Been thanked: 8 times

Re: Guitarix DrumSequencer

Post by gimmeapill »

tramp wrote:
gimmeapill wrote:Proper transport controls wouldn't hurt also.
Jack transport is implemented already, you could connect a toggle control to it by enter "24" in the controller number field, see "Help" in the midi learn widget.
Hi Hermann,

Didn't have the chance to test yet but this gets interesting ;-)

Quick update:
- Pattern chaining seems to work ok now.
- I didn't manage to crash it again with midi messages: I did some attempts with one Gx instance, two instances, with drum sequencer and without. It seems better, yet that probably doesn't help you much to find the root cause..
- The GUI is a bit sluggish again. I wonder if that wouldn't be related to the latest Arch RT kernel, so I'll rollback to the latest stable and confirm back. It's hard to A/B test on a rolling platform ;-)

And as I cannot make a single post without being negative, here's a new issue (minor) spotted with the GUI: I was wondering why my 4 on the floor patterns were sounding so funky, and noticed that the beat markers are misplaced: they are on steps 4,8,12,16 etc... when they should be on 1,5,9,13, etc...

BR,

LX
gimmeapill
Established Member
Posts: 564
Joined: Thu Mar 12, 2015 8:41 am
Has thanked: 44 times
Been thanked: 8 times

Re: Guitarix DrumSequencer

Post by gimmeapill »

gimmeapill wrote:The GUI is a bit sluggish again. I wonder if that wouldn't be related to the latest Arch RT kernel, so I'll rollback to the latest stable and confirm back. It's hard to A/B test on a rolling platform ;-)
Update: That one was indeed related to the latest kernel 4.11-rt, rolling back to 4.9-rt and everything is butter smooth. no other crash or sluggishness encountered.
tramp wrote:Jack transport is implemented already, you could connect a toggle control to it by enter "24" in the controller number field, see "Help" in the midi learn widget.
Wanted to try out that one, but I have no toggle in either my akai midimix or korg nanopad2. The pads or buttons only send notes.
I don't want to remap them since I use them for other purposes, and converting on the fly with pure data or another tool seems like overkill.
Couldn't we just get support for midi notes Guitarix? I'd like to use my pads to change presets too...
tramp
Established Member
Posts: 2348
Joined: Mon Jul 01, 2013 8:13 am
Has thanked: 9 times
Been thanked: 468 times

Re: Guitarix DrumSequencer

Post by tramp »

gimmeapill wrote:Update: That one was indeed related to the latest kernel 4.11-rt, rolling back to 4.9-rt and everything is butter smooth. no other crash or sluggishness encountered.
That's good to hear.
gimmeapill wrote:Wanted to try out that one, but I have no toggle in either my akai midimix or korg nanopad2. The pads or buttons only send notes.
I don't want to remap them since I use them for other purposes, and converting on the fly with pure data or another tool seems like overkill.
Couldn't we just get support for midi notes Guitarix? I'd like to use my pads to change presets too...
Jack transport, means you could use qjackctl or your Sequencer or DAW as a master to switch guitarix effects on/off.

To Midi Note support, you know that I'm not eager to do that, as it has some dis-advances , but, it seems that you really want this.
Here is a small patch so that you could implement it on your local copy:

Go to trunk/src/gx_head/engine/gx_paramtable.cpp line 746:

Code: Select all

	} else if ((in_event.buffer[0] ) > 0xf0) {   // midi clock
insert before this line the following snippet:

Code: Select all

        } else if ((in_event.buffer[0] & 0xf0) == 0x90) {   // Note On
			set_ctr_val(in_event.buffer[1], 1);
			val_chg();
rebuild, and use your pad's. Now, to control a parameter in guitarix with Note ON events, you need to select "toggle parameter" and type "constant state toggle" in the Midi learn widget.

Before I could implement it really in guitarix, I need to create a logic to differ Note On events from CC events for the internal parameter table, and will made it selectable, so that people how want to use CC's to control guitarix while playing a synth with the Note events could deselect this feature. But in the mean time you could use it already, as I didn't know when I'll find the time to do it.
gimmeapill wrote:And as I cannot make a single post without being negative, here's a new issue (minor) spotted with the GUI: I was wondering why my 4 on the floor patterns were sounding so funky, and noticed that the beat markers are misplaced: they are on steps 4,8,12,16 etc... when they should be on 1,5,9,13, etc...
Ups, thanks, will fix it.
Hint's like this drives a project like guitarix forward. :D
On the road again.
Post Reply