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!

15859616364102

Comments

  • @cian said:
    Are all the Mozaic plugins that people have written on Patch Storage? And is there a list of 'must have' scripts. I'm sure it's all in this thread, but unfortunately this thread is 60 pages long...

    Probably not ‘all’ scripts, but the ones that are discussed in this thread are on Patchstorage.

  • @nuno_agogo
    Gr8T!!
    looking f>w>d and staying tuned
    @Rodolfo helped me with the Midiflow patch.
    It would so much more convenient having it in Mozaic.

  • @brambos said:

    @cian said:
    Are all the Mozaic plugins that people have written on Patch Storage? And is there a list of 'must have' scripts. I'm sure it's all in this thread, but unfortunately this thread is 60 pages long...

    Probably not ‘all’ scripts, but the ones that are discussed in this thread are on Patchstorage.

    Questions like this pop up every now and then. It is probably a good idea to update the first post on page 1 of this thread with a link to the wiki that @_ki mentioned.

  • @bleep said:

    @brambos said:

    @cian said:
    Are all the Mozaic plugins that people have written on Patch Storage? And is there a list of 'must have' scripts. I'm sure it's all in this thread, but unfortunately this thread is 60 pages long...

    Probably not ‘all’ scripts, but the ones that are discussed in this thread are on Patchstorage.

    Questions like this pop up every now and then. It is probably a good idea to update the first post on page 1 of this thread with a link to the wiki that @_ki mentioned.

    Yes, that would be great, but I can't edit the initial post anymore (that's only possible for a short time after posting :# )

  • edited January 2020

    Oh, I thought that limit was for comments only, and that the first post could always be modified by the OP. Oh well.

  • @brambos said:

    @cian said:
    Are all the Mozaic plugins that people have written on Patch Storage? And is there a list of 'must have' scripts. I'm sure it's all in this thread, but unfortunately this thread is 60 pages long...

    Probably not ‘all’ scripts, but the ones that are discussed in this thread are on Patchstorage.

    not All what's on this forum is on Patchstorage. thats how I discovered a very usefull script few days and now I'm hoping the person who came up with it approves the ne mod so it will be avaialble for the everyone.

  • @Tamir_Raz_Mataz said:
    not All what's on this forum is on Patchstorage. thats how I discovered a very usefull script few days and now I'm hoping the person who came up with it approves the ne mod so it will be avaialble for the everyone.

    I normally carefully monitor this thread and expected that the 'CC Switcher' by @mbncp would also be published on PatchStorage, but he didn't. Everyone is free to publish or not. Since the user last logged into the forum in august, i now created a wiki page for the script and linked it below the main script list.

    .

    Regarding changes to that script: During our discussion on the PatchStorage discord, i added some customization/modifactions of that script for you, but i didn't write to the author about these changes as they were only minor. I now added the modded script to the wiki page below the original one, so that he and others can pick up the changes.

  • @horsetrainer said:
    I played with the script that Wim wrote, that plays a strum after playing four individual notes. I tried very hard to figure out a way to edit a delay into win's code so after the 4th note was pressed, there would be a delay, and then the strum would start. I tried adding in a timer function, but I just couldn't get it to work.

    You'll be surprised at how easy that is to do compared to how you may have thought it needed to be done. Just one line needs to be added, and two lines changed a little bit. For clarity, I've left out all but the lines to add/change. The rest of the script should be left exactly as-is

    @OnLoad
    
      // Keep the rest of the lines from the existing script, but add the one below that
      // creates a variable to store the amount of delay that you want to add before triggering 
      // after the fourth note.
    
      init_delay = 250 //one-quarter second. Adjust to taste
    
    @End
    
    @OnMidiNoteOn
    
      // ... keep everything as-is, but modify these two lines to add the initial delay
    
          //look up the note and send a note-on at velocity 100
          SendMidiNoteOn channel, notes[a], 100, ((a * strumtime) + init_delay)
    
          //Send a note-off after a quarter note delay
          SendMidiNoteOff channel, notes[a], 0, (Quarternote + (a * strumtime) + init_delay)
    
        /...
    
    @End
    

    My heads really is stuck in thinking like the BASIC I learned back in the 1980's.

    I like the idea of line numbers, and having goto commands to steer the direction of the code to different areas of a program.

    Yeh, you really have to get beyond that, or forget about Mozaic and just about every modern programming language. ;)

    Here's a simple question.... Can I put a delay event into mosaic that essentially pauses the script for a desired length of time? In the old basic days I'd use a for/next loop to add a delay. Does Mosaic have a function that you can use to tell the script to stop and wait for some number number of milliseconds, and then continue on?

    You can't pause a script. It will always be running. You can do things with timers that accomplish something like that, but in most cases you really don't need to because Bram takes care of it for you deep inside the app. In the example of the SendMidiNoteOn above, the part after the last comma is where you tell Mozaic how long to wait before sending the note.

    You need this to be the case. If you told the script to pause and do nothing between hitting the fourth note and sending out the first note, then you'd miss anything else that happened during that time. So, if you hit more notes during that pause, they would be lost.

    I thought about providing some examples of how to write code to sort of emulate a "wait" like what you're thinking of, but decided against it. It's more practical to adapt your thinking to how Mozaic works than to try to fight it to make it work like a 40 year old programming language.

  • @_ki said:
    @cian You find a categorized list of all Mozaic scripts of all scripts in the wiki. There are some scripts only published in forums threada, but i‘ll try to copy them to own wiki pages and link them.

    Thank You!

  • McDMcD
    edited January 2020

    I think this discussion has covered:

    1. How to store incoming MIDI Note On/Off data to an array. Only the notes were saved but channel, velocity and relative timing data could be saved in additional array variables.

    2. How to output those saved notes and implemented some changes to channel, velocity and add an optional timing delay.

    For complex timing scripts like Loopers we should ask for some more basic examples
    of tutorial code to help get an understanding of those Functions.

    For example, some have asked for a script to play repeated notes (8th, 16th, etc) as long as a note is held down or until a new note arrives (like a sample and hold feature). It would be simple to show that use case and provide an example of how BPM-based timing events are implemented.

    There's great value in reading code but reading a finished work like @_Ki's products are like approaching ancient greek with a greek dictionary. It's a large puzzle to unravel the mechanisms at work when "event types" are all coded in distinct blocks.

    Understanding how the data is stored and then moved between blocks as the fundamental programming technique is the key to mastery.

    New programmers should ask for simple examples (and potentially learn it's not simple) and we can all learn more together.

    Let's brainstorm a list of simple Mozaic uses:

    1. Sample and Hold of Repeated Notes
    2. A MIDI echo
    3. A MIDI quantizer to swing triplets
    4. A Motif player that accepts 4 notes and repeats them with random transpositions 4 times.

    It would be helpful to start with a basic Mozaic template that has the most common event types:

    @Description
      // Document the version number and what the script is designed to do
      This is a basic Mozaic Template for beginner Mozaic Programmers to understand the
      Range of Mozaic event types and their uses.
    @End
    
    @OnLoad
      // Commands that run at start-up
      Log {Hello World}
      // Logs text shows up in the Logging window - it's essential for debugging code
      Call @MyCustomEvent
      // It's at the end of the event list
    @End
    
    @OnMidiInput  
       // This runs for any MIDI type of event (CC's, Notes, PC's, Sysex)
    @End
    
    @OnMidiNoteOn
      // Commands that run immediately for *every* MIDI Note incoming 
      // @Brambos has be very clever to insure no Notes are ever missed
      // Miss a "Note Off" and that's bad... that's your job to fix, by the way.
      // There's example code for a MIDI Panic.
    @End
    
    @OnNewBeat
       // Detect the DAW's BPM metronome events (@Brambos handles that for you)
       // Do something every beat
    @End
    
    
    @OnKnobChange 
       // The user touched a knob in the GUI
    @End
    
    @OnPadDown
       // User touched a Pad
    @End
    
    @OnXYChange
      // User moved on the XY GUI
    @End
    
    @OnShiftDown
      // FlashPad (Random 0, 15)
    @End
    
    @OnShiftUp
      // FlashUserLed
    @End
    
    @OnSysex
      // Incoming sysex probably from some hardware device
    @End
    
    @OnTimer
      // A way for the user to start a script clock and make internal events
    @End
    
    @MyCustomEvent
      // Callable event for avoiding writing similar Commands inside the other event blocks
    @End
    

    You can delete any of these events in your scripts that are unused to make move about easier and reading better.

    If you load this script in Mozaic you should see "Hello World" in the Logging
    View. Find it. You will need it later to debug your code by outputting what a variable actually is holding. Debugging faulty code is really hard. That's why I add a few lines and test. Repeat. I made it to 1400 lines and it works but there are "design" flaws.

    It's hard to design before you know how the pieces fit together.

  • @_ki said:

    @Tamir_Raz_Mataz said:
    not All what's on this forum is on Patchstorage. thats how I discovered a very usefull script few days and now I'm hoping the person who came up with it approves the ne mod so it will be avaialble for the everyone.

    I normally carefully monitor this thread and expected that the 'CC Switcher' by @mbncp would also be published on PatchStorage, but he didn't. Everyone is free to publish or not. Since the user last logged into the forum in august, i now created a wiki page for the script and linked it below the main script list.

    .

    Regarding changes to that script: During our discussion on the PatchStorage discord, i added some customization/modifactions of that script for you, but i didn't write to the author about these changes as they were only minor. I now added the modded script to the wiki page below the original one, so that he and others can pick up the changes.

    Your a * @ki
    That’s so beneficial for the community
    Many 🙏🏻 thanks

  • @Tamir_Raz_Mataz said:
    Your a * @ki

    Wow. It took me a minute to interpret this sentence.

    @_ki's *is* a very generous programmer with his time and knowledge.
    He's also really open to input and has made many special scripts and fixed
    a lot of poorly design code for me and others. In the process he taught me (and others
    I'm sure) a lot about making more professional scripts. He seems to like teaching
    and mentoring.

    Give him aninteresting technical challenge and just wait. He usually gets around to
    considering a good technical challenge.

    He offered to create Mozaic programming training but I suspect that's not the best use of his time. It's probably better that he comments and basic training gets made by one of the folks that create YouTube content and have to master the content and interpret it for the beginner. Still... how large is the potential audience. Raise your hands.

    The secret of teaching beginners is to make it fun and easy to succeed. Most of us have been trained to hate anything that looks like Math so there's the real challenge. Getting 5 Stars for training on something that's hard to master.

    For me the joy of making something work and then embellishing it with yet another detail
    is pure joy. Programming is ideal for puzzle lovers that like the reward of a solution.

    Maybe young programmers will open the door to making music apps by getting the Mozaic app and later moving up to Xcode to script in Swift and then to onto Objective C. A YouTube series could open that door. "Making Music Apps with the Mozaic App".

    If we write simple examples, then @daveypoo, @TheAudioDabbler Audio or you could make the instructional videos to share the process.

    The great programmers should continue to make great apps:

    Like a web site where you type in Mozaic code and load it and feed it MIDI events from an onscreen GUI.

    The really hard puzzles.

  • Yeah, I should probably do a video extolling the virtues of Mozaic at some point...

    I'll add it to the list.

  • @McD said:
    I think this discussion has covered:

    1. How to store incoming MIDI Note On/Off data to an array. Only the notes were saved but channel, velocity and relative timing data could be saved in additional array variables.

    2. How to output those saved notes and implemented some changes to channel, velocity and add an optional timing delay.

    For complex timing scripts like Loopers we should ask for some more basic examples
    of tutorial code to help get an understanding of those Functions.

    For example, some have asked for a script to play repeated notes (8th, 16th, etc) as long as a note is held down or until a new note arrives (like a sample and hold feature). It would be simple to show that use case and provide an example of how BPM-based timing events are implemented.

    There's great value in reading code but reading a finished work like @_Ki's products are like approaching ancient greek with a greek dictionary. It's a large puzzle to unravel the mechanisms at work when "event types" are all coded in distinct blocks.

    Understanding how the data is stored and then moved between blocks as the fundamental programming technique is the key to mastery.

    New programmers should ask for simple examples (and potentially learn it's not simple) and we can all learn more together.

    Let's brainstorm a list of simple Mozaic uses:

    1. Sample and Hold of Repeated Notes
    2. A MIDI echo
    3. A MIDI quantizer to swing triplets
    4. A Motif player that accepts 4 notes and repeats them with random transpositions 4 times.

    It would be helpful to start with a basic Mozaic template that has the most common event types:

    @Description
      // Document the version number and what the script is designed to do
      This is a basic Mozaic Template for beginner Mozaic Programmers to understand the
      Range of Mozaic event types and their uses.
    @End
    
    @OnLoad
      // Commands that run at start-up
      Log {Hello World}
      // Logs text shows up in the Logging window - it's essential for debugging code
      Call @MyCustomEvent
      // It's at the end of the event list
    @End
    
    @OnMidiInput  
       // This runs for any MIDI type of event (CC's, Notes, PC's, Sysex)
    @End
    
    @OnMidiNoteOn
      // Commands that run immediately for *every* MIDI Note incoming 
      // @Brambos has be very clever to insure no Notes are ever missed
      // Miss a "Note Off" and that's bad... that's your job to fix, by the way.
      // There's example code for a MIDI Panic.
    @End
    
    @OnNewBeat
       // Detect the DAW's BPM metronome events (@Brambos handles that for you)
       // Do something every beat
    @End
    
    
    @OnKnobChange 
       // The user touched a knob in the GUI
    @End
    
    @OnPadDown
       // User touched a Pad
    @End
    
    @OnXYChange
      // User moved on the XY GUI
    @End
    
    @OnShiftDown
      // FlashPad (Random 0, 15)
    @End
    
    @OnShiftUp
      // FlashUserLed
    @End
    
    @OnSysex
      // Incoming sysex probably from some hardware device
    @End
    
    @OnTimer
      // A way for the user to start a script clock and make internal events
    @End
    
    @MyCustomEvent
      // Callable event for avoiding writing similar Commands inside the other event blocks
    @End
    

    You can delete any of these events in your scripts that are unused to make move about easier and reading better.

    If you load this script in Mozaic you should see "Hello World" in the Logging
    View. Find it. You will need it later to debug your code by outputting what a variable actually is holding. Debugging faulty code is really hard. That's why I add a few lines and test. Repeat. I made it to 1400 lines and it works but there are "design" flaws.

    It's hard to design before you know how the pieces fit together.

    There are "tutorial" scripts bundled with Mozaic. People new to programming will find it useful to go through them and have the manual at hand to look up any commands/syntax they don't understand.

  • @espiegel123 said:
    There are "tutorial" scripts bundled with Mozaic.

    There are so many learning styles, I think this is worth pursuing. It's not something you need
    but I think many would. Just cutting text out of a PDF and pasting it into Mosaic is challenging for many music makers. So, short examples anyone can type are helpful to get someone started. Templates can be loaded into PatchStorage to help quickly give a starting point to make something custom for learning purposes.

    RTFM is how the knowledgeable tell the newbies to do the groundwork before polluting a
    conversation with basic questions and making the regulars answer the same questions over and over. Many Forum's just create FAQ's and point to them. We have a Wiki and can point to that.

    In my experience, RTFM tends to work for getting extra details. Books that teach one small idea in a conversational style and take the reader from ignorance to a general understanding can be useful. Books like "The C Programming Language" really helped me
    tinker with a language well beyond my skill level at a time when I could have been taught to just give up. Pointers are maddening and I opted for "Learning Perl" and had a lot more fun.

    But I'm sure many will find the manual and follow it to a general understanding of the language. It's very good. I find the code examples to be very useful but rarely ready to
    run since Bram prefers to just expose an example that fits to that particular topic but
    would need a lot of supporting commands to perform.

    So I think there's an underserved market between the Manual and the excellent finished scripts available on PatchStorage.

    Anyway... thank you for your opinion. If you want I'll take this discussion to a new tread that you can ignore.

  • McDMcD
    edited January 2020

    @Daveypoo said:
    Yeah, I should probably do a video extolling the virtues of Mozaic at some point...

    I'll add it to the list.

    It would be very cool if you sampled the top scripts on PatchStorage and demo'ed your Top 3 to show why even a non-programmer should own this app as a MIDI effect. If you could show how easy it is to download and import "ready to run" scripts and load them @Brambos would get another batch of sales to justify the effort making this amazing product.

  • edited January 2020

    Hello, I'm looking for an app to remap notes in a particular way, and am wondering if any existing Mozaic script will do it. I'd also like the ability for CCs to be mapped to specific notes, if I have a physical controller that's set up for CCs only.

    I have this idea for bass pedals, using some wooden blocks mounted to a standard midi keyboard and pressed with the foot. I have done this in Mac OS land but I'd like to try in iOS.

    The keyboard input notes might be C0, G#0, D1, A#1 etc, and I might want them mapped to E1, F1, F#1, G1 etc. Most of the times it would be a chromatic scale, but it might not be (hence why an AU would be best as it would be saved with the project). The reason the input notes are spread apart is so my feet have space to hit my 'keys'.

    The other thing that would be handy is to only have the selected input notes being passed through. The reason for this is that I can mount blocks on a group of 3 keys, for physical stability. It would be best if all notes were set to be ignored, except for 1 of each group of 3, which would be sent, and transposed individually.

    Does a script exist already that could do this? Maybe some other app would be better, but the ones I've heard (midiflow in particular) aren't AU.

    Thanks for any help :)

  • edited January 2020

    @wim said:

    @horsetrainer said:
    I played with the script that Wim wrote, that plays a strum after playing four individual notes. I tried very hard to figure out a way to edit a delay into win's code so after the 4th note was pressed, there would be a delay, and then the strum would start. I tried adding in a timer function, but I just couldn't get it to work.

    You'll be surprised at how easy that is to do compared to how you may have thought it needed to be done. Just one line needs to be added, and two lines changed a little bit. For clarity, I've left out all but the lines to add/change. The rest of the script should be left exactly as-is

    @OnLoad
    
      // Keep the rest of the lines from the existing script, but add the one below that
      // creates a variable to store the amount of delay that you want to add before triggering 
      // after the fourth note.
    
      init_delay = 250 //one-quarter second. Adjust to taste
    
    @End
    
    @OnMidiNoteOn
    
      // ... keep everything as-is, but modify these two lines to add the initial delay
    
          //look up the note and send a note-on at velocity 100
          SendMidiNoteOn channel, notes[a], 100, ((a * strumtime) + init_delay)
    
          //Send a note-off after a quarter note delay
          SendMidiNoteOff channel, notes[a], 0, (Quarternote + (a * strumtime) + init_delay)
    
        /...
    
    @End
    

    My heads really is stuck in thinking like the BASIC I learned back in the 1980's.

    I like the idea of line numbers, and having goto commands to steer the direction of the code to different areas of a program.

    Yeh, you really have to get beyond that, or forget about Mozaic and just about every modern programming language. ;)

    Here's a simple question.... Can I put a delay event into mosaic that essentially pauses the script for a desired length of time? In the old basic days I'd use a for/next loop to add a delay. Does Mosaic have a function that you can use to tell the script to stop and wait for some number number of milliseconds, and then continue on?

    You can't pause a script. It will always be running. You can do things with timers that accomplish something like that, but in most cases you really don't need to because Bram takes care of it for you deep inside the app. In the example of the SendMidiNoteOn above, the part after the last comma is where you tell Mozaic how long to wait before sending the note.

    You need this to be the case. If you told the script to pause and do nothing between hitting the fourth note and sending out the first note, then you'd miss anything else that happened during that time. So, if you hit more notes during that pause, they would be lost.

    I thought about providing some examples of how to write code to sort of emulate a "wait" like what you're thinking of, but decided against it. It's more practical to adapt your thinking to how Mozaic works than to try to fight it to make it work like a 40 year old programming language.

    I'm going to keep trying. Your examples are helping a lot. Thank you for that.

    One thing that is inhibiting my ability to learn... I can't easily select code using touch on my iPad, when Mosaic is in it's "code programing mode". This happens with any code long enough to require scrolling to view it all....

    When I touch a segment of code to select it, then try to drag the "handles" at the ends of the selection, the entire page of code scrolls downwards uncontrollably.

    The only way I found to stop the unwanted scrolling is to use a finger of my other hand to tap, and hold on the right of the screen, to prevent the screen from "uncontrollably drifting".

    I tried Mozaic on to separate iPads, one running iOS12, the other iOS13. They both have this unwanted page drifting behavior.

    Is there a way to make it stop doing this? It's making it very hard for me to learn how to program in Mozaic.

    My other request (that might also be generally helpful to others).... concerns "Patchstorage"......
    I think it would be very helpful to view scripts from "Patchstorage" on a desktop computer (without downloading the patches). It would be nice to be able to click on a "Preview Code" link that shows the code in the browser. Or even a PDF file would be helpful.

    I think it's much easier to learn and study using my desktop (Mac) computer. I don't want to download files to my Mac.

    On the desktop I can have the Mozaic Manual PDF open, and a web browser window at the same time. It's much easer to read the code in the browser. Search the Mozaic Manual for specific commands. And have a text editor open to take notes. My iPad screen is too small for efficient learning, compared to my Desktop Mac.

    I think being able to read program code from a web browser, would be extremely helpful as a learning feature.

    :)

  • wimwim
    edited January 2020

    @horsetrainer said:

    @wim said:

    One thing that is inhibiting my ability to learn... I can't easily select code using touch on my iPad, when Mosaic is in it's "code programing mode". This happens with any code long enough to require scrolling to view it all....

    When I touch a segment of code to select it, then try to drag the "handles" at the ends of the selection, the entire page of code scrolls downwards uncontrollably.

    The only way I found to stop the unwanted scrolling is to use a finger of my other hand to tap, and hold on the right of the screen, to prevent the screen from "uncontrollably drifting".

    I tried Mozaic on to separate iPads, one running iOS12, the other iOS13. They both have this unwanted page drifting behavior.

    Is there a way to make it stop doing this? It's making it very hard for me to learn how to program in Mozaic.

    Sorry, I don’t experience that, so can’t comment on how to avoid it. All I can say is a getting a bluetooth keyboard is the single best thing you can do for yourself if you’re going to do any coding. They can be had pretty cheap.

    My other request (that might also be generally helpful to others).... concerns "Patchstorage"......
    I think it would be very helpful to view scripts from "Patchstorage" on a desktop computer (without downloading the patches). It would be nice to be able to click on a "Preview Code" link that shows the code in the browser. Or even a PDF file would be helpful.

    I think it's much easier to learn and study using my desktop (Mac) computer. I don't want to download files to my Mac.

    On the desktop I can have the Mozaic Manual PDF open, and a web browser window at the same time. It's much easer to read the code in the browser. Search the Mozaic Manual for specific commands. And have a text editor open to take notes. My iPad screen is too small for efficient learning, compared to my Desktop Mac.

    I think being able to read program code from a web browser, would be extremely helpful as a learning feature.

    That’s beyond the control of anyone here. Patchstorage is run by a third party and as you’ve probably noticed, hosts many different kinds of files. They don’t have any facility that tries to turn those files into readable text, and it wouldn’t be practical to do so since some of them are sound files, etc. that it wouldn’t be practical to try to convert.

    A Mozaic script file is sort of a combination of binary and text. The beginning is binary, containing the state of all the variables. The rest is the text of the script.

    If script writers all posted a separate text file with a .txt extension, or posted a link to a straight text file somewhere else, then probably your browser would render it as text. But getting people to do that consistently is unlikely.

    Seriously though ... a BT keyboard is the only way to go for scripting.

  • edited January 2020

    @wim said:
    Sorry, I don’t experience that, so can’t comment on how to avoid it. All I can say is a getting a bluetooth keyboard is the single best thing you can do for yourself if you’re going to do any coding. They can be had pretty cheap.

    May I ask which model iPad you are using?
    I'm using 5th and 6th Gen regular iPads.

    The wonky out of control scrolling does not always happen on the first code selection.

    Sometimes it's after a few edits. But once it starts it doesn't stop. I'm unable to do any single finger editing in Mozaic on any scripts that require scrolling to view in their entirety.

    Might someone else see if they can replicate the unwanted scrolling on their regular "iPad"?

    All you have to do is load one of the longer preset scripts, enter the code editor, then start selecting various random parts of the code, and use the right and left drag handles to make the selected area larger and smaller. Do that in several location within the code. Move your finger up and down while holding a selection.

    On my iPad once the erratic scrolling starts, it's near imposable to select, copy, and edit any code.

    It will be very apparent when/if it starts doing it.

  • @horsetrainer said:

    @wim said:
    Sorry, I don’t experience that, so can’t comment on how to avoid it. All I can say is a getting a bluetooth keyboard is the single best thing you can do for yourself if you’re going to do any coding. They can be had pretty cheap.

    May I ask which model iPad you are using?
    I'm using 5th and 6th Gen regular iPads.

    The wonky out of control scrolling does not always happen on the first code selection.

    Sometimes it's after a few edits. But once it starts it doesn't stop. I'm unable to do any single finger editing in Mozaic on any scripts that require scrolling to view in their entirety.

    Might someone else see if they can replicate the unwanted scrolling on their regular "iPad"?

    All you have to do is load one of the longer preset scripts, enter the code editor, then start selecting various random parts of the code, and use the right and left drag handles to make the selected area larger and smaller. Do that in several location within the code. Move your finger up and down while holding a selection.

    On my iPad once the erratic scrolling starts, it's near imposable to select, copy, and edit any code.

    It will be very apparent when/if it starts doing it.

    I’m on an iPad Air 2.
    What host are you running Mozaic in? Is the window maximized? Or are you in the standalone.

    I’ll do a little fiddling about, but really, since I wouldn’t ever bother trying to work with code with the onscreen keyboard, I don’t think I’ll put much effort into it honestly.

  • @wim said:

    @horsetrainer said:

    @wim said:
    Sorry, I don’t experience that, so can’t comment on how to avoid it. All I can say is a getting a bluetooth keyboard is the single best thing you can do for yourself if you’re going to do any coding. They can be had pretty cheap.

    May I ask which model iPad you are using?
    I'm using 5th and 6th Gen regular iPads.

    The wonky out of control scrolling does not always happen on the first code selection.

    Sometimes it's after a few edits. But once it starts it doesn't stop. I'm unable to do any single finger editing in Mozaic on any scripts that require scrolling to view in their entirety.

    Might someone else see if they can replicate the unwanted scrolling on their regular "iPad"?

    All you have to do is load one of the longer preset scripts, enter the code editor, then start selecting various random parts of the code, and use the right and left drag handles to make the selected area larger and smaller. Do that in several location within the code. Move your finger up and down while holding a selection.

    On my iPad once the erratic scrolling starts, it's near imposable to select, copy, and edit any code.

    It will be very apparent when/if it starts doing it.

    I’m on an iPad Air 2.
    What host are you running Mozaic in? Is the window maximized? Or are you in the standalone.

    I’ll do a little fiddling about, but really, since I wouldn’t ever bother trying to work with code with the onscreen keyboard, I don’t think I’ll put much effort into it honestly.

    Maximizing the window solved the issue!

    I'm running Mozaic in AUM.

    That's a relief...
    I was getting into learning this App, and then editor was bugging out.

    Glad to have a solution.

    Thanks again.

  • wimwim
    edited January 2020

    Just checking ... you also know to use the maximize button when you want a full-screen view of the code, without the interface in the way, right?

    Glad the scrolling issue is sorted. B)

  • @SimonSomeone said:
    Hello, I'm looking for an app to remap notes in a particular way, and am wondering if any existing Mozaic script will do it. I'd also like the ability for CCs to be mapped to specific notes, if I have a physical controller that's set up for CCs only.

    I have this idea for bass pedals, using some wooden blocks mounted to a standard midi keyboard and pressed with the foot. I have done this in Mac OS land but I'd like to try in iOS.

    The keyboard input notes might be C0, G#0, D1, A#1 etc, and I might want them mapped to E1, F1, F#1, G1 etc. Most of the times it would be a chromatic scale, but it might not be (hence why an AU would be best as it would be saved with the project). The reason the input notes are spread apart is so my feet have space to hit my 'keys'.

    The other thing that would be handy is to only have the selected input notes being passed through. The reason for this is that I can mount blocks on a group of 3 keys, for physical stability. It would be best if all notes were set to be ignored, except for 1 of each group of 3, which would be sent, and transposed individually.

    Does a script exist already that could do this? Maybe some other app would be better, but the ones I've heard (midiflow in particular) aren't AU.

    Thanks for any help :)

    I plan to add these features to my most recent script, Microtonal Maker. Anyone is also welcome to use my code. Currently, you can remap notes, but it's designed for sending pitch bend messages to a rotation of synths, and I have yet to include a way to bypass the rotation feature, but I will add that. The CC + note remapping are planned to be a separate version of the script from the PB + note remapping. I hadn't thought about allowing the user to disable individual notes, but it's a good idea. I can message you or tag you in a reply when I update it. I'll probably release the new script some time this month, but it may be February.

    You can see what the interface looks like here: https://patchstorage.com/microtonal-maker/

    The top right pad will say Knobs: CC, and the bottom number of each note's pad will be the CC value, instead of pitch bend. The two numbers above that indicate the note input and output.

  • @wim said:
    Just checking ... you also know to use the maximize button when you want a full-screen view of the code, without the interface in the way, right?

    Glad the scrolling issue is sorted. B)

    In the beginning I was only loading Mozaic then tapping the code button. Selecting text was fine until I began experimenting with longer scripts.

    To maximize, I double tap on the Mozaic header and the window expands. The only time I see any "maximize button", is if the GUI is displayed while the window is maximized.

    I hear you about the bluetooth keyboard. But I do not type much on my iPads. One is for music and watching TV, the other is for drawing Apps. I do all my "real" writing on my desktop Mac.

    Mozaic is the first time I've had any need to write anything more than a google search term in an iPad.

    If I can get enthusiastic about Mozaic, and actually learn to program it, that will be when I get the bluetooth keyboard.

    For now at lease, I can continue to experiment with programing using the on-screen iPad keyboard when Mozaic is maximized.

  • McDMcD
    edited January 2020

    @horsetrainer said:
    I hear you about the bluetooth keyboard. But I do not type much on my iPads. One is for music and watching TV, the other is for drawing Apps. I do all my "real" writing on my desktop Mac.

    There are a lot of us that edit long scripts on our Macs and copy the text into Mozaic. The coolest tip I saw was using a Mac to IOS shared clipboard method called "Universal Clipboard":

    https://support.apple.com/en-us/HT209460

    There's a thread covering a lot of these Editing Workflow issues:

    https://forum.audiob.us/discussion/36521/mozaic-what-is-your-workflow-when-it-comes-to-complex-scripts

    You can select text on the Mac and then on the iPad paste the clipboard text into Mozaic.

    Some people use Notes and by saving the script in a Note it's made available in the iPad Notes program too.

    I just copy the whole script on the Mac and paste a whole new instance of that script right into Mozaic for test purposes. Only small edits are done on the iPad in Mozaic.

    But I did go the bluetooth keyboard route and now I covet the new Apple Smart keyboard that functions as a cover on the newer models. With IOS 13 I can also use a Bluetooth Mouse
    which can be handy if you move between Mac and iPad a lot to avoid touching the Mac's screen and wondering why the app is so slow to respond.
    The mouse comes in handy if you intend to make videos of you iPad for YouTube purposes and want a real cursor to show focus on the apps.

    @_Ki made a code completion and syntax highlighter add on for the iPad Textastic editor. There's a Textastic for Mac and it also performs the syntax highlighting but fails to code complete, I think.

    I've grown to like the iPad iVim editor because I have years of do search/replace and text navigating in Vi. Command-A performs a Select All and Control C and V handle the iPad keyboards cut and paste functions so you get pretty fast. The mouse buttons aid in rapid app switching. I velcro everything in place on a lap desk.

    The best thing for me would be Mozaic for Mac's. I just going to keep pushing that hoping @Brambos will take my money soon. The port is probably held up by the way Bram codes his GUI's and he doesn't want to deal with it.

  • _ki_ki
    edited January 2020

    @horsetrainer I also experience :) the wild jumpy behavior when moving the end or start of a text selection in the Mozaic editor via touch. Its really annoying since one not only has to unselect by double tapping somewhere unselected, but one also has to navigate the script again, as you might have been moved up or down several ‚pages‘. Thats why i also prefer using a BT keyboard.
    I will try the workaround that @wim or you suggested - lets hope using fullscreen AU mode solves the issue.

    Another thing which i didn‘t investigate yet is, that i sometime only can see the editor’s cursor blinking, but can’t type text. It happened both with BT keyboard and the internal one. Inserting via clipboard works, also navigating with cursor keys. To get the editor working again, i have to ‚upload‘ the script and change back to the editor. Just switching between GUI and editor doesn‘t fix it.
    I think it usually happens, if i have several Mozaic AU editor windows open, but as i said didn‘t really investigate (as i like to finish typing and not start debugging something else again).
    This ‚misbehavior‘ started happing about one or two month ago.

  • edited January 2020

    @_ki said:
    @horsetrainer I also experience :) the wild jumpy behavior when moving the end or start of a text selection in the Mozaic editor via touch. Its really annoying since one not only has to unselect by double tapping somewhere unselected, but one also has to navigate the script again, as you might have been moved up or down several ‚pages‘.

    Yes, I'm aware of it. It's something in the iOS text component that's triggering it under (yet unknown) conditions. I haven't been able to suppress it yet.

    Building a text-editor from scratch is a project in itself, so I'm sticking with Apple's own components, but the iOS edit field has already been giving me a lot of headaches (excessive memory usage, scrolling behind the keyboard, etc.). What makes it difficult is that using components in AU extensions seems to add weird quirks (e.g. because the component doesn't know where on the screen it lives), and there is no knowledge about that available anywhere on the internet because virtually nobody has used them this way.

  • @brambos said:

    @_ki said:
    @horsetrainer I also experience :) the wild jumpy behavior when moving the end or start of a text selection in the Mozaic editor via touch. Its really annoying since one not only has to unselect by double tapping somewhere unselected, but one also has to navigate the script again, as you might have been moved up or down several ‚pages‘.

    Yes, I'm aware of it. It's something in the iOS text component that's triggering it under (yet unknown) conditions. I haven't been able to suppress it yet.

    Building a text-editor from scratch is a project in itself, so I'm sticking with Apple's own components, but the iOS edit field has already been giving me a lot of headaches (excessive memory usage, scrolling behind the keyboard, etc.). What makes it difficult is that using components in AU extensions seems to add weird quirks (e.g. because the component doesn't know where on the screen it lives), and there is no knowledge about that available anywhere on the internet because virtually nobody has used them this way.

    I'm up to 1400 lines in my first script and editing is now the least of my concerns. In the beginning I was very frustrated but @_Ki and others showed me ways to use any editor on Mac, PC or iPad to develop and maintain code.

    Cut and Paste is your friend, friends. Paste text into the code window and edit elsewhere.

    Let Bram write more cool apps and not write a text editor.

  • wimwim
    edited January 2020

    I use Mozaic exclusively in Audiobus when developing. I suspect that is the reason the editor is more stable for me than others. Never had a single issue with it. Couple of outright Audiobus crashes, but remembering to save at least every 15 minutes seems to cure that. (Memory leak or something?)

Sign In or Register to comment.