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.

The Unofficial Mozaic User Helpline

24567

Comments

  • @Krupa said:

    Wee demo of the above...

    Gr8!

  • Cheers @espiegel123 , I’ve got a lot more functionality into it last night and today but feel like I should try and figure out how to label the knobs and pads so that it makes sense before putting another version on patchstorage, then again, I might just drop it on there later and let it be for a bit...

  • I am a confirmed Mozaic USER. I don’t know the first thing about coding, programming, etc.
    I am extremely grateful to those of you who do.

  • edited August 2020

    I’m generally useless with coding things but something about the real time feedback you get from this makes it so much easier to appreciate and get into...

  • @Krupa said:
    I’m generally useless with coding things but something about the real time feedback you get from this makes it so much easier to appreciate and get into...

    Mozaic is an excellent language to learn since it motivates you is ways "Hello World" text output can't.
    Most children's language emphasize graphics with some primative music options to make video games.

  • @McD said:

    @Krupa said:
    I’m generally useless with coding things but something about the real time feedback you get from this makes it so much easier to appreciate and get into...

    Mozaic is an excellent language to learn since it motivates you is ways "Hello World" text output can't.
    Most children's language emphasize graphics with some primative music options to make video games.

    Yeah it’s definitely changed my attitude to coding, processing was a similar experience but I never felt like I got to any sort of grips with it... btw, I just uploaded a much more functional version of the Dixie sequencer, it’s got most of the basic functions, needs a lot of interface work, and some back to basics on the actual sequencing, ratchet notes, rests, longer sequences I think, oh and the sketch interface I did for metroplex will almost certainly be in its future 😁

  • McDMcD
    edited August 2020

    @Krupa said:
    btw, I just uploaded a much more functional version of the Dixie sequencer,

    I'll check it out.

    UPDATE: Fun trash compactor sounds augmented with Impaktor tappings.

  • Very nice 👍 @McD

  • Quick question, is there a simple way to differentiate between pad tap and pad hold? I’m sure I’ve seen it in a script before but each one I’m looking at now is way more complex than I need (want 🤣) it to be... (I’m sure I’ve just seen a start timer on pad down and then test the length until pad up to get the answer)

  • _ki_ki
    edited August 2020

    @Krupa You can use my Pad and Shift Manager include snippet, documented on its own wiki page.

    These general snippets look a bit more complicated, but usage of them should be straigt forward and simple - or you read the snippet code, understand how its done and adapt the parts you need :)

  • Cheers @_ki i will (have to i guess 😬🤣) have a look - I have just implemented what I wanted using the lastpadbelocity but I think I want to do shift functions as well so destiny awaits... my Dixie sequencer is coming on , I’m kinda moving towards a more expressionistic approach with the sound editing and having the pads just determine shorter rhythms... a world of self complication and music making avoidance, though it’s at least producing ‘unique’ results 😂

    Thanks again sensei

  • wimwim
    edited August 2020

    @Krupa - Dead simple example:

    @OnLoad
      FillArray downStart,0,16
      pressTime = 250
    @End
    
    @OnPadDown
      downStart[LastPad] = SystemTime
    @End
    
    @OnPadUp
      pad = LastPad
      if SystemTime - downStart[pad] < pressTime
        Log {Short tap pad }, pad
      else
        Log {Long tap pad }, pad
      endif
    @End
    
  • Nice and pinpointed 👍🏼 And it handles multiple, simultaneous pads as well.

    Can i add that to the tips & tricks wiki page ?

  • @wim said:
    @Krupa - Dead simple example:

    @OnLoad
      FillArray downStart,0,16
      pressTime = 250
    @End
    
    @OnPadDown
      downStart[LastPad] = SystemTime
    @End
    
    @OnPadUp
      pad = LastPad
      if SystemTime - downStart[pad] < pressTime
        Log {Short tap pad }, pad
      else
        Log {Long tap pad }, pad
      endif
    @End
    

    Ooo that is good, my tiny mind can comprehend it 😊

    That might do all I need, for the shift as well, thanks!

  • wimwim
    edited August 2020

    @_ki said:
    Nice and pinpointed 👍🏼 And it handles multiple, simultaneous pads as well.

    Can i add that to the tips & tricks wiki page ?

    Sure. Thanks for the good word - means a lot coming from the Master. B)

    I was pleased to see it handled multi-touch as well.

  • wimwim
    edited August 2020

    I wish we had @OnKnobTouch and @OnKnobRelease as well. That would make for some much more efficient code and open up some interesting doors.

  • Added to Mozaic Tips & Tricks, i also added the straigt forward shift button variant of the code.

  • They both werk a treat, nice one lads 👍

  • edited August 2020

    Erk, I think I’ve just got out of my depth and the sequencer script is just a bit too big and silly to ask for help on - somehow got to a point where something is writing zeros into my arrays and I can’t find it 🤣😭

    After sleep, found a NASA level error, my renaming of variables for consistency had led to one instance being seqCs instead of csSeq so what I was seeing as an array being rewritten was actually just me seeing the wrong array being filled and the actual array never changin from zeros 😂😆🙄

    Happy days, I can continue to lose myself in this madness...

  • The github version is the current source ? What variable gets corrupted ? There are no inter variable references (pointers) so the problem can only occur on a line containing the var.

  • Hello, operator, you know that trick with the tap hold on pads and shift, is there an easy way to add double tap to that? 😂

    It’s just, I’ve run out of ways to add functions to my script, and otherwise I think it’ll be time to learn that full framework I’m so scared of 😬

    Also, if anyone knows how to add ratcheting to notes as well, want to add some variety to the rhythms...

  • I suspect that double-tap detection needs a running timer. Perhaps i find some time later in the evening to do a minimal example - or maybe @wim already has something in his sleeves :)

  • @Krupa said:
    Hello, operator, you know that trick with the tap hold on pads and shift, is there an easy way to add double tap to that? 😂

    It’s just, I’ve run out of ways to add functions to my script, and otherwise I think it’ll be time to learn that full framework I’m so scared of 😬

    Also, if anyone knows how to add ratcheting to notes as well, want to add some variety to the rhythms...

    It might be easier to make one of the PAD's a "Next Page" option to expose additional functions and have a "Back Page" PAD to toggle between 2 pages of PAD's or loop through
    a series of functions like @_ki does. You can also save the PAD and just teach the user to use SHIFT to access multiple pages of GUI's and not limit yourself to just PAD's but mix pages of Knobs, PAD's and those X-Y widgets. It's a lot easier than adding "double tap"
    timers, I would imagine (which means I wrote a multi-page app and have never used timers so they are hard AF until I do get into it).

  • wimwim
    edited August 2020

    @_ki said:
    I suspect that double-tap detection needs a running timer. Perhaps i find some time later in the evening to do a minimal example - or maybe @wim already has something in his sleeves :)

    I'm not sure how reliable this is. It's simpler when not trying to handle multiple pads but I kinda committed myself to that road with the last example. :D

    @OnLoad
      FillArray downStart,0,16
      FillArray downEnd,0,16
      FillArray taps,0,16
      pressTime = 300
      maxTaps = 3
      SetTimerInterval 10
      StartTimer
      ShowLayout 2
    @End
    
    @OnPadDown
      downStart[LastPad] = SystemTime
    @End
    
    @OnPadUp
      pad = LastPad
      downEnd[pad] = SystemTime
    
      if downEnd[pad] - downStart[pad] < pressTime
        if taps[pad] < maxTaps
          Inc taps[pad]
        else
          Log {Pad }, pad, {: tap ignored (too many taps) }
        endif
      else
        taps[pad] = 0
        Log {Pad }, pad, {: long-press} 
      endif
    @End
    
    @OnTimer
      if (not Unassigned pad)
        if SystemTime - downEnd[pad] >= pressTime and (taps[pad] > 0)
         Log {Pad }, pad, {: }, taps[pad], { taps}
          taps[pad] = 0
        endif
      endif
    @End
    
  • @wim said:

    @_ki said:
    I suspect that double-tap detection needs a running timer. Perhaps i find some time later in the evening to do a minimal example - or maybe @wim already has something in his sleeves :)

    Yep. No timers needed. I'll dust off some code from an earlier project in a bit ...

    👊🤟 thanks and anytime, I worked on this too late last night and then couldn’t sleep for imagining arrays filled with -1 😆

    And cheers @McD , I’ve already got a couple of layouts on the go, and another planned, hopefully I’ll be able to fit this functionality into the step sequencer page and maybe even rationalise the other functions a bit more on the way...

  • @Krupa said:

    @wim said:

    @_ki said:
    I suspect that double-tap detection needs a running timer. Perhaps i find some time later in the evening to do a minimal example - or maybe @wim already has something in his sleeves :)

    Yep. No timers needed. I'll dust off some code from an earlier project in a bit ...

    👊🤟 thanks and anytime, I worked on this too late last night and then couldn’t sleep for imagining arrays filled with -1 😆

    And cheers @McD , I’ve already got a couple of layouts on the go, and another planned, hopefully I’ll be able to fit this functionality into the step sequencer page and maybe even rationalise the other functions a bit more on the way...

    Sorry - I misremembered and you beat my edit. Timer is needed or you can't know when the tapping has stopped.

  • @wim said:

    @Krupa said:

    @wim said:

    @_ki said:
    I suspect that double-tap detection needs a running timer. Perhaps i find some time later in the evening to do a minimal example - or maybe @wim already has something in his sleeves :)

    Yep. No timers needed. I'll dust off some code from an earlier project in a bit ...

    👊🤟 thanks and anytime, I worked on this too late last night and then couldn’t sleep for imagining arrays filled with -1 😆

    And cheers @McD , I’ve already got a couple of layouts on the go, and another planned, hopefully I’ll be able to fit this functionality into the step sequencer page and maybe even rationalise the other functions a bit more on the way...

    Sorry - I misremembered and you beat my edit. Timer is needed or you can't know when the tapping has stopped.

    Ah fair enough, I might be able to achieve it with a second hold on a selected pad at a push, hopefully people read log messages as that’s where I’m putting this sort of feedback for now...

  • wimwim
    edited August 2020

    Adding a timer isn't that bad. See example above. It seems to mostly work except for maybe when you do a bunch of rapid tap combinations on a bunch of pads. I'm sure it could be made bullet-proof, but the coffee hasn't started to kick in yet here. Needs a pro like @_ki to give it a look.

  • @wim said:
    Adding a timer isn't that bad. See example above. It seems to mostly work except for maybe when you do a bunch of rapid tap combinations on a bunch of pads. I'm sure it could be made bullet-proof, but the coffee hasn't started to kick in yet here. Needs a pro like @_ki to give it a look.

    Ah cheers, I didn’t see the edit, I’ll try and get my head round it in a bit and see if I can make it work with the tap/hold bit you so kindly helped with the other day :)

    Ta!

  • @Krupa said:

    @wim said:
    Adding a timer isn't that bad. See example above. It seems to mostly work except for maybe when you do a bunch of rapid tap combinations on a bunch of pads. I'm sure it could be made bullet-proof, but the coffee hasn't started to kick in yet here. Needs a pro like @_ki to give it a look.

    Ah cheers, I didn’t see the edit, I’ll try and get my head round it in a bit and see if I can make it work with the tap/hold bit you so kindly helped with the other day :)

    Ta!

    Tap-hold is still there in the example. It just adds detecting multiple taps.

Sign In or Register to comment.