The best way to play pads

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

2 Likes

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.

3 Likes

@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?

1 Like

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.

3 Likes

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.

1 Like

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.

1 Like

It’s useful to share the script here for other members, as well :slight_smile:

3 Likes

Yeah I agree, the script would be awesome. Appreciate the help!

1 Like
//$<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
2 Likes

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.

1 Like

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.

1 Like

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.

2 Likes

@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?