Proposal: Beat Designer on Group Track

For a person like myself, Beat Designer is superior to the drum editor in at least early the early phase of a project. The workflow I have in mind:

(1) Write a song. Voice, guitar or keys, maybe some bass. No drums in mind, because that’s not my strong suit.
(2) Using rudimentary or neutral drums (almost like a click track), lay down what I have.
(3) Design a real drum part to enhance what I have. Beat Designer is ideal for this.

However, I may wish to pick and choose drum sounds from multiple sources, such as:
(1) Groove Agent sampled kits (Pop Rock Toolkit, Beat Agent, AM Signature Drums)
(2) Acoustic Agent (part of Groove Agent, it appears)
(3) B Box
(4) HALion factory kits
(5) World Percussion

Now, you can’t drag and drop from Acoustic Agent to Beat Agent (nor should you be able to) because Acoustic Agent isn’t a sample library, sliced loop source. It’s a simulation of recording a drum kit in a studio, with many complex factors. (mic placement and spillage, HH spacing, and such.) Therefore, it needs to be on a separate track.

A similar issue appears with World Percussion. If there’s a way to find samples and drag them to Beat Agent, it can’t be easy. It’s incompatible with Acoustic Agent, as it should be. One must establish a separate track to draw on World Percussion sounds. A similar situation exists for HALion kits and sounds. Each sound requires its own track.

B Box is not part of Grove Agent, it’s an instrument set, like World Percussion or HALion factory sounds. Therefore, it needs its own track.

So we could be looking at 5 tracks, one for each item on the list above. Beat Designer is a MIDI insert. It is associated with one track. So you need 5 instances of Beat Designer. This is awkward. Transferring patterns from one instance of Beat Designer to another requires a cut/paste operation that can easily go wrong. Even without that issue, your kit is no longer consolidated in one place.

Suggested Feature

Suppose we were to have a group track containing the 5 tracks. Imagine BD+ (Beat Designer Plus), an enhanced version of beat designer. It’s still a MIDI insert, and it’s the same as beat designer when used on a single track. But it can also be inserted into a group track. (Granted, there are no MIDI inserts on group tracks, but that could be changed).

When inserted into a group track, BD+ adds the option of routing each lane to a track within the group, like this:
The cyan triangles activate a pop-up menu that lists the track names contained in the group. In this example, there are 5 destinations (Beat Agent track, Acoustic Agent track, World Percussion Track, B-Box track, and HALion factory track). The user chooses a destination for each lane. The MIDI events for that lane are then routed to the appropriate track.


With a fairly modest amount of software engineering, we now have a consolidated kit. The need to copy between instances of Beat Designer is eliminated. Additional tracks can be added to the group without much user agony. I believe these modifications would vastly improve Beat Designer at minimal cost. Lanes routed to tracks that have been deleted would route nowhere, but the pattern would remain in BD+, awaiting assignment.


… might be simplified by spawning instances of (existing) Beat Designer into tracks within the group. Already existing instances of Beat Designer would be preserved, but deactivated. BD+ would essentially copy the relevant lanes to the appropriate spawned instance of Beat Designer. Should users be able to edit the spawned BD instances? Perhaps not, because:
(a) It violates the BD+ concept of centralized control over a consolidated kit.
(b) It would require transfer of the edits from BD to BD+, and that’s more engineering.

On the other hand, prohibiting users to modify the data in spawned BD instances would require making spawned BD read-only (except via BD+), and that could be more trouble to engineer than it’s worth. (It doesn’t strike me that way - just add a boolean instance property to BD, set true by default, but set false in the case of spawned BD. Add it as an optional parameter to the tail end of the constructor, or use a Set() method just after spawning. Such a property would only have to be read in the event a of direct user editing event, so should have minimal impact on performance.)

Following normal engineering practices (as I understand them) would mean changing the existing BD into an Abstract Base Class (AbstractBeatDesigner, say) that includes the new boolean property. Concrete BD and BD+ would be sub-classes. Avoid trouble using the existing BD class name for the Concrete BD subclass. A new write method (protected or friend access granted to BD+) for MIDI transfer might be required in the new concrete BD class. BD+ would require a publish/subscribe design pattern to communicate with spawned instances of BD. The subscription would be controlled by the group track; when new tracks are added or deleted, and when BD+ is instantiated. (Obviously, only a group track could call the BD+ constructor. This would be triggered by the user requesting a BD+ MIDI insert from the group track.)

It all seems so possible to me.

