BIAB has basically four engines for how the riffs you hear for each instrument are generated. There is an engine for traditional MIDI styles, a separate engine for super-MIDI styles, an engine for RealDrums, and for RealTracks.

MIDI Styles
MIDI styles are defined with various riffs for five tracks (traditionally defined as Drums, Bass, Piano, Guitar, and Strings; however, any instrument can appear on any track except for the drums, which must follow the channel 10 percussion standard for MIDI - you can have different drum kits, but there are no pitches associated with the MIDI notes, merely various percussion hits).

Very few styles have riffs up to their full capability; however, you can define up to 30 8-beat riffs, 30 4-beat riffs, 30 2-beat riffs, and 30 1-beat riffs for every "A" substyles and again the same for every "B" substyles (drums are a little different, but you get the idea).

Each of those riffs can be weights as to how often they play (1-8, with 9 being a special weighting that serves as a filter (or mask) for other requirements - such as only play on bar 3 of 4, or 7 of 8, of right before a fill, etc. The default is a weight of 5, so if all the riffs are set to 5, then they are played for the most part evenly distributed across the song.

What the engine does is looks ahead and see how long it is before the next chord. If there is at least 8 beats to the next chord, then it's going to pick a riff from the up-to-30 8-beat patterns. If there are none defined, it will drop down to the 4-beat patterns, etc. If it only need a 2-beat pattern, it will select from the available 2-beat patterns. If there are only 8-beat patterns defined, and you need a 4-beat pattern, it will use the first 4-beats of the 8-beat pattern in that case.

So you can see that mathematically, there can literally be thousands and thousands of possibilities for each chord. Just for 8-beat patterns, with 30 riffs among 5 instruments, you can potentially have 142506 possibilities. Likewise for the 4-beat patterns, etc.

Granted, many of the riffs among the 30 may very well be very similar with just a few note differences, so there will only be minor differences (obviously, if you are playing a style of music that calls for only hitting notes on the beat, then yes, you can change notes, but there will not be much rhythmic variance and the only differences between the riffs are the actual notes hit).

But, as you can see, within a single MIDI style, there are many, many possible variations.

It used to be that you could only have one MIDI style per song. Then they added the ability to changes styles in the middle of a song, so that effectively doubled the possibilities. Then later PGMusic added the capability to mix and match instrument definitions from other MIDI styles, which increased the options even more; however, the rules for how the engine selected which riffs to play remained constant across the styles.

RealDrums

RealDrums are audio files that are merely sliced and diced with the RealDrums engine. I believe that the number of variations you get is really dependent upon how long the recorded RealDrum file is. RealDrums also contain variations (such as brushes vs sticks, hihat vs ride cymbal, etc.)

You can even create your own RealDrums, which gives some insight into how they work. You have to conform to one of several templates when creating RealDrums:


  • 1. 32_bars_of_drumming.txt
  • 2. 32_bars_of_drumming_with_shots.txt
  • 3. 32_bars_of_drumming_with_shots_two_endings.txt
  • 4. 64_bars_of_drumming.txt
  • 5. 64_bars_of_drumming_with_shots.txt
  • 6. 64_bars_of_drumming_with_shots_two_endings.txt


And the instructions go on to define what needs to be played in the bars within that template (for example, count-in, postfills, fills, normal playing, etc.)

RealTracks

RealTracks, like RealDrums, are recorded audio, You cannot use RealTracks to play individual notes (unless you go into a DAW and slice and dice them yourself, but then you are just creating a sample set which won't necessarily sound any better than any other sample set, but I digress). The RealTracks follow a chord progression (and you can learn more about how this works by reading up on UserTracks, which work similarly). The RealTracks follow a chord progression template and the more chords you play, the less the RealTracks engine has to pitch shift the audio. The variations you get really depend upon the length of the resulting WAV file, from which the various riffs will be extracted to create the sound you get. There's not a lot of information about how the RealTracks (or UserTracks) engine decides which riffs to play, but generally, the more recorded material you have, the more riffs you have to choose from.

But, unlike MIDI, what you get is going to be based on the chord where the riff was played. With MIDI styles, it will create the chord from the notes of the chord using the riff defined in the style, so the MIDI styles are not chord dependent at all - all supported chords can be created from a MIDI style.

With RealTracks, however, (as I understand it) if your song has a C7sus chord in it, then the engine is going to look for a C7sus in the RealTracks file. If there is only one, that's the one it's going to use every time. If there are 10, then there are 10 to choose from. If there is no C7sus chord in the RT, then it's going to look for a sus7 chord close to the C (maybe a Bsus7 or C#sus7 or Bbsus7 or Dsus7) and use that as a pitch shifted chord. However, if it finds the chord you want, it's not going to look for other chord pitches to use - if you only have one, that's the one it's going to use. If it doesn't find any sus7 chords, then it's going to look for a sus chord and use it instead, so it will step down to a point. Sometimes you actually get nothing.

So, as long as your RealTrack is made up of playing many, many different chords, you'll have a lot to choose from, but a RealTrack can't create a chord that isn't there (unlike the MIDI style). Also, you need to have recorded riffs of varying lengths, so it knows whether to use a 1-beat, 2-beat, 4-beat, 8-beat, etc riff. Otherwise, if all you did was record long 8-beat riffs, if it has to chop the audio into 1- or 2-beat riffs, it's going to sound pretty choppy when you play it back.

More is better. That is why for UserTracks, you can actually create multiple files from which to choose from, to give it a greater flexibility to choose riffs for the chords you enter.

Super-MIDI Styles
I don't have a lot of information about how these are created and selected and PGMusic hasn't published it, but as I understand it, I suspect that the Super-MIDI tracks engine works kind of like a hybrid between the MIDI engine and the RealTracks engine.

Okay, I suspect that's more than you cared to know, but hopefully it made sense and helps.

If I have stated something in error, I hope PGMusic (or someone more knowledgeable) will offer correction, but that's how I understand it at this point.


John

Laptop-HP Omen I7 Win11Pro 32GB 2x2TB, 1x4TB SSD
Desktop-ASUS-I7 Win10Pro 32GB 2x1.5TB, 2x2TB, 1x4TB SATA

BB2024/UMC404HD/Casios/Cakewalk/Reaper/Studio One/MixBus/Notion/Finale/Dorico/Noteworthy/NI/Halion/IK

http://www.sus4chord.com