Output lowest note of a chord or root note of an inversion to accompany chord play.
The detection starts when there are no held notes and a NoteOn is received. If enough notes for detection arrived, a bass note is determined. This is either the lowest
note or in case of a chord inversion the root of the chord. Octave offset and midi
channel for the bass note can be specified.
ββββββββββββββ
β Releasing any note or reaching the timeout will cancel bass note output !
β The bass note is held as long as any notes are active notes – this allows to slide
β or modify the main chord while sustaining the bass note.
β
β The scripts ony output the bass note to simplify routing, no other midi is forwarded.
β Due to analysis of the incoming notes, the script’s bass note response is delayed
β at least 1ms after the triggering input notes arrived.
ββββββββββββββ
βββββ PADS β
The top-left pads show the incomming notes, their sequence number and timing
in respect to the first note.
The bottom-righ pad shows the outgoing bass note and its timing. The color of the
bass output pad indicates the type of trigger:
– lighblue: The two-note timeout triggered the bass
– darkblue: Three or more notes triggered the bass
– purple: Inverted chord with three or more notes triggered the bass
The timing displayed on the pads allow to fine tune the timeouts and wait times.
βββββ KNOBS β
TIMEOUT
Specify a detection timeout between 20 and 150 ms or switch off timeout. If off, a
bass note will be output when 2 or 3 notes are held down, regardless of timing.
2NOTE
If 2Note is set to OFF, at least 3 notes need to be held down. The knob specifies an
additional wait time after two notes are held. Either the bass will be triggered based
on the 2 notes after the wait time or it will be triggered right after more notes arrived.
INVERSION
Toggles the inverted chord detection. If OFF, always the lowest note will be output.
HELP/Out
Toggles to description/output config view.
BASS CH
Specified the bass notes midi output channel. This knob is visible on the HELP page.
SUB OCT
Sets the octave offset of the bass output. This knob is visible on the HELP page.
VEL
Sets the bass velocity scaling. This knob is visible on the HELP page.
βββββ SETUP β
After setting up the midi connection between your midi source and the chord instrument,
add an additional connection from the midi source to this script and setup your bass
instrument to read midi output of the Smart Chord Bass script.
Update v1.1
– Added output velocity scaling
– Added video to the description
Mosaic Draft
Hi -Ki,
I greatly appreciate your Smart Chord Bass Mozaic script.
I have been trying to learn Mozaic in order to write a similar but much simpler script.
I have been studying your script for clues of how to write such a script but I am not fluent yet and understand very little.
I would appreciate any guidance you may provide.
I am trying to remap the midi output of chord buttons on an electric accordion.
The accordion chord buttons are on a separate midi channel from other outputs of the accordion. Each one is unique and sends either a 3 or 4 note chord. These notes span only a little more than an octave. There are (. ) chord buttons.
I would like to via the script have control of the midi output by detecting which chord buttons are pushed. For example if the chord button for C maj is pushed instead of outputting C-E-G perhaps. I would program only C-G to sound.
I want the output to be only 2 notes instead of the original 3 or 4 notes. Also the new notes will not necessarily be from the original notes.
By playing these buttons into your script I see that the notes are activated almost simultaneously. 0 ms or a very low number.
The possibility of pressing several buttons at once is a further complication.
I realize you may have no interest in this area but I thought I would ask.
Thanks,
LooseBruce
Update v1.2
– Fixed “state saving”
Thanks go to AB forum user @ccs2 for reporting this bug.
Great patch. I just got Mozaic to solve the problem of how to trigger a SWAM instruments “horn section” with a chord (triad) played on a midi keyboard. Want to capture the 3 notes then send the lowest note to Trombone, middle to Sax, high to trumpet. Very similar to your excellent script.
Hi David, have a look at my Multi-Divisi Mozaic script here on patchstoragre, which was written with that purpose in mind.
Works well. Very cool. Thanks for that!
Iβm wondering if it could be possible to add a parameter: only take into account the notes below a certain note (for instance c4 – 60). Basically it would more or else allow to avoid to take into account the right hand for the selection of the bass note.