Loopy Pro: Create music, your way.
What is Loopy Pro? — Loopy Pro is a powerful, flexible, and intuitive live looper, sampler, clip launcher and DAW for iPhone and iPad. At its core, it allows you to record and layer sounds in real-time to create complex musical arrangements. But it doesn’t stop there—Loopy Pro offers advanced tools to customize your workflow, build dynamic performance setups, and create a seamless connection between instruments, effects, and external gear.
Use it for live looping, sequencing, arranging, mixing, and much more. Whether you're a live performer, a producer, or just experimenting with sound, Loopy Pro helps you take control of your creative process.
Download on the App StoreLoopy Pro is your all-in-one musical toolkit. Try it for free today.
Mozaic script to emulate diatonic accordion or harmonica
Hi,
I am thinking about making a Mozaic script that emulates the rapid back and forth bellows action that alternates notes while playing a diatonic accordion often used in conjuror or Tex/Mex music.
A more familiar way to understand this is to think of a diatonic harmonica which plays one set of notes when you blow into it and another when you draw air through it.
I want to simulate the change in air direction with a momentary midi footswitch via cc#. In one position the notes held on a standard keyboard will sound. In the other position the alternate notes should sound.
My thoughts of how it should work are:
- Keyboard note will be held down during the whole process.
- Midi footswitch is depressed (ON)
a) In this position the midi on is normal from the keyboard.
b) If there was a previous alternate note sounding this would cause a midi off signal for it. - Midi footswitch is released (OFF).
a)Note off information of the held note is sent.
b) Note on information for the alternate note is sent
These actions are often used quickly and repeatedly as a series of repeated alternating notes on the order of 16th or 32nd notes.
I think just note on and note off might work to sound correct however some envelope shaping may be needed if it does not sound or feel correct.
I have included a chart (made by ChatGPT) which shows the alternate notes on a typical 3 row diatonic accordion. Eg. A/B indicates A is sounded in one bellows direction and B in the other.
This chart is more complicated than necessary but shows real world application.
Proof of concept would involve just one row.
Note: the highlighted notes are notes that have extra alternate notes in different rows. These extra notes can be ignored. They are only showed for completeness.
Any thoughts on this will be greatly appreciated.
Thanks,
Bruce
Comments
I see the pattern I did not see earlier. Each row is based on a major scale. The alternate note is ALWAYS the next higher note in that scale. It may be a half step or a whole step but is always the next note in the SCALE.
It is similar to a transposition event somehow.
Mozaic is driven by events… so you need to have a SEMAPHORE (on/off) variable controlled
by a bi-polar input (foot switch, screen pad, etc).
Then you need a way to input the 30 note buttons. For each button send “Note On” from the correct
SEMAPHORE of “push/pulls”, “up/down”, etc.
The mismatch of Mozaic for this idea is that the MIDI input needs to be on the screen or some custom
set of MIDI controls. On the screen you are limited to 5 screen displays that @brambos has given us.
Apps that allow you to create on screen midi controls are an option for splitting the implementation across
two apps… for me I would want to host the whole set up in AUM so AUv3 apps are a plus for the screen-based
MIDI.
Now, only someone well versed in the actual diatonic accordion and the difference in the physical vs virtual
interfaces might master this rig quickly and they would probably prefer a MIDI conversion app like Guitar MIDI
or a midified accordion.
Nail down the design choices for INPUT and implementing a Mozaic filter for the note shifting will be pretty easy.
@mcd, I don't think it's that complicated given that the alternate notes are always one scale tone above the previous note.
I think all one needs to do is listen for the CC message, then play a note on scale degree above the last note played when it's on. Utilizing Mozaic's scale quantization, this should be easy, unless I've misunderstood.
That is ... if this is meant to process midi passing through it. If replicating an accordions note layout to play from Mozaic itself, then sure, it'd be complicated.
Thanks for your input guys. This is meant only as a midi converter. The event to implement it is a cc# going on/off.
I will be using a midi piano accordion playing an accordion app in AUM.
When I was using an iPhone with limited resources and wanted to use some FX apps in AUM I used my midi accordion to play accordion app sounds processed by apps in AUM. Though the apps were not as good sounding as the acoustic accordion it did not matter because the FX changed the character greatly anyway.
Does this midi input play all 12 notes of the scale or does it only send the G-B-D-F#-A-C-E-G-B-D values as the diatonic
version does for PUSH events and also the same notes for PULL events that the script then upshifts to A-C-E-G-B-D-F#-A-C-E.
That would handle the G Row events but Rows C and F need consideration and the Mozaic script needs to know which ROW the
current note is a member of… many notes are to be considered in more than one row so the CC for upshift may note help know which intent ROW conversion is needed.
Again note conversions are easy but that 30 buttons in 3 rows is ambiguous without knowing the context of the BUTTON’s ROW
so another piece of data input is needed to perform the correct conversion. One solution I considered it to have 3 scripts with one for each ROW conversion as shown in your table. One script should get any G ROW events, the 2nd gets C ROW events and
the 3rd gets F ROW events. This type of MIDI routing is supported in AUM but NOT in most DAW’s.
If we get thes details sorted out the script(s) will be pretty easy for many here to help guide you to writing a solution that meets your intentions using the midi piano accordion you have. It would be good for you to write the script because you have the required input controller to test as you go.
FYI: @hes DM’ed me to advise that “semaphore” is NOT the correct term for a variable used in the context of PUSH vs PULL.
It’s just a boolean (On/OFF) variable. I’m wondering if 6 states could be controlled via a MIDI expression pedal:
G PUSH
G PULL
C PUSH
C PULL
F PUSH
F PULL
By subsiding the 0-127 CC values into 6 regions (0-20, 21-40, 41-60). Probably very tricky to master on a per note basis for playing scales but useful for multi-note chord plating like playing 2-4 notes across a harmonica…. so the accordion breathes
G C G F for three notes across chords but changes with the CC pedal positions.
>
Thanks for your input. The midi input source is a piano style keyboard, chromatic, polyphonic and contains a few octaves. The idea of raising the alternate note to the next scale steps would work for most of the chart with only a few exceptions.
In the contex of the rapid effect I am trying to implement I think that these imperfections (note names may) not matter. I would anticipate setting it up as the G row basically ignoring changes from other rows that do not fit.
I would like to try it.
Thanks,
Bruce
Ok. It looks like you want to shift notes G-B-D-F#-A-C-E-G-B-D up the scale when some external controller is ON.
For a typical midi keyboard the external controller could be a pedal (sustain or expression for example) or the mod wheel or pitch bend. Some keyboards add pads the could be used.
This would be a nice programming exercise in Mozaic. The events you would need to detect and modify are:
Notes (on and off)
CC’s for the chosen external controller input
Would you like to share your work in progress and get coaching/advice or tips? There is a massive Mozaic thread where users get such advice from the programmers and they are very good at the Socratic method. Such coaching can also be done via DM’s.
Yes, I will be doing this. Unfortunately I cannot do it right now. I have upcoming gigs this week and I am a snowbird returning very soon to the North. I will be back though. Thank you all so much.
You don't necessarily have to use Mozaic's built-in scales if you don't mind some extra coding to make custom ones to handle the exception you noted earlier. There is custom scale handling in a number of scripts on PatchStorage.com. Simple Scaler is one, but that one is also loaded with quite a bit of other functionality, so you'd have to dig a bit to find the relevant bits.
[edit] thinking about that some more, a built-in scale with just some if-then logic to handle any exceptions is probably much simpler.
A possible solution that wouldn't require any coding would be to use midi mapping to route input direct to synths when the CC isn't engaged and through Simple Scaler when the CC is engaged.
I just thought of something you're going to need to pay close attention to.
If you change the transposition of any notes while they're playing, you need to keep track so that you don't transpose the note-off away from it's original value. For instance, if you play note C ( Note ON) and haven't released it, but then engage the note shift, you have to be sure not to transpose the Note OFF to another note.
An important note for sure 😊
This gives me an idea also. Perhaps the first press of the footswitch could send the note off even though the note is held still. Then the new transposed note on would be sent when you release the switch. The transposed note would have a note off sent when you press the footswitch again, restarting the cycle.🤔