My only reluctance with this proposal is having to pay $50 for it in build 8.5.16.

Well Group Tracks are exclusively for audio, so there is no mechanism to route midi data using them.

Try putting Beat Designer on a MIDI Track (not Instrument). Then you can use its MIDI Sends to route the midi data from Beat Designer to multiple VSTi’s.

Thanks for your reply. I was not aware of the audio-only nature of group tracks. I followed up on your idea, using the transformer to transmit the MIDI track to various drum tracks. This lead to a problem. It essentially sends the same beat designer pattern to all tracks, and there appears to be no easy way to target a specific destination for a given lane of beat designer. Some work-arounds:

(1) Mute the tracks not in use. This appears to have no effect. Softsynths on those tracks play anyway.

(2) Mute individual drums in the softsynths not used. This works for Groove agent tracks, but not for HALion tracks, such as Bodhran -110 from World Percussion, unless you mute the entire softsynth. Bodhran produces some nice “bass drum” sounds that one may desire, but one doesn’t want to trigger it when looking for a tamborine, say.

(3) Insert Beast Designer on target tracks, using the mute function on individual lanes to repress unwanted MIDI note events on particular lanes. This simply does not work. The master Beat Designer (on the MIDI track) seems to bypass the slave Beat Designer (on the instrument track). If the slave BD has events, these will be triggered by the sequencer, along with events inherited from the master BD.

(4) [Not tried] I could try using the logic editor to transpose the output of the MIDI track to an unused octave on the instrument track, then use a drum map to reverse the process. Or I could do the transposition in the drum map, and simply call up the transposed events in (master) Beat Designer. This solution is at least as awkward as the original problem, and it might even fail with HALion target tracks. The drum names would probably be disconnected from reality in this scenario. (There seems to be no way to rename drums without creating a drum map for the master BD.) Even if I could make this work, it doesn’t seem conducive to hot-swapping drum sounds from alternate instrument tracks – that was the original objective.

(5) Perhaps I misunderstood your idea, and there’s a completely different approach that I didn’t think of.

Revised Proposal

Your approach would have worked if the instrument tracks were each assigned a distinct MIDI channel, and if that channel could be selected at the lane level by the master instance of Beat Designer. If I have MIDI Channel -> instrument track assignments:

10 - Beat Agent (Napoli Cano)
11 - Acoustic Agent (Connection Established)
12 - HALion (World Percussion) - Bodhran 110
13 - HALion (SR Alta Kit)
14 - B-Box

…then in the master instance of Beat Designer, I set the Bass Drum to channel 12, it would be ignored by all instruments except the Bodhran. If I want to try a Bass Drum from B-Box, I need only reset the Bass Drum of (master) Beat Designer to channel 14, then shop around within B-Box.

While this still leaves the problem of misleading drum names in (master) Beat Designer, it does address to main issue. So, the new proposal is:

Add MIDI channel selection to each lane of Beat Designer.

You might also explore Drum Maps. These can take an incoming midi note number and route it to a different note to get sent to the VSTi. Perhaps you could route notes you don’t want to hear to dummy notes that aren’t assigned to any sound in the VSTi.

The Drum Map editor is in serious need of improvement.

One problem with using drum maps would be finding a dummy note to route to, in the case of VSTis not treated as drums per se. For example, on Bodhran, it would have to be higher than C7. On Turkish percussion, if must be higher than G#7. These World Percussion VSTis (and some HALion Factory presets with drum sounds) lack drum maps. Even in presets that were designed to use drum maps, the unused notes vary widely. I suppose extreme high notes might be a good enough dumping ground.

I mentioned this kind of approach in alternative #4, which I indeed did not try because the thought of setting up all these drum maps was too foreboding. What happens when you decide you want to reactivate a sound that’s mapped to a dummy note? You must rewrite the drum map just to check out how it flows with your pattern. In addition, you must get rid of the sound you were using, which probably means rewriting that drum map as well. The idea of tinkering for hours to find a solution that I know (in advance) can’t put into practice remains unappealing.

I want to be able to explore possibilities easily. Awkward work-arounds are fine after you’ve figured out the specifics, but are impractical for experimentation. The inefficiency is highly disruptive. Imagine trying to do an A/B compare when you have to rewrite drum maps in the process. OK, you make duplicate tracks. Still, it’s a bigger mess than in the original problem.

The logic editor might solve the problem more easily, say by setting the velocity on unused notes to zero. It’s still pretty brutal. You’d have to go into the logic editor every time you wanted to try something new. This too is probably more brutal than the original problem.