Loopy Pro: Create music, your way.

What is Loopy Pro?Loopy Pro is a powerful, flexible, and intuitive live looper, sampler, clip launcher and DAW for iPhone and iPad. At its core, it allows you to record and layer sounds in real-time to create complex musical arrangements. But it doesn’t stop there—Loopy Pro offers advanced tools to customize your workflow, build dynamic performance setups, and create a seamless connection between instruments, effects, and external gear.

Use it for live looping, sequencing, arranging, mixing, and much more. Whether you're a live performer, a producer, or just experimenting with sound, Loopy Pro helps you take control of your creative process.

Download on the App Store

Loopy Pro is your all-in-one musical toolkit. Try it for free today.

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

18586889091108

Comments

  • 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???

  • @pejman said:
    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.

    Because arpeggiators are just playing around with the notes you are playing on the keyboard not figuring out which chord you are playing. You can hold any notes down (even if they don’t form a real chord) and the arp will do its thing based on the settings like up, down etc.

  • wimwim
    edited April 2023

    @pejman said:
    @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.

    As I mentioned, in the following post, it is possible to track the lowest, highest, and the order of the notes that are held down at any time. My original response was to your mention of chords, and inversions, etc., which is way more challenging and involves the timing problems mentioned above.

    I put together a little bit of sample code that you may be able to adapt to your purposes.

    @Description
    Example routines to find the lowest and highest of simultaneously played notes (chords).
    Each time a note is pressed or released, the lowest note, highest note, and the order that
    the notes arrived is logged.
    @End
    
    @OnLoad
      noteCount = 0
      FillArray heldNotes,-1
      highest = -1
      lowest = -1
    @End
    
    @OnMidiNoteOn
      // Append new note to the heldNotes array
      heldNotes[noteCount] = MIDINote  
      Inc noteCount
      
      Log {Note-ON}
      Call @GetLowest
      Call @GetHighest
      Call @GetNoteOrder
    @End
    
    @OnMidiNoteOff
    
      // Pull the released note out of the heldNotes array 
      found = NO
      n = 0
      repeat
        if heldNotes[n] = MIDINote
          found = YES
        endif
        if found
          heldNotes[n] = heldNotes[n+1]
        endif
        Inc n
      until heldNotes[n] = -1 or n = 1024
      Dec NoteCount
      
      Log {Note-OFF}
      Call @GetLowest
      Call @GetHighest
      Call @GetNoteOrder
    @End
    
    @GetLowest
      lowest = heldNotes[0]
      if lowest <> - 1
        for l = 0 to (noteCount -1)
          if heldNotes[l] < lowest
            lowest = heldNotes[l]
          endif
        endfor
      endif
      
      if lowest = -1
        Log {Lowest: No notes are being held.}
      else
        Log {Lowest: }, (NoteName lowest,YES), { (}, lowest, {)}
      endif
    @End
    
    @GetHighest
      highest = heldNotes[0]
      if highest <> -1
        for h = 0 to (noteCount - 1)
          if heldNotes[h] > highest
            highest = heldNotes[h]
          endif
        endfor
      endif
      
      if highest = -1
        Log {Highest: No notes are being held.}
      else
        Log {Highest: }, (NoteName highest,YES), { (}, highest, {)}
      endif
    @End
    
    @GetNoteOrder
      if noteCount <> 0
        for o = 0 to noteCount - 1
          Log {Note }, o, {: }, (NoteName heldNotes[o],YES), { (}, heldNotes[o], {)}
        endfor
      else
        Log {Note Order: No notes are being held.}
      endif
    @End
    
  • Interesting, I was testing Mosaic this weekend, it is not really what I need for my music and as I was a dev I don’t want anymore do any coding I want to do music…. and forget Audiokit dev as it is not the most efficient way to do clean coding with stability issues.

    FAC do very good apps so why they release Mozaic very limited and borderline with Apple apps dev rules ? I can’t see any future for this app including to generate sales to cover dev cost.

    I love the work of FAC dev and some of their great iOS apps even if Mozaic doesn’t fit what I need. Hope some of you will have great fun with it.

  • wimwim
    edited April 2023

    @BerlinFx said:
    Interesting, I was testing Mosaic this weekend, it is not really what I need for my music and as I was a dev I don’t want anymore do any coding I want to do music…. and forget Audiokit dev as it is not the most efficient way to do clean coding with stability issues.

    FAC do very good apps so why they release Mozaic very limited and borderline with Apple apps dev rules ? I can’t see any future for this app including to generate sales to cover dev cost.

    I love the work of FAC dev and some of their great iOS apps even if Mozaic doesn’t fit what I need. Hope some of you will have great fun with it.

    FAC isn't the publisher of Mozaic. Bram Bos is the developer of Mozaic. FAC does mainly audio FX plugins and instruments. Mozaic deals with MIDI only, not sound. It's meant for enabling people to do things with MIDI that may not be available with existing apps.

  • McDMcD
    edited April 2023

    @pejman said:
    AudioKit Swift???

    Apple released the iPad “Swift Playgrounds” app that allows you to build apps without requiring a Mac to compile the app from source code. The AudioKit Pro folks then created a swift package of some of their code that can be imported into the Swift Playground. There are many videos teaching the required steps to install the environment and make simple apps. For example, the AudioKit folks made this one:

Sign In or Register to comment.