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 StoreAudiobus is the app that makes the rest of your setup better.
Comments
Yeh, that was always there but not obvious since the help message when you first load the script doesn't make it obvious that you can scroll down. That's a small thing I wish was a little better implemented in Mozaic.
I needed to do it that way in order to fit in the needed number of pads.
It’s going to be perfect for composers who don’t read or write notation.
It removes the necessity of looking up the ranges of commonly known instruments
and a composer can play within the correct range per instrument and export out
the midi to a third party notation app and in the notation app simply add
the additional instructions necessary and then it’s giving the score to the musicians to play.
Simplifies the whole process and opens up the
world of classical composition for the everyday person.
This is a first stab at it. Untested, but I think it's close. I'm assuming you're wanting to control the AUM volume faders for each channel. You will need to check AUM Midi Ctrl for what channel nums and cc controls each track, so you can modify the @OnLoad settings in the code. This code uses linear ramping of cc vals. Also, I doubt whether the 0 - 127 cc outputs are what you want, since I think 0db for each fader is well below 127, but that can be easily tweaked if this works close to how you want.
Thanks hes,
When testing, AUM fader1 snaps to maximum, fader2 and fader3 snap to zero, regardless of initial fader settings or Mozaic knob0 position.
The Mozaic log displays:
[OnKnobChange] Syntax Error: unknown or invalid argument "GETKNOBVAL"
Try putting parenthesis around GetKnobValue and its parameter
(GetKnobValue LastKnob)
Same result, but now the log sais:
[OnKnobChange] Syntax Error: unknown or invalid argument "(GETKNOBVAL LASTKNOB)"
Try
GetKnobValue
insteadMaybe, I shouldn't read code before drinking coffee
Awsome, now works exactly as I wanted it to, thank you so much all.
Hey (first post here)
i was wondering if there is the possibility to have the knob values updated from, let’s say an AU.
What I am trying to achieve is: have a 8 or (X) knob/fader controller in Mozaic. Which are mapped to a AU. Then, when I change one mapped value from this AU in the AU.
I would like to have the knob value in Mozaic also updated.
The main goal would be, to have a 8 knob controller and some pads, which send notes, so be able to control the 8 macros of an Ableton rack.
I already got the 8 knobs controlling the 8 macros by a simple User Remote script for Ableton, which automatically controls the first 8 parameters. By switching the Racks (with notes/pads) the knobs in Ableton chance aswell. So it would be quite handy to have the values from the Ableton knobs updated within my Mozaic Controller
I am 99,5% new to coding & already through the manual. I guess this could be done with the getknobvalue but I cannot figure out how to get/read the values from the AU.
Would be great if someone could help me out a bit.
Kind regards
A
The knobs in the au would have to send midi out for mozaic to pick it up.
If you control the au with an external controller then you could route the external controller through mozaic. But picking up what the mouse changed will be impossble if the au does not give midi feedback, wich most do not.
Hi
Please help me .
I don't know if this question has been asked before or not.
Mozaic doesn’t save state of knobs faders, ... , in cubasis 2. As midi plugin AUV3 . For example i select one preset , and adjust or change some of knobs as desired . And then close cubasis 2 , When I open cubasis again , there is mozaic with same preset but it exists in default preset mode . There is no this problem in auriapro app . I always use other midi plugins auv3 in Cubasis 2. But they do not have such a problem . Where is the problem? Please help , Because this problem is really annoying .
Pejman
@pejman
Mozaic‘s state saving depends on the script.
In general Moazic saves all faders, knobs, labels etc in the session - but some scripts don‘t ‚guard‘ their variable intialization with an
if unassigned xxx
and therefore overwrite everything with their own defaults in theOnLoad
Hi ki
Thank you for your quick reply.
You are right, But one question remains. Why state saving is the same preset that does not work in cubasis. In auria pro, it saves the situations correctly.?
If for the same script state-saving works in Auria Pro, but not in Cubasis that would be weird. Is that script published on patchstorage ?
Maybe i find the time to have a look - i have both AuriaPro and Cubasis 2/3
I just loaded one of my Mozaic scripts (that implement state-save) into the MidiEffects slot of the default midi track of a fresh project, setup some internal settings (knobs, states etc) and closed Cubasis 3. Upon restart of Cubasis, the correct settings were restored.
Also checked that they were restored when loading another project and then switching back to my MozaicTest project.
I apologize for the delay .
Yes, I made a mistake somewhere.
My preset hasn’t ( if unassigned xxx ) and for some of knobs has ( SetKnobValue ) and for some of knobs hasn’t it . Therefore, those knobs that don’t have ( setknobvalue ) are kept in their position ( state saving ) in both cubasis an auria pro . That is, my preset works exactly the same in both cubase and auriapro .
I’m not a coder . Does adding this ( if unassigned ) in my preset require many changes?
For having both options ( setknobvalue ) on load and ( if unassigned ) . This preset is for humanizing note delay and random velocity.
Humaniz with control knobs
via cc’s
@Onload
// change these to the cc's you want to use
mintimecc = 13
maxtimecc = 14
minvelcc = 15
maxvelcc = 16
minvaluecc = 17
maxvaluecc = 18
ShowLayout 0
LabelKnobs {humaniz}
LabelKnob 0, {min time}
LabelKnob 1, {max time}
LabelKnob 2, {min vel}
LabelKnob 3, {max vel}
LabelKnob 5, {set min value}
LabelKnob 6, {set max value}
SetKnobValue 0, 0
SetKnobValue 5, 0
SetKnobValue 6, 64
SetKnobValue 3, 100
@End
@OnMidiCC
if MIDIByte2 = mintimecc
SetKnobValue 0, MIDIByte3
elseif MIDIByte2 = maxtimecc
SetKnobValue 1, MIDIByte3
elseif MIDIByte2 = minvelcc
SetKnobValue 2, MIDIByte3
elseif MIDIByte2 = maxvelcc
SetKnobValue 3, MIDIByte3
elseif MIDIByte2 = minvaluecc
SetKnobValue 5, MIDIByte3
elseif MIDIByte2 = maxvaluecc
SetKnobValue 6, MIDIByte3
else
// comment this out if you don’t want other cc’s to pass thru
SendMIDIThru
endif
@End
@OnMIDINoteOn
Maxval = TranslateScale ( GetKnobValue 6 ), 0, 127, 0, 500
Minval = TranslateScale ( GetKnobValue 5 ), 0, 127, 0, 500
delayMax = TranslateScale (GetKnobValue 1), 0, 127, 0, Maxval
delayMin = TranslateScale (GetKnobValue 0), 0, 127, 0, Minval
delay = Random delayMin, delayMax
vel = Random (GetKnobValue 2), (GetKnobValue 3)
SendMIDINoteOn MIDIChannel, MIDINote, vel, delay
// remember the delay we're using for Note Off
SetNoteState MIDIChannel, MIDINote, delay
@End
@OnMIDINoteOff
// get the delay we used for this note
delay = GetNoteState MIDIChannel, MIDINote
SendMIDINoteOff MIDIChannel, MIDINote, 0, delay
@End
Hi @pejman - Normally I wouldn't answer a question directed at someone else, but it's been some time since your post, so I expect it's probably late in @_ki 's timezone.
What you need to do is check the
@OnLoad
and add something to check whether this is a new load of the script or not. In your case:Should be changed to:
The purpose of this is to make it so those knobs are only set on a brand new load of the script. I chose the name
init
for the variable we will check to do that, but you can call it anything you like.init
has no value when the script is first loaded. It isUnassigned
because until that if statement, we haven't assigned it any value.Once we drop into the statements inside the
if
block, we set a value for this variable:init = YES
. Now, whenever the script reloads from a saved session, theif
block will be skipped and the knobs won't be set to their default value.I hope that helps. The manual, page 12, does a much better job of explaining than I can.
Hi @wim .
Very very thanks for help and useful information 🙏🙏🙏🙏🙏.
@wim Thanks for answering/jumping in. I‘m still at work now, so an analysis and answer from my side would have taken some more hours 😀
you are the best 🙏🙏🙏🙏
Hello friends.
I have a problem with midiflow forum .
I have successfully completed the register twice, in midiflow forum, But I can't use the new topic section.
Every time I press New Topic, this box opens for me
I can't communicate with them through email either.
Because their email refers me to their forum, automatically.
Are there any of you in this forum? that I can communicate with them through you.
or someone who is related to the developer of midiflow app. ( Johannes ) .
Please help me .🙏
Hello,
I'm I right in thinking that the current event flow is OnNewBeat -> OnMetroPulse -> OnMidiInput ?
I'm trying to read a note "on the beat" and based on the note, play the note out right away, however because the "pulse" event happens before, I'm getting the note information on pulse late... Is there a different event I should use?
Thanks
Edit: seems a way around this is to set a higher PPQN and (re-)trigger the note on the second pulse
The midi events
@OnMidiInput
,@OnMidiNote
, etc. are completely independent of@OnNewBeat
, etc.I don't know what you're trying to do, but if all you're trying to do is check a note and send it out under certain conditions, you don't need to involve the metronome at all. Something like this is sufficient.
Note, examples below were not tested and were typed directly on the forum, so could have syntax and other errors.
You only need to involve the metronome if you're trying to detect where the note is in relation to the beat. For this I suggest capturing the system time to a variable when the beat happens and when the note happens, then comparing them.
The script Live Quantize deals with metronome and note timing. It might be worth looking at.
Oh, and in the comments for that one someone referenced another "accuracy" based script that could be even better. I haven't looked at it myself yet, but ... https://patchstorage.com/midiq/
It looks like that Forum was mothballed in Nov, 2021. No new posts after that date.
You should post in this as a new thread here to reach the widest audience of "experts" possible.
Mozaic lovers are a small group compared to forum.audiob.us members.
O love this type of reply... it builds a database of useful clues.
Many thanks @wim
I'll have to check those examples with a fresh mind, but I really appreciate the detailed answer!
The solution I came up with seems to work for my use case, but happy to change it if it can be improved. I'll share the script once I finish it.
Hey @brambos - fyi there's an error in the documentation and the in-app syntax description for the
SendMIDIBankSelect
action. They state that the syntax isSendMIDIBankSelect <chan>, <value> [,<delay>]
when actually it'sSendMIDIBankSelect <chan>, <MSB> ,<LSB>
. LSB may be optional, I don't know for sure.Took me a couple of hours to figure out what was causing an issue for someone in the Basic MIDI Controls v1.2 script. It turns out that I must have figured this out back when I wrote the script since I was always sending 0 for the MSB, but after all this time I had forgotten.
So ... posting here for anyone else that might run into this, and so that hopefully it can be corrected if you push an update to the app and docs.
@wim Good find that the Mozaic manual shows a different/wrong definition. The in-app syntax list shows the correct version
SendMIDIBankSelect <chan>, <MSB>, <LSB> [,<delay_in_milliseconds>]
I immediately checked my Mozaic Language Support package: Both the syntax checker and code completion use the in-app definition.
.
LSB isn‘t marked as [ optional ]. In case of missing trailing parameters, Mozaic doesn’t produce a syntax error but uses a default value for the parameter - in most cases a zero.
Thanks, that clears up a lot! You're right about the in-app syntax checker, I checked it too quickly since I never use it since I edit in Textastic. At the time I did notice your Textastic language support didn't like there not being at least three parameters, so supplied zero there, further confusing my troubleshooting.
Anyway, thankfully it's all sorted now, and it's only a documentation bug, nothing to worry about in the app.