I using a MBP 2015. I want to play pads in our church services. These are generally key specific and loop and transition from one to another if you select them too. I see a lot of people using Sunday sounds, or Sunday keys, which is built on Mainstage. I dont want to go that route. What is the best solution to play “pads” in GP. Thanks for your help
Just use the plugins for pad sounds.
Juno 6 from Arturia has very good pads
Or gx-80 from cherry audio
Omnisphere
Hi bmack,
It just so happens I did a backstage episode recently where I talk about this very subject. You can find it on Youtube.
For clarification are you talking about what most CCM musicians refer to as pad drones? Or did you actually want to play the pads? What plugins do you currently use for your pads? Also were you trying to build out a template similar to the Sunday Keys one?
Please read this thread: Global Rackspace Example for CCM
In GP, I built my own Pad Drone generator for worship. I have a small AKAI LPK25 keyboard that sits on my Mac. If I hit a note, it starts playing in the key played. The Sustain button is the Stop button. The VST is Omnisphere.
Left level is for the level of the pad. (mapped to a controller)
Right level is for all of my live played VSTs. (mapped to a controller)
Display shows the current song key and the next song key. That way at the end of the current song, you can start the pad for the next song. Since this is all in Global Rackspace, changing songs never interferes with the playing pad. Works very well.
@EnjoyRC Very cool. I’ve been considering creating a “drone pad player” in my global rackspace also. I considered using the midi file player to send midi notes to my synth of choice. It sounds like you might have used some scripting to accomplish yours?
Yes, there’s a Global Script. Hit a note on the AKAI, the script plays all the roots and 5ths of the drone. Passes the velocity value too. The script will stop the drone when it receives a CC64. The script also keeps the song key displays up to date. You can see it all here setup.
Nice! Glad you showed yours since I’ll be working on building one soon in my global. Gives me an idea of how other people are implementing it.
Hey @mike86, if you need any help, lemme know. My Global Script is only sending “Note On” messages so they continue to play forever. Then when the script receives a CC64, it sends the Note Off messages.
It’s useful to share the script here for other members, as well
Yeah I agree, the script would be awesome. Appreciate the help!
//$<AutoDeclare>
// DO NOT EDIT THIS SECTION MANUALLY
Var
Global_MIDI : MidiInBlock
PadVST : PluginBlock
AKAI_APC : MidiInBlock
AKAI_LPK : MidiInBlock
THIS_SONGKEY : Widget
btnSTOP : Widget
NEXT_SONGKEY : Widget
EnableDone : Widget
NoteDisplay : Widget
//$</AutoDeclare>
MM : MidiMessage
NN : Integer
VV : Integer
NoteName : String
Function StartDrone (m : NoteMessage)
If GetWidgetValue(EnableDone) == 0.0 Then
AllNotesOff(Global_MIDI)
SetWidgetLabel(NoteDisplay, "")
Else
NN = GetNoteNumber(m)
VV = GetVelocity(m)
NoteName = "Playing: " + NoteNumberToNoteName(NN)
//Print("Processing note message = " + m)
AllNotesOff(Global_MIDI)
MM = MakeNoteMessage(NN, VV)
SendNow(Global_MIDI, MM)
MM = MakeNoteMessage(NN + 7, VV)
SendNow(Global_MIDI, MM)
MM = MakeNoteMessage(NN - 5, VV)
SendNow(Global_MIDI, MM)
SetWidgetLabel(NoteDisplay, NoteName)
End
End
Function StopDrone ()
AllNotesOff(Global_MIDI)
SetWidgetLabel(NoteDisplay, "")
End
On NoteOnEvent(m : NoteMessage) Matching [C2..C5] from AKAI_LPK
StartDrone(m)
End
On ControlChangeEvent(m : ControlChangeMessage) Matching 64 from AKAI_LPK
StopDrone()
End
On NoteOnEvent(m : NoteMessage) Matching [C2..C5] from AKAI_APC
StartDrone(m)
End
On ControlChangeEvent(m : ControlChangeMessage) Matching 64 from AKAI_APC
StopDrone()
End
// Called when a single widget value has changed
On WidgetValueChanged(newValue : double) from btnSTOP
If newValue == 1.0 Then
StopDrone()
End
End
// Called when a single widget value has changed
On WidgetValueChanged(newValue : double) from EnableDone
If newValue == 0.0 Then
StopDrone()
End
End
// Called when a single widget value has changed
On WidgetValueChanged(newValue : double) from THIS_SONGKEY
If InSetlistMode() Then
NEXT_SONGKEY.SetWidgetLabel("Next Song: " + GetSongKeySignature(GetCurrentSongIndex()+1))
Else
NEXT_SONGKEY.SetWidgetLabel("(Not setlist mode)")
End
End
You’ll see it either waits for the AKAI_LPK or the AKAI_APC. I alternate between 2 different controllers depending on the set. But, all keeps working no matter which one I connect.
If you’re looking for free pads that are good quality, try the Spitfire Labs Synth pads. In one of my gig files I have a global rackspace that uses that plug-in.
I’m looking at scripting to see if I can set the key based on the song in the set list in the future so it auto changes keys if the new song is in a new key.
Definitely possible!! Nice idea.
@ EnjoyRC,
I am just starting to use GP, could you show me where the script is entered in the Global Rackspace?
On a side note…is that a laptop or a monitor on the right side with a keyboard attached? Or a small keyboard hovering over the laptop? Great setup!
The StudioLogic SL88 has a magnetic laptop tray that attaches very nicely. Made for just the type of setup. MacBook Pro laptop, with an AKAI mini MIDI controller on top of it. Perfectly straddles the laptop keys.
@EnjoyRC
Under Auto Declare " Do not edit this section manually", how do I change those VAR’s to map my midi blocks for my setup. Sorry for all of the dumb questions, maybe there is a better forum discussion for me to access as a script beginner?