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 Help Line

If you need help figuring something out or debugging a problem, let's discuss it here rather than in the main Mozaic thread.

«13456716

Comments

  • Hello, dear @Spiegel,
    I am glad to meet you here. You thought very well that you created this page.
    This is how you made @McD lose 100 dollars.😂.

  • I am ready to continue solving the issue.
    Do you mean two different places and two different arrays ( if pad = x and if knob = x ) ?

  • @pejman

    From my last post in the other thread (https://forum.audiob.us/discussion/comment/1201622/#Comment_1201622)

    you will need to be able to look at your script and be able to identify where in the script you store knob 5’s value.

    >

    If you do that, there is a next question: will that variable change if I tap pad 1 and turn knob 5.

    >

    If that seems like a hard question, let me know where you are stuck in figuring it out.

    Let me refine what I said to potentially move things along a little without confusing you.

    Questions to answer. Do these in order. If you get stuck at any point or don’t know how to proceed, let us know.

    Question 1: when pad 0 is active and you turn knob 5, where does that value get stored. Please provide the variable name and the procedure (or procedures) where the variable’s value changes.

    Question 2: when pad 1 is active and you turn knob 5, where does that value get stored. Please provide the variable name and the procedure (or procedures) where the variable’s value changes.

    Task:

    • add a log line that prints out the pad number AND the values of both the variables identified in questions 1 & 2 whenever a pad is tapped.

    NOTE: in this context , I consider different slots in the same array as different variables. So “myArray[10]” and “ myArray[11]” would be considered different variables.

    Please repost the script with your response so that this thread is self-contained .

  • @pejman said:
    This is how you made @McD lose 100 dollars.😂.

    But I can add!
    94 pages on the old thread and 1 here so the current number is holding at 95.

    I loose when your script makes you happy in less than 5 more pages.

    Carry on with the mentoring. I’d love to see the current version and try it out.

  • edited May 2023

    Hi @espiegel123 , sorry for late.

    Unfortunately, I still couldn't answer your two questions. I think it would be very informative for me if you solve the script yourself, because your questions are still confusing and vague for me.


    @OnLoad //for knob = 0 to 9 if Unassigned init init = YES gate = [57,57,57,57] swing = [0,0,0,0] p = LastPad ccgate = [1,6,11,16] ccswin = [2,7,12,17] ////for changable knobs for user kgate = [5] kswin = [6] padrevert = 0 padrev = 4 ColorPad 0, 5 endif Call @SetKnobPosition Call @SetKnobLabel //endfor LabelPads {TRACKS } LabelPad 0, {1️⃣} LabelPad 1, {2️⃣} LabelPad 2, {3️⃣} LabelPad 3, {4️⃣} @End @OnPadDown //Log {pad },p,{ paddown},{ befor} //Log {knob },knob,{ paddown},{ befor} p = LastPad //for knob = 0 to 9 Call @SetKnobPosition Call @SetKnobLabel //endfor //Log {pad },p,{ paddown},{ after} //Log {knob },knob,{ paddown},{ after} if LastPad >=0 and LastPad <=3 ColorPad padrevert, 0 ColorPad LastPad, 5 padrevert = LastPad if LastPad = 0 LabelKnobs {TRACK 1} elseif LastPad = 1 LabelKnobs {TRACK 2} elseif LastPad = 2 LabelKnobs {TRACK 3} elseif LastPad = 3 LabelKnobs {TRACK 4} endif endif @End @OnKnobChange knob = LastKnob value = GetKnobValue //Log {pad },p,{ knobchange},{ befor} //Log {knob },knob,{ knobchange},{ befor} //for p = 0 to 3 //p = LastPad gate = GetKnobValue kgate if LastKnob = kgate SendMIDICC 1, ccgate[p], gate //Log Round gate ,{ pad}, p,{ },knob elseif LastKnob = kswin SendMIDICC 1, ccswin[p], swin endif //endfor //Log {pad },p,{ knobchange},{ after} //Log {knob },knob,{ knobchange},{ after} Call @SetKnobPosition Call @SetKnobLabel @End @SetKnobPosition //Log {pad },p,{ setknobpos},{ befor} //Log {knob },knob,{ setknobpos},{ befor} //for p = 0 to 3 //p = LastPad //if knob = kgate gate = Round GetKnobValue kgate SetKnobValue kgate, gate ////[p] ////????? Log {setknobpos},Round gate,{pad },p,{knob },knob swin = GetKnobValue kswin SetKnobValue kswin, swin ////[p] ////????? //endif //endfor //Log {pad },p,{ setknobpos},{ after} //Log {knob },knob,{ setknobpos},{ after} @End @SetKnobLabel //Log {pad },p,{ setknoblab},{ befor} //Log {knob },knob,{ setknoblab},{ befor} //for p = 0 to 3 //p = LastPad gate = GetKnobValue kgate lgate = Round TranslateScale gate, 0,127,-100,100 LabelKnob kgate, {GATE}, { } ,lgate if LastKnob = kgate LabelKnobs {Track },p+1,{ GATE},{ },lgate endif swin = GetKnobValue kswin lswin = Round TranslateScale swin, 0,127,0,100 LabelKnob kswin, {SWING},{ } ,lswin if LastKnob = kswin LabelKnobs {CREAM },p+1,{ SWING},{ },lswin endif //endfor //Log {pad },p,{ setknoblab},{ after} //Log {knob },knob,{ setknoblab},{ after} @End

    !

  • @pejman : my solving the problem won't help you solve the problems. If question 1 seems puzzling, we need to help you understand something because it is an important basic thing.

    So, I'd like to guide you to figure it out yourself. Before we launch in, I suggest that you spend an hour so doing the Mozaic tutorials..and asking questions about anything that is unclear.

    Let's start with question 1:

    Question 1: when pad 0 is active and you turn knob 5, where does that value get stored. Please provide the variable name and the procedure (or procedures) where the variable’s value changes.

    Mozaic has one way of getting a knob's value: getKnobValue knobNumber

    storing a value means the same thing as "assign to a variable" or "store in a variable".

    Find all places in your script where getKnobValue is used to get the value of knob 5. Tell us what variables are used to store the value and also tell us where in your code getKnobValue is called.

    Let's stop there.

  • That’s tough love. You can give a man a fish and it feeds him for a day or you can teach a man to fish and he’ll quit his day job to drink by the river.

    Mozaic can be intoxicating.

  • @pejman : if after reading my question and looking at your code, you can't figure it out. I will give you part of the answer. But please do read the beginning of the Mozaic manual perform the Mozaic tutorials (again if you already did them..often i get understanding from repeating a tutorial after grapplomg woth a problem).

  • edited May 2023

    @espiegel123 , It is very strange that I have used ( GetKnobValue ) more than a hundred times in my training scripts and I know its exact meaning. I always thought of something much more complex and weird since you included ( pad ) in your question.

    @spiegel said: Find all places in your script where getKnobValue is used to get the value of knob 5. Tell us what variables are used to store the value and also tell us where in your code getKnobValue is called.

    @pejman : I think the ( gate )and ( LabelKnob ) variables store the values ​​of knob number 5.
    Gate is everywhere except @onload and @onpaddown

  • @pejman said:
    @espiegel123 , It is very strange that I have used ( GetKnobValue ) more than a hundred times in my training scripts and I know its exact meaning. I always thought of something much more complex and weird since you included ( pad ) in your question.

    The reason pad is in the question is that if I understand correctly, you want knob 5’s value to be saved and restored for each pad.

    Is my understanding correct?

    If it is, you need to store knob 5’s value in different variables depending on which pad was lasted touched.

    @spiegel said: Find all places in your script where getKnobValue is used to get the value of knob 5. Tell us what variables are used to store the value and also tell us where in your code getKnobValue is called.

    @pejman : I think the ( gate )and ( LabelKnob ) variables store the values ​​of knob number 5.
    Gate is everywhere except @onload and @onpaddown

    Gate is the variable that receives the value of knob 5. LabelKnobs is not a variable.

    You assign knob 5 to gate no matter what pad was last.

    Do you see the problem?

    Add a log line to your onPadDown handler to log the pad number and gate. Tap pad 0 and turn knob 5 then tap pad 1 and turn knob 5 then tap pad 0.

    Look at the log.

    Take a look at the script that worked.

    What variable or variables are used to store knob 5’s value?

  • edited May 2023

    Yes, I knew this from the beginning, that's why I was trying to assigning [P] (LastPad ) to gate or kgate. The code inside the script ; SetKnobValue kgate, gate ////[p] ////?????

    And I also knew that this should happen in that part of @Onknobchange as well

    I just didn't know where and how.

  • edited May 2023

    I have done this before. Of course, it works correctly. But Wim told me that there is no need for ( sgate ) and [p].




    @OnLoad //for knob = 0 to 9 if Unassigned init init = YES sgate = [57,57,57,57] swing = [0,0,0,0] p = LastPad ccgate = [1,6,11,16] ccswin = [2,7,12,17] ////for changable knobs for user kgate = 5 kswin = [6] padrevert = 0 padrev = 4 ColorPad 0, 5 endif Call @SetKnobPosition Call @SetKnobLabel //endfor LabelPads {TRACKS } LabelPad 0, {1️⃣} LabelPad 1, {2️⃣} LabelPad 2, {3️⃣} LabelPad 3, {4️⃣} @End @OnPadDown //Log {pad },p,{ paddown},{ befor} //Log {knob },knob,{ paddown},{ befor} p = LastPad //for knob = 0 to 9 gate = GetKnobValue kgate Call @SetKnobPosition Call @SetKnobLabel //endfor //Log {pad },p,{ paddown},{ after} //Log {knob },knob,{ paddown},{ after} if LastPad >=0 and LastPad <=3 ColorPad padrevert, 0 ColorPad LastPad, 5 padrevert = LastPad if LastPad = 0 LabelKnobs {TRACK 1} elseif LastPad = 1 LabelKnobs {TRACK 2} elseif LastPad = 2 LabelKnobs {TRACK 3} elseif LastPad = 3 LabelKnobs {TRACK 4} endif endif @End @OnKnobChange knob = LastKnob value = GetKnobValue //Log {pad },p,{ knobchange},{ befor} //Log {knob },knob,{ knobchange},{ befor} //for p = 0 to 3 //p = LastPad gate = GetKnobValue kgate if LastKnob = kgate sgate[p] = gate SendMIDICC 1, ccgate[p], gate //Log Round gate ,{ pad}, p,{ },knob elseif LastKnob = kswin SendMIDICC 1, ccswin[p], swin endif //endfor //Log {pad },p,{ knobchange},{ after} //Log {knob },knob,{ knobchange},{ after} Call @SetKnobPosition Call @SetKnobLabel @End @SetKnobPosition //Log {pad },p,{ setknobpos},{ befor} //Log {knob },knob,{ setknobpos},{ befor} //for p = 0 to 3 //p = LastPad //if knob = kgate gate = Round GetKnobValue kgate SetKnobValue kgate,sgate[p] ////????? Log {setknobpos},Round gate,{pad },p,{knob },knob swin = GetKnobValue kswin SetKnobValue kswin, swin ////[p] ////????? //endif //endfor //Log {pad },p,{ setknobpos},{ after} //Log {knob },knob,{ setknobpos},{ after} @End @SetKnobLabel //Log {pad },p,{ setknoblab},{ befor} //Log {knob },knob,{ setknoblab},{ befor} //for p = 0 to 3 //p = LastPad gate = GetKnobValue kgate lgate = Round TranslateScale gate, 0,127,-100,100 LabelKnob kgate, {GATE}, { } ,lgate if LastKnob = kgate LabelKnobs {Track },p+1,{ GATE},{ },lgate endif swin = GetKnobValue kswin lswin = Round TranslateScale swin, 0,127,0,100 LabelKnob kswin, {SWING},{ } ,lswin if LastKnob = kswin LabelKnobs {CREAM },p+1,{ SWING},{ },lswin endif //endfor //Log {pad },p,{ setknoblab},{ after} //Log {knob },knob,{ setknoblab},{ after} @End
  • @pejman said:
    Yes, I knew this from the beginning, that's why I was trying to assigning [P] (LastPad ) to gate or kgate. The code inside the script ; SetKnobValue kgate, gate ////[p] ////?????

    And I also knew that this should happen in that part of @Onknobchange as well

    I just didn't know where and how.

    I think you did not understand what wim was telling you. Let's not get side-tracked.

    Please take a look at the script that worked.

    What variable or variables are used to store knob 5’s value inthe script that you say works?

  • edited May 2023

    @spiegel said: I think you did not understand what wim was telling you. Let's not get side-tracked.

    @pejman, What did wim mean?

    In this script sgate variable.

  • @pejman said:
    @spiegel said: I think you did not understand what wim was telling you. Let's not get side-tracked.

    @pejman, What did wim mean?

    In this script sgate variable.

    Not quite. Think of different slots of an array as different variables. The script that works uses sgate[padnumber]? So , there is a different/variable for knob 5's value to be stored into depending on which pad was last tapped.

    In the script that doesn't work. The same variable is used no matter what pad was last tapped.

  • @espiegel123 said:

    @pejman said:
    @spiegel said: I think you did not understand what wim was telling you. Let's not get side-tracked.

    @pejman, What did wim mean?

    In this script sgate variable.

    Not quite. Think of different slots of an array as different variables. The script that works uses sgate[padnumber]? So , there is a different/variable for knob 5's value to be stored into depending on which pad was last tapped.

    Yes sgate[p].

    What do you mean by slots?

    In the script that doesn't work. The same variable is used no matter what pad was last tapped.

  • @pejman said:

    @espiegel123 said:

    @pejman said:
    @spiegel said: I think you did not understand what wim was telling you. Let's not get side-tracked.

    @pejman, What did wim mean?

    In this script sgate variable.

    Not quite. Think of different slots of an array as different variables. The script that works uses sgate[padnumber]? So , there is a different/variable for knob 5's value to be stored into depending on which pad was last tapped.

    Yes sgate[p].

    What do you mean by slots?

    In the script that doesn't work. The same variable is used no matter what pad was last tapped.

    An array is made up of individual 'slots' or addresses where you can store values. Each slot is a different place. In the script that works, the slot (or place or address) where a knob's value is stored depends on the last pad touched. In the script that doesn't work, knob 5's value is always stored in the same place.

    sgate[0] is a different slot/place/address from sgate[1]

    Do you see now why your broken script is broken?

    By the way, all variables in Mozaic are arrays.

    gate is the same as gate[0]

  • Thanks for explaining.

    Can you please tell me . What did wim mean?

    Because the thing that confused me a lot is how to modify the script if ( sgate ) or [p] is to be removed. Or what other alternative is there?

  • @pejman said:
    Thanks for explaining.

    Can you please tell me . What did wim mean?

    Because the thing that confused me a lot is how to modify the script if ( sgate ) or [p] is to be removed. Or what other alternative is there?

    Please post a link to that post.

  • edited May 2023

    I am willing to walk you through wim’s comments if you’d like, and it might be instructive, but you need to find the exact comment and quote it here.

    I don’t see anything about p or sgate there.

    Do you now understand why your current script doesn’t work?

    If so, explain why it doesn’t work and suggest how you might remedy the problem?

  • edited May 2023

    @spiegel I am willing to walk you through wim’s comments if you’d like, and it might be instructive, but you need to find the exact comment and quote it here.

    I prefer to get your help if I have any questions in this regard

    @espiegel123 , I don’t see anything about p or sgate there.

    I think I didn't find the post correctly

    Yes, because we had not addressed the values ​​of knob number 5 for each pad separately in the @onknobchange section via sgate[p].

  • @pejman said:
    @espiegel123 , I don’t see anything about p or sgate there.

    I think I didn't find the post correctly

    Yes, because we had not addressed the values ​​of knob number 5 for each pad separately in the @onknobchange section via sgate[p].

    Do you think you know how to solve it now?

  • @espiegel123 said:

    @pejman said:
    @espiegel123 , I don’t see anything about p or sgate there.

    I think I didn't find the post correctly

    Yes, because we had not addressed the values ​​of knob number 5 for each pad separately in the @onknobchange section via sgate[p].

    Do you think you know how to solve it now?

    Yes. As I said before, I was confused by a misunderstanding on my part regarding the wim comment, and I thought the script should be written differently.

  • When you have it solved, it might be worth talking about some things going on in the script and doing a bit of clean up that I hope will help you.

  • @espiegel123 said:
    When you have it solved, it might be worth talking about some things going on in the script and doing a bit of clean up that I hope will help you.

    What do you mean by clean up?

  • @pejman said:

    @espiegel123 said:
    When you have it solved, it might be worth talking about some things going on in the script and doing a bit of clean up that I hope will help you.

    What do you mean by clean up?

    In some of the versions of the scripts that you have posted, there have been lines of code that might be worth discussing. But that should wait till you have this working.

  • edited May 2023

    @espiegel123 said:

    @pejman said:

    @espiegel123 said:
    When you have it solved, it might be worth talking about some things going on in the script and doing a bit of clean up that I hope will help you.

    What do you mean by clean up?

    In some of the versions of the scripts that you have posted, there have been lines of code that might be worth discussing. But that should wait till you have this working.

    I would be very grateful if you could help me and give me the necessary explanations.

    Where do you think we should start?

  • @pejman said:

    @espiegel123 said:

    @pejman said:

    @espiegel123 said:
    When you have it solved, it might be worth talking about some things going on in the script and doing a bit of clean up that I hope will help you.

    What do you mean by clean up?

    In some of the versions of the scripts that you have posted, there have been lines of code that might be worth discussing. But that should wait till you have this working.

    I would be very grateful if you could help me and give me the necessary explanations.

    Where do you think we should start?

    After you have solved the problem , we are working on. When you have solved that post your script and mention remaining problems you need solved.

  • edited May 2023

    Do you mean to solve the remaining problems of the script that I am developing or to talk more about the same old script?

Sign In or Register to comment.