Addictive Drums

How can I setup Addictive Drums 2 to play different beats and at different tempos. EG: When I call up a rackspace with includes Addictive Drums, I want to have it play a specific beat and when I click on a button-widget or send a MIDI message - I want AD to play a different beat or change tempo or start/stop.

I tried setting up a button widget when I press a mod button on my controller, but all that I can make AD do is to mute the sound. This is OK as it keeps repeating the beat pattern but I want it to start from the beginning of the pattern and/or stop/start entirely.

Can I use variations for this or do I need a separate rackspace for each beat pattern?

As far as controlling the plugin goes - it is up to the plugin to provide automation they want and GP can fully use any exposed functionality.

There doesn’t seem to be a parameter for start/stop in AD, but it does have “Sync with host” option in which case you can use the GP’s global Play/Stop button (MIDI controllable) to start stop AD.

Variations work on parameters only so you have two options for different beats. One is to duplicate a rackspace and load a different beat. The global playhead / tempo can keep playing which will allow you to create interesting fills/breaks etc…

Another option is to duplicate the plugin itself within the rackspace and then have only one enabled and other BYPASSED. You can use GP widgets to bypass/enable separate copies and you can use variations for this and the correct instance of the plugin will be selected.

Finally … if this is something that you want to use as backing/replacement for a drummer - I suggest you create a new GP instance with your drum patterns separated into rackspaces and then you can control it separately, have it play or stop globally, switch patterns automatically from your main GP etc…

I’m trying to understand why you don’t just bounce the various AD2 MIDI clips to audio (using any DAW with VST support) and then just trigger the appropriate audio file.

Is there something within the clips that you alter while playing?

1 Like

That’s a great idea for the most part. However, when I am playing a song, I need to trigger the Intro, then the chorus, then the bridge, and then the chorus and finally the ending. I suppose I could try that with audio files. Is there any way I could use variations with this technique? Can I loop audio files in GigPerformer?

Yes. If you have some time - I’d suggest that you quickly go through the user manual. There’s a nice, searchable online version as well: https://gigperformer.com/docs/userguide/index.html

How can I create a widget (“start stop button”) to sync with the “Sync with\ host button”. Obviously I want to control it with a MID CC or NPRN etc.?

Unfortunately Addictive Drums does not expose the necessary parameter.
A workaround is scripting


Create a widget (this can be Midi learned from your cotroller) and give it the OSC/GPScript Naem ST_DRUMS
Then use this script:

//$<AutoDeclare>
// DO NOT EDIT THIS SECTION MANUALLY
Var
   ST_DRUMS : Widget
//$</AutoDeclare>


// Called when a widget value has changed
On WidgetValueChanged(newValue : double) from ST_DRUMS
 if newValue == 1.0 then
    EnablePlayhead(true)
 else
    EnablePlayhead(false)
 end
End

In Addictive Drums activate “Sync” and when you press the widget the global playhead of Gig Performer is started and so is Addictive Drums.
When you press the widget again it is stopped.

BUT: There is also a way without scripting.


In the global MIDI options you can learn a MIDI Message to activate/stop the Global Play button.

1 Like

That’s exactly what I want to do. Thanks so much Paul :slight_smile:

This can be simplified to

On WidgetValueChanged(newValue : double) from ST_DRUMS
  EnablePlayhead(newValue == 1.0)
End

:wink:

4 Likes

I always forget this kind of shortcuts :+1:

This was taught to me in my undergrad days, not as a shortcut but rather as a clearer way to express intent.

I’m confused as to why this works.
Since it does, the GP Script Manual isn’t entirely reflecting which parameters are acceptable:

756

This is a comparison and returns true or false

1 Like

Yes it is. The manual is saying that, for that function, a value whose type is Boolean is required.

An expression that compares two values for equality is a Boolean type

I see.
It wasn’t clear from the manual that ‘true’ and false’ weren’t the only keywords acceptable for a GP boolean expression.

I took this literally, as in the only acceptable values were ‘true’ and ‘false’. I didn’t realize that it was extending to comparative expressions.

Yes, but you’re confusing constants with values. While a constant is a value, a value does not have to be a constant.

The parameter in a function represents a value of the specified type.

For example, if you have an integer type, then the constants are 0, 1, 2, 3, 4, … etc.

But expressions such as

 1 + 2   
 3 + 5 * 5
 3 * (5 - 8)

are integer values but they’re not constants.

Similarly, True and False are Boolean constants, but anything that evaluates to either True or False is a Boolean value and so can be passed into a function that’s expecting a Boolean value.

Thanks for the explanation.