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 StoreLoopy Pro is your all-in-one musical toolkit. Try it for free today.
Comments
Thanks a lot for all these comments. Very useful indeed! 😀
I did not know that AUv3 parameters could accept 14-bit “CC” input… it probably accepts 14-bit Pitch Bends which is the standard. And Surface Builder probably sends 14-bit pitch bends and 7-bit CC’s. CC’s can jump all over the 0-127 space. In the process to push MIDI into a more controllable world we have seen Pitch bend gets applied on a per channel basis to make Midi Polyphonic Expression (MPE) work.
FYI: I just forwarded some Pitch Bends into VividShaper and it isn’t implemented.
Not sure what you're trying to do, but sounds like you're trying to get finer control of VividShaper from outside by sending 14 bit CC's. Even if not technically supported, pretty sure you could rig up something using, e.g., the XY pad in Mozaic to send 14 bits of info. Essentially, you'd be using the two axes of the xy control to give finer control over a single modulation target in VividShaper. So you'd be sending two CC messages, each a different cc#, and one of them you would multiply by 128 within Vividshaper and add to the other, before (possibly transforming and) applying to a VividShaper modulation target. The code in Mozaic might look like this (I assume you could do something similar with xy pads in Surface Builder, which is probably better b/c I expect it lets you put as many xy pads as you want on a page):
Yes, it's a hack.
McD: AUv3 parameters aren’t midi. Some hosts will translate midi events to AUv3 parameter changes. The AU doesn’t do it. The host does.
4Pockets Surface Builder has support for sending 14-bit CCs.
Ah, I wasn't clear about what @McD was doing (and remain so).
Still, do synths generally have support for accepting 14-bit cc's? If not (which is most likely) then you could use something like above hack on your external controller to disassemble the 14-bit value into 2 separate CC's (divide by 128 for most significant 127, and 'modulo 128' for less significant 127) before sending two separate cc's to the synth. Because you have programmatic control over things in VividShaper you could then reassemble into the single 14-bit value, but I assume not in most other synths.
Most synths and hosts don't support 14-bit cc's.
Slightly OT, but here's a quick demo script for sending 14-bit CC's from Mozaic knobs or faders
I don't understand why anybody would want to do it that way. It sends 14-bit values, but with only 7-bit resolution given that you're translating a single knob of 0 to 127 to 14 bits, i.e, still only 128 discrete 14-bit values are possible. You can, on the other hand, send 14-bit values with actual 14-bit resolution if you use xy pad (or two knobs in combination, or one knob if you have separate coarse[msb] and fine[lsb] modes -- maybe with shift key activation) as your control. Am I misunderstanding something?
No. I'm not using two knobs at the same time. I'm converting the decimal part of a single knob value into the 2nd 7-bit value. Mozaic knobs have a resolution of 0.0001. They have more than just integer values.
There could be some loss of finger motion range vs. the XY pad but the benefit is being able to send more 14-bit values than just the XY pad.
I tried to use surface builder to send pitch bend via a rotary knob to something yesterday in aum, but noticed surface builder only appeared as a destination, not a source. Thoughts?
I can't reproduce that here and haven't heard it reported elsewhere.
Reinstall time maybe, cheers!
Hi a. > @Gavinski said:
reboot and try again. post screenshots of the session and midi matrix if it happens again.
This is what I have been laboring over. Sending CC’s that change the Envelope and Harmonic values while displaying those values in a TEXT output. It’s working. Change CC values to match your controller. The Last_Harmonic has great change on this Sine Wave input adding extra highs and complexity.
Is it possible that you were trying to connect the Standalone app? When I load the standalone app I only see the "Surface Builder In" destination in AUM.
You should be running Surface Builder as an AUv3 in AUM. If for some reason you do want to use the standalone app, you'll need to set the output port mappings to AUM, then route from AUM Destination to whatever you want to control.
Sweet! I tested it with this (image) and it works like a charm, the automated values needs to be polished to be more correct for it's purpose respectively, but as a start - great!! Big thanks McD!
I found this while looking for something completely different, a Lua Script - Plugin/instrument maker for desktop. Maybe can be of some interest for @VividSynths , @McD and others getting into Lua as a music making coding environment. I mean for getting ideas, seeing solutions, formulas whatnot
OSAR :: Protoplug
Oh god no, I never use auv3s standalone if I can help it!
Maybe try running it standalone once and then try the AUv3 again. Some apps need that in order to fully complete their installations.
Why would you not seed it using os.time() or os.clock()? These values will constantly increment, albeit rounded to seconds, so wouldn't be random per (pseudo buffer) call
@VividSynths if you were to include LuaSocket in the build then users could have access to socket.gettime()*1000
That would mean every call to that would generate a different seed and thus changing random results
https://stackoverflow.com/questions/463101/lua-current-time-in-milliseconds
Good idea for random seeding using system time.
I hacked out a test on an iPhone… try that sometime!
Couple other possibilities (I haven't tried for myself as I don't actually have vividsynth yet) -
If wave[x] is VSNoise, after that wouldn't reading wave[x]'s amplitude value report back ostensibly random values that could be used to seed other random values? IE noise is not periodic, so every single call to check on wave[x] should return different values each and every time right? Thus a VSNoise can itself be a seed source, or no?
also, you have tick already right? so once per call you have a different counter to use as a seed.
Or, given @VividSynths that the synth itself is work at the sample level and constantly dealing in milliseconds, just add an elapsed milliseconds getter to the vividAPI? getVividTime()? that said,, your counter solution just works anyway. every time it's called its incremented so sorted.
Typing out loud
Did that, will try a reboot tho I think that was one of the things I already tried, let's see!
Ok great!
(i will get it myself by next month)
I hope you can… It will be fun to have a group discovering together and sharing results.
There are a million synths but only a couple that expose sound design in this programmatic way.
The neural net feature is the best innovation for me in this app. I love synths where the waves morph with time and it’s a great tool to define those subtle changes in sound and keep it fresh. All the work has been done building the grid of possible waves and you just need to provide x and y numbers between -1 and 1 to get a wave. Provide a series of xy pairs with small distance from the previous and the waves change right before your eyes in the graphical viewer and you can hear it morph.
There’s simple math provided that turns circles around in the grid serving up x,y pairs but so many ways yet to explore.
Obviously, a joy stick interface (or touch XY Pad) Preset would be useful to navigate the grid for various sounds.
With 8 oscillators there will be complex combinations to overlay.
Ahhh, thanks! I can't recall ever using the decimal part of Mozaic knob values and forgot that they weren't integers.
Sorry, I missed this comment. Yes, I definitely need to implement this. While notein tells the current note, pitchbend will tell the current bending (as a floating point value). Then, I'm considering to let the default note[x] array (telling the note for each oscillator) be notein+pitchbend by default. This will actually allow us to use pitchbend for something else, e.g. controlling filters.
I just released version 1.3 of VividShaper for both iOS and macOS. It comes with a new delay effect:
I am currently working on version 1.4, which will focus on MIDI, but I will most likely make an update with pitch bend first.
Version 1.4 will include a new function called VSPlay(), where you can play notes as a string of characters when using VividShaper as a MIDI effect plugin. it will be very similar to the PLAY() function in Commodore 128 BASIC:
https://www.commodore.ca/manuals/128_system_guide/sect-07b.htm#7.3.2.3
It will work something like this:
VSPlay("O3QCEGEGED",start,midichannel)
where start is the start position of the first note counted as number of beats. This means you will be able to use VividShaper as a MIDI-sequencer. Well, actually, you can already do that with the MIDI functions it already has, but these are a bit more difficult to master.
I saw this update show up and was pleasantly surprised. I hope to carve out some time to get back to tinkering with it again.