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.

MOZAIC - Create your own AU MIDI plugins - OUT NOW!

18586889091102

Comments

  • I don’t understand what you mean by “random speed of knob 0”.

    Do you mean that knob 0 is to be moving up and down at a random rate? Or that you want to assign it a single random value? Or?

    Writing a good program starts with clearly defining what it does. I don’t want to toss out sample code that is too far unrelated to what you’re trying to do.

  • Yes .moving up and down at a random rate, Via knob 5 . And knob 1 control with knob 6 and … .

  • You probably want to learn about Mozaic's LFOs then. You can use one LFO for each knob and set the parameters of each LFO individually. Then, in your timer event, check the value of each LFO and use that to set the knob position.

    If using LFO's your knob's 5 and up would control the speed of each LFO.

  • edited April 2023

    Can the lfo randomly change the position of each knob ?
    I want to send cc,s values randomly with speed rate control able.

  • wimwim
    edited April 2023

    @pejman said:
    Can the lfo randomly change the position of each knob ?

    Yes. As I mentioned, you need to set up a timer, then in the OnTimer event, check the value of each LFO, then set the knob position from that value. The manual has plenty of good explanation of how to use LFOs. In fact, there's an example that's pretty close what you're trying to do in section 5, page 38.

  • Lfo type SH = random lfo value ?

  • @pejman said:
    Lfo type SH = random lfo value ?

    Yes

  • @wim said:
    I don’t understand what you mean by “random speed of knob 0”.

    Do you mean that knob 0 is to be moving up and down at a random rate? Or that you want to assign it a single random value? Or?

    I think I misunderstood what you meant by up and down.

    I want to Position of knob 0 change randomly, Not by changing or going up and down regularly through an lfo, I want the position change to happen completely randomly, And that I can reduce or increase the speed of these changes myself through a another knob.

  • wimwim
    edited April 2023

    @pejman said:

    @wim said:
    I don’t understand what you mean by “random speed of knob 0”.

    Do you mean that knob 0 is to be moving up and down at a random rate? Or that you want to assign it a single random value? Or?

    I think I misunderstood what you meant by up and down.

    I want to Position of knob 0 change randomly, Not by changing or going up and down regularly through an lfo, I want the position change to happen completely randomly, And that I can reduce or increase the speed of these changes myself through a another knob.

    A random (SH) LFO does have a random value at any time. If you query that value and use that to set the knob value, I believe you will have what you want.

  • Let's say you have an SH LFO set to 1Hz. One time per second that LFO will have a new random value. If it's set to 10 Hz, it'll have a new random value 10 times per second.

  • wimwim
    edited April 2023

    The problem you'll have to manage here is the @OnTimer event. If you set the TimerInterval too low or if you try to do too much in the event, some things might not get done or you might get high CPU usage. I don't know what kind of speeds you're trying to achieve.

  • Yes .it’s great. I will try it . I hope I can write this code correctly.
    Thank you for your patience And and cooperation .

  • No problem. Good luck!

  • @wim said:
    The problem you'll have to manage here is the @OnTimer event. If you set the TimerInterval too low or if you try to do too much in the event, some things might not get done or you might get high CPU usage. I don't know what kind of speeds you're trying to achieve.

    Each random Between 10 seconds and 1/4 second

  • BTW - if you're trying to automate things with this by sending CC's, there are LFO apps that can work this way without coding.

    It's a good exercise for learning though. 👍🏼

  • @pejman said:

    @wim said:
    The problem you'll have to manage here is the @OnTimer event. If you set the TimerInterval too low or if you try to do too much in the event, some things might not get done or you might get high CPU usage. I don't know what kind of speeds you're trying to achieve.

    Each random Between 10 seconds and 1/4 second

    Ahh that's perfectly reasonable. You can set your TimerInterval to 250.

  • edited April 2023

    @wim said:
    BTW - if you're trying to automate things with this by sending CC's, there are LFO apps that can work this way without coding.

    It's a good exercise for learning though. 👍🏼

    Yes i have midi lfo app that’s very good . I know it well and have been working with it for years, but unfortunately I had forgotten that Mosaic has a random lfo.

    In fact, I was very interested in your basic midi controller patch that you wrote and I was impressed by it and decided to add some things to it or write it from scratch myself, for example, for each control cc, a random with a different rate.

  • edited April 2023

    @wim said:

    @RajahP said:
    Is it very difficult to insert a ‘pitch’ knob on Simple Scaler? Please..

    I don't understand what you mean.

    @wim said:

    @RajahP said:
    Is it very difficult to insert a ‘pitch’ knob on Simple Scaler? Please..

    I don't understand what you mean.

    Something like this, where you can transpose a midi file’s key in simple Scaler?

  • wimwim
    edited April 2023

    @RajahP said:

    @wim said:

    @RajahP said:
    Is it very difficult to insert a ‘pitch’ knob on Simple Scaler? Please..

    I don't understand what you mean.

    @wim said:

    @RajahP said:
    Is it very difficult to insert a ‘pitch’ knob on Simple Scaler? Please..

    I don't understand what you mean.

    Something like this, where you can transpose a midi file’s key in simple Scaler?

    Sorry, I'd rather not add that level of complexity. Maybe you can talk someone else into adding it to a new version.

  • @wim said:

    @RajahP said:

    @wim said:

    @RajahP said:
    Is it very difficult to insert a ‘pitch’ knob on Simple Scaler? Please..

    I don't understand what you mean.

    @wim said:

    @RajahP said:
    Is it very difficult to insert a ‘pitch’ knob on Simple Scaler? Please..

    I don't understand what you mean.

    Something like this, where you can transpose a midi file’s key in simple Scaler?

    Sorry, I'd rather not add that level of complexity. Maybe you can talk someone else into adding it to a new version.

    Ok..

  • edited April 2023

    Why is there no syntax or command of the first note or the second note or the third note or
    the lowest note or the highest note From the chord that was performed via virtual keyboard in Mozaic , without needing to introduce chords into the mozaic, specially for when we are changing the chords in performance ?

    we should always introduce the chords and their types and their inversions to the mozaic so that the mozaic can recognize the first note, the second note or the third note in a chord.

    This issue can create many limitations for Coder.

  • You won’t like the answer but MIDI treats a chord as a series of notes. Mozaic processes each note as it comes in. It takes a programmer to decide what to do with those clusters of events that define a chord.

    There are many scripts that do this for you and folks to offer advice.

    I don’t expect to see a major update with new features because midi requires Mozaic to be very efficient code to never miss the timing on events.

    @_Ki has a script to filter out bass notes. And another to split chords across channels on output. @Wim has a script to turn a note into a chord.

    Solving these problems are what all coders using MIDI must solve. It’s a great puzzle box.

  • Yes, I know those patches well and I work with them.
    But the limitation that exists in many of these patches is that the user must determine the type of chord she/he wants to play each time by means of the buttons determined by the coder. And this is not useful and efficient for the user. And this causes a delay in the live performance.

    And that means many lines of code to write for coder.

    I may not have correctly understood what you mean by miss the timing on events.

    If you mean the latency in the execution of the commands, then why do the arpeggiator apps do not have this delay and they process the chords at a very high speed and recognize the notes based on the first, second , third or the lowest or highest .

    My main question is whether adding this option or the command I mentioned earlier is a big problem or a big challenge for Brambos to add it to mozaic ?

    Of course, I am asking this question based on the limitations of my knowledge.

  • @pejman I'm not sure if you're asking for a specific function, or just asking for more chord-related built-in functions in general. I'm sure there are many built-in functions that Bram could add if he wanted to. When I started doing JS scripting for Reaper, I had to create my own @OnMetroPulse function. There will always be times when a code library would be more convenient than writing your own code.

    I do think it would be useful if we built a repository dedicated to expanding upon Mozaic's "Modular Bits" category, by creating simple examples of commonly-used functions. Keeping track of the order in which currently-held notes have been entered could be part of that library.

    I think every Mozaic scripter has expressed interest at some point, in seeing a more powerful version of Mozaic. Bram has said that he didn't expect a community to form around creating complex scripts, and he doesn't have plans to create a sequel to Mozaic, for many reasons. One reason is that Apple does not like third-party "apps for creating apps" and they could remove Mozaic from the app store if it attracted enough attention. That is why there is no function called DrawButton with parameters x pos, y pos, x size, y size.

  • Yes, I mean a simple and specific function .
    When I play any chord or change it to any other chords on the keyboard, I need Mosaic to recognize the first note, the second note, the third note, etc., or the lowest note or the highest note, without the need to introduce the chord type in advance.

  • @pejman said:
    Yes, I know those patches well and I work with them.
    But the limitation that exists in many of these patches is that the user must determine the type of chord she/he wants to play each time by means of the buttons determined by the coder. And this is not useful and efficient for the user. And this causes a delay in the live performance.

    And that means many lines of code to write for coder.

    I may not have correctly understood what you mean by miss the timing on events.

    If you mean the latency in the execution of the commands, then why do the arpeggiator apps do not have this delay and they process the chords at a very high speed and recognize the notes based on the first, second , third or the lowest or highest .

    My main question is whether adding this option or the command I mentioned earlier is a big problem or a big challenge for Brambos to add it to mozaic ?

    Of course, I am asking this question based on the limitations of my knowledge.

    It is a big problem. You have to determine what makes a chord. If all the notes always arrived at the same time then you could say "ahh that's a C major 7". But let's say a human is playing the chords and the notes arrive at different times maybe I play E and G almost at the same time, but C is delayed just a little bit and B doesn't arrive until about a quarter of a second later. You can't know that is a C major 7 until all the notes arrive. You can't know that C is the lowest note until all the notes arrive. You can't determine which inversion until all the notes arrive, etc...

    So how long do you wait to determine this chord? In the case above you'd need to wait at least 250ms, but you have no way of knowing how long to wait. In the meantime you can't act on that chord. That kind of latency is unacceptable, and you would still have a level of uncertainty.

    And what happens with overlapping notes in chords? Let's say I play an A minor triad (A C E) then sustain the E into an inverted E minor chord (G B E). Again you have to wait to figure that out. Likewise you have to figure out what to do when someone is playing melodies over chords. How do you know what are chord changes and separate out melody from chords?

    The list of challenges goes on and on. These aren't things you can just boil down into nice tidy little functions.

  • wimwim
    edited April 2023

    @pejman said:
    Yes, I mean a simple and specific function .
    When I play any chord or change it to any other chords on the keyboard, I need Mosaic to recognize the first note, the second note, the third note, etc., or the lowest note or the highest note, without the need to introduce the chord type in advance.

    You can do some of those things without any need to recognize chords. It's possible to track the lowest note playing at any time, what is the highest. It's possible to keep track of the order that simultaneous playing notes came in.

  • edited April 2023

    @wim , Your explanation is completely logical and correct . Yes, I completely agree with what you said about the note delay in the human effect
    So, how is it that the arpeggiators accurately recognize the notes and the counting of the notes under any condition of playing the chords? Of course, I mean the arpeggiator program section, which allows us to determine the order of playing the notes ourselves.
    Of course, my need is only about chords, not playing notes along with chords.

  • Everything you want can be built from the Mozaic statements and have been already. The sad fact is that the sales of Mozaic and this issue related to Apple being a gatekeeper on programming tools mean the Mozaic we have will have to do. For more control the next step up would be the AudioKit Swift implementation. That raises the bar even higher for most of us. I will wonder if there are any python modules wrapped around the Apple core apis?

    I made a simple rhythm output script last night and loaded up 16 instances to design a drum track that sounded like a massive drum circle. I think I’ll keep adding features. Basically I have a knob for the note and a knob to select rhythm variations at this point.

  • edited April 2023

    AudioKit Swift???

Sign In or Register to comment.