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.

VIVIDSHAPER by Lars Forsberg | Walkthrough, Review, Demo & Giveaway (See PInned YT Comment!)

2»

Comments

  • @Svetlovska said:
    Definitely needs a BitWiz style random code generator for non programming types like me. I really like BitWiz, and have never typed a line of code into it myself.

    Have asked the dev for a randomiser feature. He said:

    "Patch randomiser is difficult but I’m working on a template where the user can control the synth using parameters or cc settings (more like a normal synth, by choosing waveforms etc using messages)."

  • @Gavinski said:

    @Svetlovska said:
    Definitely needs a BitWiz style random code generator for non programming types like me. I really like BitWiz, and have never typed a line of code into it myself.

    Have asked the dev for a randomiser feature. He said:

    "Patch randomiser is difficult but I’m working on a template where the user can control the synth using parameters or cc settings (more like a normal synth, by choosing waveforms etc using messages)."

    Yes, in principle you can create a template that behaves like a normal synth. Take for instance the analogue part of the Korg minilogue xd. It has two oscillators, each with its own waveform (triangle, square, etc). They can be detuned, they can have a common filter, be synced and ring modulated (an upcoming feature for VividShaper), and each patch has an AMP ADSR envelope, an envelope that can target either pitch or cutoff-frequency for the filter, and finally an LFO that can target the pitch, the shape of the waveform, or the cutoff frequency.

    A patch can easily be created to define some local variables controlling these settings through parameters or CC. That won't give you a randomiser, but its a start. Maybe it would be possible to have a button that randomises the parameters values. For a template like this, you could get different sounds every time you randomise them, albeit within the limitation of what the patch is capable of doing of course.

  • edited July 2023

    @VividSynths : Hey, thanks for the feedback, and explanation! That’s great to hear :) I don’t know if the LUA situation is at all comparable with BitWiz, another code driven device, but that just had a randomiser which you could rinse and repeat with until something good happened.

    The template idea sounds like a great start. Maybe even a set of them - one optimised to create random percussion sounds, one for ‘traditional’ analog synth sounds, one for FM, one for generating wavetables, drones… whatever. The more ‘difficult’ a synth is to understand directly for a sound design noob like me, the more I appreciate a randomiser, (e.g. ID700, a great example.)

  • @VividSynths said:

    @Gavinski said:

    @Svetlovska said:
    Definitely needs a BitWiz style random code generator for non programming types like me. I really like BitWiz, and have never typed a line of code into it myself.

    Have asked the dev for a randomiser feature. He said:

    "Patch randomiser is difficult but I’m working on a template where the user can control the synth using parameters or cc settings (more like a normal synth, by choosing waveforms etc using messages)."

    Yes, in principle you can create a template that behaves like a normal synth. Take for instance the analogue part of the Korg minilogue xd. It has two oscillators, each with its own waveform (triangle, square, etc). They can be detuned, they can have a common filter, be synced and ring modulated (an upcoming feature for VividShaper), and each patch has an AMP ADSR envelope, an envelope that can target either pitch or cutoff-frequency for the filter, and finally an LFO that can target the pitch, the shape of the waveform, or the cutoff frequency.

    A patch can easily be created to define some local variables controlling these settings through parameters or CC. That won't give you a randomiser, but its a start. Maybe it would be possible to have a button that randomises the parameters values. For a template like this, you could get different sounds every time you randomise them, albeit within the limitation of what the patch is capable of doing of course.

    That could be a good start at least! Especially if you first design more presets that people could then just randomise. More presets would definitely attract more non coders to the app anyway

  • edited July 2023

    @Svetlovska said:
    @VividSynths : Hey, thanks for the feedback, and explanation! That’s great to hear :) I don’t know if the LUA situation is at all comparable with BitWiz, another code driven device, but that just had a randomiser which you could rinse and repeat with until something good happened.

    BitWiz is a bit simpler in the coding language. Having a randomiser for Lua would be very complicated. It can actually be done by ChatGPT and I have used ChatGPT for some of the factory presets. But I can't integrate ChatGPT into VividShaper of course. For this to work, you actually need GPT4 and it still doesn't make everything correct all the time but it can still be very helpful. Look at this discussion:

  • Wow. Definitely above my pay grade. :)

  • Would it be outside the realms of possibility to convert existing wavetables to code? I’ve got single wave forms some I sampled from homemade gear that would be interesting to morph between as they’re often a bit sketchy/unpredictable and glitchy when I make longer tables…

  • @Krupa said:
    Would it be outside the realms of possibility to convert existing wavetables to code? I’ve got single wave forms some I sampled from homemade gear that would be interesting to morph between as they’re often a bit sketchy/unpredictable and glitchy when I make longer tables…

    Depends on the length of the waves. VividShaper has 128 samples in each wave, which is very short but making it longer requires too much CPU power since it has to be run through Lua.

  • @VividSynths said:

    @Krupa said:
    Would it be outside the realms of possibility to convert existing wavetables to code? I’ve got single wave forms some I sampled from homemade gear that would be interesting to morph between as they’re often a bit sketchy/unpredictable and glitchy when I make longer tables…

    Depends on the length of the waves. VividShaper has 128 samples in each wave, which is very short but making it longer requires too much CPU power since it has to be run through Lua.

    Interesting, I think most of the ones I’ve sing so far are 256 samples, but I could do some at 128… how would it work converting them to code? I suppose it would just be an array of numbers or something…

  • @Krupa said:
    Interesting, I think most of the ones I’ve sing so far are 256 samples, but I could do some at 128… how would it work converting them to code? I suppose it would just be an array of numbers or something…

    Yes, you can just write

    wave[1] = { 0.3, 0.4, -0.6, … }

    and make sure it is 128 elements long.

    The values are between -1 and 1.

  • @VividSynths said:

    @Krupa said:
    Interesting, I think most of the ones I’ve sing so far are 256 samples, but I could do some at 128… how would it work converting them to code? I suppose it would just be an array of numbers or something…

    Yes, you can just write

    wave[1] = { 0.3, 0.4, -0.6, … }

    and make sure it is 128 elements long.

    The values are between -1 and 1.

    🙏👍🙌

  • Not sure what the hell I've done but I kept building on some of @McD code. Maybe someone can keep building on it. Some filter addition maybe. Comment (--) out text at the bottom.

    -- Patch: LocalVariables McD Square
    -- Edit These Local Variables - Then Hit Parse

    generators = 3

    local widthSq = gatetimeon + math.random(1,2)
    local attack = 0
    local decay = 0.9
    local sustain = 0.75
    local release = 2
    local volume_initial = .125
    local starting_harmonic = 4
    local last_harmonic = 16

    -- Patch: Modified Additive Harmonics Evolution
    wave[1] = VSNoise(55367)

    -- Try different values of numHarmonics to add or reduce overtone complexity
    local numHarmonics = 8
    local time = gatetimeon + gatetimeoff

    for i = starting_harmonic, last_harmonic do
    local frequency = i
    local harmonic = VSSquare(frequency, 0, widthSq)
    local weight = (gatetimeon+gatetimeoff)/(i)
    wave[1] = VSAdd(wave[1], VSMul(harmonic, weight))
    end

    wave[1] = VSNorm(wave[1],1,1)
    vol[1] = velocity*VSADSRE(attack, decay, sustain, release, volume_initial, gatetimeon, gatetimeoff)

    text = string.format("%.2f", widthSq)

    updatefreq = 2048
    gvol = 0.5

  • McDMcD
    edited July 2023

    @Pxlhg said:
    Not sure what the hell I've done but I kept building on some of @McD code. Maybe someone can keep building on it. Some filter addition maybe. Comment (--) out text at the bottom.

    -- Patch: LocalVariables McD Square
    -- Edit These Local Variables - Then Hit Parse

    generators = 3

    local widthSq = gatetimeon + math.random(1,2)
    local attack = 0
    local decay = 0.9
    local sustain = 0.75
    local release = 2
    local volume_initial = .125
    local starting_harmonic = 4
    local last_harmonic = 16

    -- Patch: Modified Additive Harmonics Evolution
    wave[1] = VSNoise(55367)

    -- Try different values of numHarmonics to add or reduce overtone complexity
    local numHarmonics = 8
    local time = gatetimeon + gatetimeoff

    for i = starting_harmonic, last_harmonic do
    local frequency = i
    local harmonic = VSSquare(frequency, 0, widthSq)
    local weight = (gatetimeon+gatetimeoff)/(i)
    wave[1] = VSAdd(wave[1], VSMul(harmonic, weight))
    end

    wave[1] = VSNorm(wave[1],1,1)
    vol[1] = velocity*VSADSRE(attack, decay, sustain, release, volume_initial, gatetimeon, gatetimeoff)

    text = string.format("%.2f", widthSq)

    updatefreq = 2048
    gvol = 0.5

    Nice. Looking more carefully at your code I can see that you load a Noise sample and then add “Squarewave” harmonics from 4 to 16. I think VSNorm normalizes the wave to avoid spikes that
    Clip.

    Definitely a good time to read through the doc of VividShaper reference manual:

    https://www.vividsynths.com/doku.php?id=vividshaper_reference_manual

  • edited July 2023

    @McD said:
    Nice. Looking more carefully at your code I can see that you load a Noise sample and then add “Squarewave” harmonics from 4 to 16. I think VSNorm normalizes the wave to avoid spikes that
    Clip.

    Definitely a good time to read through the doc of VividShaper reference manual:

    https://www.vividsynths.com/doku.php?id=vividshaper_reference_manual

    I have glanced over it a few times but you know, I'm not a coder but as I said somewhere earlier, I have done a lot of copy/paste, manipulating numbers and variables without really understanding what might happen. Sometimes it works, mostly not 😳 😂 I have started many attempts to learn various coding languages but soon after the "Hello World" phase, I lose .. in lack of better word: interest. Maybe I just don't have the brain for it. (I can do html/css but I don't know if that counts 😊) Thanks for the pointers though, I will follow on the development of this synth and play around some more.

  • OK, reading through this thread multiple times…I have to get this now. Could be a lot of fun even before making any music with it.

  • VividShaper has just been updated to v1.2 and it is a major update in many aspects. I intend to release new factory patches on Fridays. A new feature makes it possible to update the factory patches online from the plugin. So check out for "Patch Friday".

  • A release thread without a link to the app is a bit sad.

    https://apps.apple.com/ca/app/vividshaper/id1668979409

  • @VividSynths said:
    VividShaper has just been updated to v1.2 and it is a major update in many aspects. I intend to release new factory patches on Fridays. A new feature makes it possible to update the factory patches online from the plugin. So check out for "Patch Friday".

    Would there be a way to take a bunch of my own wavetables and create an alternative latent space model?

  • @Krupa said:

    @VividSynths said:
    VividShaper has just been updated to v1.2 and it is a major update in many aspects. I intend to release new factory patches on Fridays. A new feature makes it possible to update the factory patches online from the plugin. So check out for "Patch Friday".

    Would there be a way to take a bunch of my own wavetables and create an alternative latent space model?

    That is a great idea but not so easy to implement. Replacing the weights in the model would be quite easy, but you would need to train your new model on a computer using Python and Keras.

    I can give you the code if you are interested and know how to code Python.

  • @VividSynths said:

    @Krupa said:

    @VividSynths said:
    VividShaper has just been updated to v1.2 and it is a major update in many aspects. I intend to release new factory patches on Fridays. A new feature makes it possible to update the factory patches online from the plugin. So check out for "Patch Friday".

    Would there be a way to take a bunch of my own wavetables and create an alternative latent space model?

    That is a great idea but not so easy to implement. Replacing the weights in the model would be quite easy, but you would need to train your new model on a computer using Python and Keras.

    I can give you the code if you are interested and know how to code Python.

    I wonder if the resulting VividShaper would be that different sonically.

  • @McD said:
    @VividSynths said:

    @Krupa said:

    @VividSynths said:
    VividShaper has just been updated to v1.2 and it is a major update in many aspects. I intend to release new factory patches on Fridays. A new feature makes it possible to update the factory patches online from the plugin. So check out for "Patch Friday".

    Would there be a way to take a bunch of my own wavetables and create an alternative latent space model?

    That is a great idea but not so easy to implement. Replacing the weights in the model would be quite easy, but you would need to train your new model on a computer using Python and Keras.

    I can give you the code if you are interested and know how to code Python.

    I wonder if the resulting VividShaper would be that different sonically.

    I assume that it would for patches doing things with the autoencoder. Pretty cool idea to test.

  • @VividSynths said:

    @Krupa said:

    @VividSynths said:
    VividShaper has just been updated to v1.2 and it is a major update in many aspects. I intend to release new factory patches on Fridays. A new feature makes it possible to update the factory patches online from the plugin. So check out for "Patch Friday".

    Would there be a way to take a bunch of my own wavetables and create an alternative latent space model?

    That is a great idea but not so easy to implement. Replacing the weights in the model would be quite easy, but you would need to train your new model on a computer using Python and Keras.

    I can give you the code if you are interested and know how to code Python.

    Interesting I could probably give it a go, as long as it was mostly just getting filled in the right place and firing the Python off at it… (I can manage maybe a bit of configuring but not much actual proper coding)

Sign In or Register to comment.