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
@McD Thank you very much. Can’t wait to use the updated version. One of the best scripts a getting better. Cheers!
Wow. I’m really feeling the love from this forum today.
@wim I hear you. Didn’t realize that... I seriously have to start learning how to code. Ultimately I just hope a few ideas I throw out there turn into some amazing scripts that everyone can enjoy.
PS. Is Mozaic a good place to start learning code, For a beginner, or would it be better to start with a big one like Swift, Java, etc... then try Mozaic. I guess it depends on what I’m trying to do... but is starting with Mozaic a good idea?
I don’t mean to be discouraging about the idea. I was just pointing out what made me reject the idea. @_ki is more tenacious than I am and may well come with something that works.
I think starting out with Mozaic is an excellent idea.
However, it isn’t much like the other languages you mentioned. If your objective is to become an app programmer you might want to look into something like Swift Playgrounds.
I took a look at the current script and the technique that I was advised to use is implemented for state saving. I suspect the code might need revision to set the knobs to the settings of last use. I’m in a iPhone only state for a while so I won’t fix this until Jan.
@McD yea when I reopen a project it looks like the jobs are in a similar position however the 8 knobs (4 sequence + 4 chord) with numbers all show “1111” even though all knobs are pointing different directions. This obviously changes the result.
I agree with @wim that Mozaic is a good place to start -- and even think that if you ultimately want to move on from Mozaic to another language that Mozaic is still a good place to start for a few reasons: Bram's user manual does a very nice job of walking through some basic programming concepts and tasks. Also, Mozaic lets you focus on a limited instruction set that isn't overwhelming.
Once you get your feet wet with Mozaic and are comfortable, learning another language will be pretty easy AND you will gain some appreciation for some of the added features (such as parameter passing and pointers) that sometimes confuse/intimidate people new to programming.
And, for anyone that has math anxiety and is worried that programming is like math or requires math, don't worry. People here "variable" and worry that they have to solve equations. In programming, variable just means: "somewhere that you can store information so that you can get it back later".
Thank you the input on where to start for patching the script.
Hi @brambos, is there an advised maximum number of delayed midi events? For instance, would I run into trouble if I queued up too many (thousands) of
SendMidiOut
commands with increasing delays all in a batch?Yes, that would be terrible
I would limit it to 30-40 max. The engine is constantly going through the queue of events to pick out which to handle next (and in what order to do that). Keeping the event queue short will help performance significantly.
Thanks for the quick answer! OK, I know what I gotta do. I was hoping to be lazy.
Um, OK, here's another thought.
If I had consecutive series of messages to send out, each a variable number of milliseconds after the other, would setting a 1ms timer interval and checking on each
OnTimer
whether it's time to send the next message be feasible?Or would it be better to spit out 20 or so messages with optionaldelay, then grab another 20 when those should be close to having left the queue?
I'm basically trying to figure out how I can best replay a big series of recorded events according to timestamps I've recorded for them.
I would try the latter strategy. From a performance perspective that sounds like the optimal solution.
@_ki just saw your new script... Smart Chord Bass! I’m so excited to try it.
https://patchstorage.com/smart-chord-bass/
Thanks for getting back to me. Yeh, I decided to give that a try, and so far it seems to be working out really well. I have yet to do timing comparisons between recording and playback, but to my ears at least it sounds good. It doesn’t seem to be bogging down either.
I’m recording midi events and timing data into indexed buffers. Then to play back I’m checking if it’s time to play the next event each 1ms OnTimer. I’m pretty excited about this one if it works out.
The big question is how many events I’ll be able to record. Each event requires a cell in two arrays, one for the event, and one for the timestamp. I’ve tested with eight buffers (8192 events), but I’m hoping to go as high as possible.
@Poppadocrock I hope it fulfils its intended application and you like it
Today i work on an introduction video for the script which will be posted when ready.
I love it. They said it couldn't be done and @_Ki said: "Let me think about it..." Viola.
It's creators like @_Ki and @Wim and @On_and_On that extend the value prop of Mosaic for
this community. @Brambos has given us an app that creates a new virtuous circle for IOS music making.
Giving @_Ki an interesting problem to ponder is a big part of the process. He seems to love a good problem that users will value being solved.
Awesome can’t wait for video...
@Poppadocrock It took quite some time to write a good ‚script’ that fully covers whats going on and on what conditions bass notes are triggered in a well structured order. In the afternoon i started doing the voice overs, which i just finished. Now i still need to screen record everything i talked about (which will happen tomorrow) and edit the whole lot ;-)
I also did a big text part about the development history of the script, which took several turn. The introduction is already about 4 to 5 minutes long and the second part would need another three minutes - so i am still undecided if i should include that. The regular user probably doesn‘t want to know about the obstacles and how i solved them, the just want to understand how to set it up and play with it
Thats a bit of a pitty, as that‘s the part of the development i had the most fun with... so maybe i will post the text in one of the Mozaic threads or on PatchStorage in the scripts comment...
@_ki So far so good. Used it on a couple jams today and really liked it. I can’t thank you enough for your efforts. People like you make this forum (and Mozaic) great. I hope many people enjoy using your script. Cheers!
The Smart Chord Bass script for Mozaic generates accompanying bass notes for incoming chords by either outputing the lowest note or the root note of a detected inversion.
You find the (just updated) script at PatchStorage
Sweet.
Also for all you coders... this app for python is usually $9.99 but it is free today.
https://apps.apple.com/us/app/pyto-python-3-8/id1436650069
Nice find!!
Hi, in AUM i can't see the MIDI CC for the Mozaic SHIFT parameter.
I use the script "Noir beat recorder" mapped to my launchpad X which is nice but i can't find the way to Map this SHIFT button in order to erase the notes.
If someone could tell me
That's a really cool script!
@_ki : love your scripting and the elegant u.i.s you create.
Sorry, that’s not possible. The SHIFT parameter isn’t exposed. The script would need to be modified to implement the same function of the SHIFT button onto a pad or knob.
We are very fortunate that @_ki enjoys making scripts for musical purposes and applies
his professional skills to the effort as a model of excellence we cold aspire to emulate.
We just need to keep him prompted with interesting problems to solve and more will follow.
I've just released the first version of my microtonal script, Microtonal Maker. As requested by @palms. In the coming weeks, I'll create a tutorial video. @_ki if you have any suggestions to improve my script, please let me know; I've definitely appreciated your feedback and optimizations on my first two scripts.
This version doesn't contain any presets, but it does allow you to create your own presets, export them to the "Log" as text, and store them in a bank of 36 presets. Hopefully a few people will share some presets! And I'll include them, along with the ones I create, in a future version of this script.
https://patchstorage.com/microtonal-maker/
Hi @brambos I’m creating quite a long list now of user patches in Mozaic that fall in all sorts of categories we talking about 70 plus.
I appreciate they are listed alphabetically but it would be great if I could add a favourites list or something for my most used ones or be able to catalog them further just to find what I’m looking for quicker.
Maybe I’m missing a trick and you can do this, or maybe it’s a iOS limitation to have sub categories?
Thanks a lot for the kind words
.
BTW i‘m currently working on a script using the chord/inversion detection code i developed for Smart Chord Bass. I don‘t know if there is interest at all, it‘s a bit unusual what the script does - but since most parts of the code are already there, i‘ll just implement the rest and see what emerges
That new script analyses the input for chords (including their inversions) and allows to force the output to the regular chord or any of its available inversions. There is also a ‚no-change‘ or ‚random selection‘ mode and the output-type can be automated via AU parameter. As with the Smart Chord Bass, the output is delayed at least one msec, and detection is canceled after a user-defined timeout (maybe 10-25msec) so that single notes or two-note chords are‘nt delayed for too long. Additional notes (after chord detection is done) run through without delay. Manual play should possible, So just play regular chords and inversions are added.
I imagine the following use-case: A sequencer issues a repeated chord progression and this script (in random mode or via automation) changes which inversion is used for each chord issued. In my imagination, this generates small variations of the chords played, but keeps the main harmonics of the progression intakt as only inversions are used. Maybe it fluffens up the progression and makes it a bit less repetitive ?
But i can‘t try how this really sounds or if this leads to further ideas, as long as the script isn‘t done ..
I also have no idea how to name what the script does - there is probably a musical term for ‚changing type of inversion‘
Right now i’m attending the german 36C3 hacker conference (17000 attendees, ≈500 talks, sessions and workshops in 4 days) . After enjoying several cool talks, i now sit inbetween all the blinking led lights and literally thousands of other coding hackers and enjoy Scripting and posting while listening to an AUM session with lots of automation via Mozaic scripts playing in my headphones. Later on i will shake my weary bones to some loud music; only got about 5 hours of sleep per night the last days. So cool to be here, best time of the year