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
Just came across this discussion mentioning “Latch and Switch”:
The sorting algorithm I am using in the script is called “Bubble Sort”. You can find an explanation here:
https://en.wikipedia.org/wiki/Bubble_sort
It can be found in the @ShowNotes subroutine.
Is this an AUM question or Mozaic question?
Hi @espiegel123 ❤️.
This is an AUM question .
You might want to ask in an AUM related thread
Hi , @catherder
Thanks for sort information , The topic is very interesting for me, I will definitely study it .
@pejman, the answer is No. You cannot set the midi channel that is output from an AUM channel without other plugins. Atom itself can send on any channel you want, however.
Hi , @wim.
Do you mean atom pianoroll 2 ?
I use atom 1 .
@wim.
Based on this script that you kindly wrote for me, I have two more requests from you. 🙏🙏.
1, log only highest note in separate log .
2 , sort notes in highest to lowest note ( mirroring ) . And log .
I'm going to extract them from the script and send them to another plugin.
I would be very grateful if you would do me this favor again.🙏.
Yes, I meant Atom 2. I don't think Atom 1 can send on any other channel.
You really don't need much special to get these two different logs. Check the
@LogNotes
event.for l = 0 to (notecount - 1)
, just count the opposite direction:for l = (notecount - 1) to 0
heldnotes[notecount - 1]
.I hope that helps.
@wim ,
Very thanks . It works. ❤️🙏.
@wim .
Hi wim .
I want to create one strummer ( like guitar ) patch with your chord tracking notes patch .
I have added some code lines to your script , I marked them with this sign (🔺).
There is problem ( overlapping start notes in octave with original notes ) with formula in delay send note for octave .
SendMIDINoteOn 0, heldNotes[l]+12, ve[l] , l* delay + (l + 1 * delay)
I try it with delay 50 for example .
I play for first time note C1 , then add E1 and then add G1 .
According to the above code, their octave have been add to them in the order that you can see them in the screenshot.
I have tried many formulas in delay send note section , but none of them have been successful. Please help me to know what formula I should write to make what I expect to happen.
Naturally, I expect that by increasing or decreasing the delay that I have created by knob No. 0, the delay of the notes relative to each other from the lowest note to the highest note , will decrease or increase in an equal proportion every time I play a chord or note to note. I add or subtract from the previous one.
@Description
Track the notes that are being held down and sort them lowest note to highest note.
NOTE: This is designed to only handle a SINGLE MIDI CHANNEL at a time.
@End
@OnLoad
noteCount = 0
FillArray heldNotes,-1
SetShortName {strumer}
delay = 50
@End
@OnMidiNoteOn
note = MIDINote
ve = MIDIVelocity //🔺
Call @AddNote
Call @SortNotes
Call @LogNotes
@End
@OnMidiNoteOff
note = MIDINote
Call @RemoveNote
Call @SortNotes
Call @LogNotes
@End
@OnKnobChange //🔺
delay = Round TranslateScale (GetKnobValue 0), 0, 127, 0, 100
LabelKnob 0, delay
Call @LogNotes
@End
@AddNote
// Add a note to the stack
heldNotes[noteCount] = note
Inc noteCount
@End
@RemoveNote
// Remove a note from the stack
r = 0
found = NO
// Read through the stack until the note is found.
// Once found, replace that with the next note in the stack
// until there are no more notes (note = -1).
repeat
if heldNotes[r] = note
found = YES
Dec noteCount
endif
if found
heldNotes[r] = heldNotes[r+1]
endif
Inc r
until heldNotes[r] = -1 or r = 1023
@End
@SortNotes
// Sort the stack by copying the notes
// in lowest-to highest order into a temporary array
// then replace the active array with the temporary array
// Exit if there are no notes left in the stack
if noteCount = 0
Exit
endif
FillArray tmp, -1
sortCount = noteCount
for s = 0 to (sortCount-1)
Call @GetLowest
tmp[s] = lowest
note = lowest
Call @RemoveNote
endfor
CopyArray tmp,heldNotes
// noteCount has been decreasing as we remove already
// copied notes, so we need to restore it here.
noteCount = sortCount
@End
@GetLowest
if noteCount = 0
Exit
endif
lowest = 128
for l = 0 to (noteCount - 1)
if heldNotes[l] < lowest
lowest = heldNotes[l]
endif
endfor
@End
@LogNotes
if noteCount > 0
Log {=== Start Note Array Contents ===}
for l = 0 to (noteCount - 1)
Log {[}, l, {] }, (NoteName heldNotes[l],YES), { (}, heldNotes[l], {)} //🔺🔺🔺
SendMIDINoteOn 0, heldNotes[l], ve[l] ,l * delay
SendMIDINoteOn 0, heldNotes[l]+12, ve[l] , l * delay + (l + 1 * delay)
SendMIDINoteOff 0, heldNotes[l], 0 , l*delay +10
SendMIDINoteOff 0, heldNotes[l]+12, 0 , l * delay + (l + 1 * delay)
endfor
Log {=== End Note Array Contents ===}
else
Log {No held notes.}
endif
@End
Is there anyone who can help me in this matter?
I was able to solve the problem .
I would love to have access to a UI editor to make additional layouts, and add custom buttons. I created my ideal workflow for a step sequencer but hit a wall because I needed more controls, and ended up using the shift button to have 2 pages. An in app purchase for a UI template editor and the functionality to be able to create custom layouts and wire those controls up would be a dream for me.
I suspect Mozaic didn’t sell enough copies to justify @brambos putting in more time.
The 1-2 punch of Surface Builder feeding Mozaic works really well to make better UI’s and get the
MIDI processing of Mozaic.
Brambos' philosophy has been made clear a number of times. He puts a lot of thought into the conception of each his plugin as a complete unit, implements that vision, makes some refinements shortly after release to fix bugs or address little user needs that align with the conception of the app and at that point the app is done and isn't revisited except to fix bugs with rare exception.
Very early on, he made it clear that it was not intended for the large-scale applications many of us pursued with it. He made it clear pretty early that he would not be turning it into something other than it was. I don't thing the number of sales plays a big role in his thinking on this subject.
Hmm I don't have surface builder, but now I am intrigued, also now wondering if I could do what I want with Loopy Pro's UI tools feeding Mozaic as well
FWIW, that has tended to be my solution.
Thanks,
My other solution will be a lot more time consuming, which would be to create an app that satisfies the workflow that I would like. That might be what I will end up doing for ease of use and collaboration with others. If I do embark on that path, wish me luck!
If you do create it, I am sure a lot of people would appreciate it -- (though by a "lot" I don't actually mean so many that you would earn more revenue than it would cost in time to develop it)
oh I don't mean creating the thing I would want in Mozaic, I mean creating the thing that I was creating in Mozaic as a proper app. Which is a step sequencer with a particular workflow.
Hi ,
I want to send midi message after every 2 host bar .
I used this code :
@OnNewBar
for i = 0 to HostBar
if HostBar = i * 2
log {🔺}, HostBar
Send xxxx
endif
endfor
@End
But with increasing hostbar , DSP (CPU consumption) increases .
What other solution is there?
I apologize, the solution was very simple, I found it.😅
@onnewbar
Inc count
if count = 2
log {🔺}, HostBar
Send xxx
x = 0
endif
@end
@ki
hi @ki. thanks for new patch .
What is the exact name of this app, I can't find it no matter how much I search in the app store.
Hello @pejman
thats the Xequence AU | Keys app. One can configure scales, add multiple CC sliders, the color and midi channel (nice if one uses several of these keys)
The same dev also offers an Xequence AU | pads control surface.
@ki thanks for information ❤️.