Audiobus: Use your music apps together.
What is Audiobus? — Audiobus is an award-winning music app for iPhone and iPad which lets you use your other music apps together. Chain effects on your favourite synth, run the output of apps or Audio Units into an app like GarageBand or Loopy, or select a different audio interface output for each app. Route MIDI between apps — drive a synth from a MIDI sequencer, or add an arpeggiator to your MIDI keyboard — or sync with your external MIDI gear. And control your entire setup from a MIDI controller.Download on the App Store
Audiobus is the app that makes the rest of your setup better.
@Jumpercollins I rename all scripts that i install and add icons as the first character. This allows to group them visually - my preset list is still quite long, but as i used icons with different colors, the navigation between 🈚️♓️🈵🈯️🈳 is easy. Some of these icons are sorted to the front before ‚a‘ and others the the end of the list after ‚z‘
I also could have used the icons 🟥🟧🟨🟩🟦🟪🟫⬛️⬜️ or 🔴🟠🟡🟢🔵🟣 🟤 ⚫️⚪️ to get more colors and groups
@_ki Consider me interested. I’m a sucker for a new Mozaic scripts. Lol. Excited every time a new midi effect/sequencer/filter/generator goes up on patchstorage.com I use a lot of them, sure some more that’s others, but I still use a lot of different scripts on a regular basis.
@Jumpercollins I found that importing a zip with several scripts automaticaly creates a subfolder for you.
Ok guys thanks for the tips @_ki great ideas there cheers. Just a plain old star will do me for favourites.
wow, thank you for all your work on this! wonderful!
I won't be able to test it just yet, but I'll let you know how it goes once I get a moment with it.
@McD , @LinearLineman or anyone knowing the answer
Can you help me out with the musical term for on-the-fly ‚changing type of inversion‘ ? That would help a lot in writing the documentation and finding a fitting name. The WIP title is Chord-Re-Inverser which really sounds odd and wrong.
Guys, I need little help. I faced a problem when some scripts don't save parameters in AUM. Primarily it's my beloved Probability Gate from default Mozaic scripts and a bunch of Marbles ones from Tom Simmert. The first one doesn't save knobs position at all, in Marbles, something is saved, something is not. Am I doing something wrong or some scripts just didn't get state saving?
P.S. @brambos I can't be grateful enough for this groundbreaking app and this supportive community for beautiful scripts. I sits in all my AUM templates now. Feels like having different eurorack tools in a suitcase.
@lazyass Thats probably a problem within the scripts - if not explicitly programmed (which is simple) the initialization will overwrite the stored variables. Also some devs don‘t think about positioning the knobs at the stored values on reload.
Both should be simple to adapt. My approach to such enhancements is to propose these features (as working script samples) to the authors so they can publish the new version themselves and decide if they want to modify something - and not to release a modified version of the script.
@_ki thanks for help, I will add request
I'd call it a "Chord Inverter" (Noun + Verb).
If you want you could qualify the Noun or Verb further with "Rhythmic" or "Auto-" or brand your magic as a "Ki-verter".
For trademark purposes "The _Ki Khord Ki-verter" would get excellent results with a Google search if you intend to add docs and videos to the script campaign. Oops... marketing says _KKK is a big no-no.
Just brainstorming and I cause problems.
Missed it bummer 🤯
Just wondering whether Mozaic could help me with my current MIDI problem
I have a Novation Launchcontrol XL with has 16 buttons which I use to toggle the mute/unmute state of my channels in AUM. I would like the LEDs in these buttons to light up when the channel is active to provide me better feedback when I perform.
In order to control these LEDs, the Launchcontrol requires some sysex feedback to tell the LED whether to be lit or unlit:
"System Exclusive messages can be used to set the LED values for any button or pot in any
template, regardless of which template is currently selected. This is done using the following
message: Hex version F0h 00h 20h 29h 02h 11h 78h Template Index Value F7h
Dec version 240 0 32 41 2 17 120 Template Index Value 247"
It seems that the MIDI CC which I send once I hit the button, needs to be "answered" by a SySex message immediately from the iPad, this "answer message" actually controls the LED. Then this control must be reversed when the the MIDI CC is toggled back.
Is this something Mozaic can assist me with?
Or, if anyone has any other ideas on how I can achieve this, I'd appreciate some guidance
@drewinnit I think this can be done. The script would need to read its midi from the Launchcontrol XL to also receive the mute messages and then send back the current state. I don‘t have a LaunchControl, so i can‘t test, but perhaps someone else has Mozaic and such a controller.
After looking at the manual, i see that there are several open questions:
The button mode and template number then define which of the sysex functions need to be used to toggle the lights of the buttons.
As GUI, the script could show the 16 pads reflecting the 16 launchpad buttons and also send the same midi mute messages (to AUM and LaunchControl) when pressed. In that way, one can either mute using the Mozaic plugin or the external controller and both would show the same info.
For testing purpose, it would be nice the have an AUM session that is already setup to read its mutes from the launchcontrol. No further instrument or Fx setup needed in that session, just several channels that react to you mute/unmute messages. You probably already have such a template
Hmm, just tried around with muting in AUM using notes 60+ and ‚toggle‘ as AUM mute control setting fro a Mozaic script. On session recall the mute buttons are initialized by AUM and the pads latch state is restored by the script - (So don‘t re-send the mutes on script reload). This works well, but if one presses one of the AUM mute buttons directly, the script pad state and AUMs state are no longer in sync. But i assume the same happens when you use an external controller to mute AUMs chnnels.
thanks for your quick assistance! your suggested solution sounds ideal
re: the open questions:
I'm currently at work so can't currently share an AUM project, but will do so ASAP
So the same button lit state has to be set for all three templates 1-3 if understand the manual correctly. Each template has its own button light state.
You are not controlling the mute of AUM, but instead the volume - i didn‘t yet try around with that. Why didn‘t you use the AUM mutes ? That would allow for different, manual adjustable fader values for each channel
Your controllers buttons ‚remember‘ their state, otherwise they wouldn‘t toggle between CC#3 value 0 or 127. BTW: this can lead to problems, as on session reload the script can have a different idea about the button states (as long as nothing was send from a controllers button) i don‘t know if it wouldn‘t be better to just use note cmds on the controller side and have the script remember the state - the leds would then also be initialized by the script. That way everything is stored in the hosts session.
Each button sends CC#3 on a different midi channel i suppose ? Or are there diffent CCs for each button ?
This whole setup does not seem to be a default setup for the Lauchpad XL controller, but a custom one. It would be a lot better, if a script works with the default settings of a controller. With your settings, other users not only have to setup AUM in the right way, but also all three user settings on the controller. I don‘t think that this is communicable, or would justify a general script.
My idea would be to
a) use what the controller buttons originally send in their default user 1-3 modes
b) also use what AUMs volume faders listen to per default (CC7 on a specific channel) or better use channel mutes with notes 60 on the 16 channels.
c) the lauchcontrol script would ‚bridge‘ between these two worlds and also send the button light states to the controller.
That would be lot more general and easier for others to use than to instruct them on everything and also on how the script has to be connected... If there are other controllers, the script could be extended to support them in the same way.
I didn‘t say that i‘m going to write a script for this problem, i am just thing out loud. I would be glad if someone else picks this up as i have at least 4 scripts to be finished in my backlog.
PS: Writing a custom Mozaic script for just your setup should be super easy - listen to launchcontrol‘s CC#3 on the channels and just issue the sysex to switch the lights to the same state. No GUI, no pads, no config. Just a simple OnMidiCC event with about 7 lines of code...
thanks @_ki , all your "thinking out loud" is very useful
I'm changing volume levels rather than AUM's mute function because I also need to mute/un-mute some channels in Groove Rider GR-16, where you can't access the mute function via MIDI. this solution allows me to use one CC for all muting instances. I use Gain insert fx to balance the audio volumes. yes, every channel responds to a different MIDI channel. I'm not "married" to this set-up, but so far it seems to balance most of my needs.
re: your 3rd point - you are totally correct, this is a bit unreliable and could lead to several of the LED states inverting themselves mid-performance. not ideal! you suggest using note commands, I did briefly try this but ended up triggering random synth notes when muting/un-muting. I will have another try with note commands.
You have helped answer my original question - that Mozaic can help me and is worth my purchase I will devote some time to getting the LEDs working and update this thread with my progress
@drewinnit Here is what i came up with for your special Launchcontrol XL setup using CC#3 with 0 or 100 on 16 midi channels:
This script should receive its midi input from LauchControl and also send its midi output to LauchControl XL. It updates its pad state when CC#3 is received from the controller and sends back a sysex to toggle the leds.
As i don‘t have a LaunchPad, i can’t test and hope it works. For testing i used another script that sends CC#3 with either 0 or 100 on the 16 channels depending on the pad pressed. Two things can happen:
a) the pads in this script don‘t reflect your channel mutes - then i didn‘t understand correctly what you are sending from LaunchControl
b) the LEDs don‘t change on the controller - then the sysex isn‘t correct yet.
Wow, that’s very kind of you to do! I really appreciate you taking the time to help me out with this
I’m brand new to Mozaic so may be doing something wrong.
I have Mozaic loaded in a midi channel in AUM. Using aum’s midi routing I have made sure this channel is both receiving and sending to the launch control.
I have pasted your code into the Code text field, making sure to remove the previous code header and footer. I uploaded the code and returned to the GUI.
What happens: the channels now don‘t react to the 0 value, but if I override the volume by pulling a fader down then another press of the respective channels button will push the fader back up. No LEDs at all, unfortunately.
I noticed one potential code issue, with sysButton = 127
Should this instead be 100? I tried replacing it with 100 but had the same result described above
Like I said, literally just downloaded mozaic and have only very modest programming experience so very likely all this is user error. I’m going to play around now some more with it and see if I can figure it out.
Is the first "F0" hex value missing in @_Ki's code sample?
Should it be?
sysButton = [0xF0,0x00,0x20,0x29,0x02,0x11,0x7B,0x00]
and then put "0xF7"(or 247 decimal) in sysButton
Just trying to keep things moving since @_Ki commits to solving anything he cab and always has a full dance card.
Thanks for your input @McD
I’ll try this now
Edit: by adding the 0xF0, the faders now respond to each part of the toggle (yay!)
Sadly still no LED action....
Not sure about the second part of your comment, should I add a line of code like this:
Below this line :
sysButton = [0xF0,0x00,0x20,0x29,0x02,0x11,0x7B,0x00]
No, I think I read that part wrong. The manual suggests:
System Exclusive messages can be used to set the LED values for any button or pot in any template, regardless of which template is currently selected. This is done using the following message:
Hex version F0h 00h 20h 29h 02h 11h 78h Template Index Value F7h
Dec version 240 0 32 41 2 17 120 Template Index Value 247
Where Template is 00h-07h (0-7) for the 8 user templates,
and 08h-0Fh (8-15) for the 8 factory templates;
Index is the index of the button or pot (see below);
Value is the velocity byte that defines the brightness values of both the red and green LEDs.
I think sysButton is the critical "Value" that sets the LED brightness so set that to 127 for an ON and 0 for OFF. So, change @_Ki's code from:
That missing byte in @_Ki's code threw his indexes off by 1 in this section of code.
@McD and @drewinnit
Regarding the sysex:
From the Moziac Manual v1.3 sysex send example on page 40 and 41, i understood that the SendSysex automatically will add the 0xF0 header and 0xF7 trailer of a sysex message and that the count only contains the 'inner' data bytes.
so for your LaunchControl XL which needs
that would start with the 0x00 i specified and end with the value excluding the 0xF7 as in my initial code.
No idea why adding 0xF0 changes anything on your side, as this should not work at all, since neither the indices nor the length of the message were adapted. The script also is not intended to send to AUMs faders.
I just re-checked my code using a Midi Monitor. My initial code sends out the sysex message when CC#0 val 0 is received on channel 0 - which should be the message for button 0 mute on
That messages sets the LED for first button of the upper row to ON (value 7F) for templates 1-3 if the linked manual (page 7) is correct and your launchpad buttons are in toggle mode as you stated.
BTW what do you mean that the faders now react ? The script only should set the button LEDs of the launchcontrol, nothing else, it should not interfere with AUMs faders.
Starting from your regular setup, where the volume mutes work (controller buttons send CC#3 on various channels, launchcontrol is routed to AUMs midi control, each of AUMs channel volumes is automated by the CC#3 of a specific channel) - pressing a launchcontrol should mute/unmute the volume as before.
Now add Mozaic, load the initial script from above and additionally route the launchcontrol to the script using the midi matrix and also route the scripts output back to launchcontrol. The scripts output is not routed to midi control, only to the launchcontrol.
Aha! Never mind then. My mangling of @_ki's sysex message might have stumped on another sysex message related to the reported fader change.
Sending malformed Sysex messages is probably not a great idea.
Thank you both for your code and assistance
I’ve loaded the original script as suggested in the most recent post. The faders stop responding to the midi cc once mozaic is routed back to the launchcontrol. no LED action at all.
Seems such a simple concept but it just isn’t working.
For some strange reason, changing the sysex slightly as suggested by McD, enabled the faders to work on just user template 2 still without LEDs but i had the visual feedback of the mozaic pads saying muted when they were. Perhaps this is the best solution for now, unless this “malformed” sysex might be harmful?
I had a quick look at _ki’s script and it looks correct to me. I can’t test because I don’t have the hardware, but the Sysex handling does It’s thing as expected
thanks for taking a look and confirming, and thank you also for your incredible apps - I'm not exaggerating when I say that your drum machines, synths and Rozetta were very much the reason I originally invested in an iPad
I'm going to spend time this weekend trying to troubleshoot, as well as just getting myself familiar with Mozaic and the script language. It's all been a bit rushed, and that's how silly user errors enter into the equation
I really appreciate the help from you all. I'll report back when I've had a deeper dive
@drewinnit I carefully re-read the launchpad xl manual and found where i misunderstood.
My sysex toggled the state of the buttons (and not its lights) and therefore probably did resets the press action and the launchcontrol immediately send a mute-off when you pressed a mute button - thats why it didn‘t seem to work
Here a corrected version, including the needed index offset to address the buttons and color defines.
I hope that the lower button row corresponds to channel 0-7, and the upper row to 8-15. Otherwise the script will light the button of the wrong row. I then can add some code to fix this.
For debugging i implemented another script posing as fake LaunchControl XL, sending out the CC3 to the main script and now also receiving the sysex from the main script to toggle its pad lighting
@_ki you're a gentleman and a scholar. I really appreciate the time you've taken to help me.
Your latest code was 99% there, I made two small changes - I inverted the led on and off values, so that the button is lit when it is unmuted, and I also shifted the index value up by 16 - like you mentioned it was affecting the wrong row of buttons. Full code pasted below as reference
My only remaining question is whether you have a Paypal? I’d love to buy you some beer/coffee to show my appreciation. you've saved me hours of head scratching!
@drewinnit Cool that it‘s working now Also thanks for offering a coffee. I don't want any compensation, I enjoy puzzling around such topics and so far I haven't had anything that uses sysex in Mozaic - this task was a short diversion from the larger scripts I'm still struggling to finish.
Could you edit your posting and put three
`backward slanted apostrophes infront of the @OnLoad without spaces inbetween them and also three of them after the last @End - the forum will then use a code style for everything in between and make it easier to read and copy and it will correctly reproduce the indentations.
Using my iPad onscreen keyboard, i have to change to symbols using the .?123 key. Then holding the forward slanted apostrophe (located where letter k normally is) will show a popup containing the needed backward slanted variant
BTW: While you are editing ou message, you can also change the version number to v1.0 in the LabelPads command since the script now works and is out of beta
The Novation Launch Control XL ($149 Sweetwater) looks like it might be a handy hardware extension for iPad users:
I did see a Mosaic script for the Novation Launchpad (several models available):
I'd imagine I would use knobs and sliders more than PADs and 16 PADS would be enough for me.
It might me nice to make a library of scripts to use these devices with our iPads via Mosaic.
They would also make interesting HUI's for Mosaic scripting in general since i find on screen knob tweaking to be frustrating for live/recording uses. Having a physical knob that you can adjust slowly would insure a better result.
On another note: has anyone connected a better App for on-screen "knobs/sliders" into Mosaic? Any recommendations?