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.

Using ChatGPT to make a clipper AUv3 for iOS

After watching ChatGPT code a guitar pedal plugin:

I thought it would be cool if it could try a dedicated clipper as well (as that’s something we need at the moment imo).

Now I don’t know jack about coding but this all looks legit, at least for a basic example.

Comments

  • // Header file for the clipper plugin

    include "AUv3Clipper.h"

    // Constructor for the clipper plugin
    AUv3Clipper::AUv3Clipper(AudioUnit component)
    AUEffectBase(component)
    {
    // Initialize the threshold and gain parameters
    CreateParameter(kThresholdParam,
    kThresholdParamName,
    kThresholdParamUnit,
    kAudioUnitParameterUnit_Decibels,
    kThresholdParamMinDB,
    kThresholdParamMaxDB,
    kThresholdParamDefaultDB,
    0.01,
    kAudioUnitParameterFlag_IsWritable | kAudioUnitParameterFlag_IsReadable);
    CreateParameter(kGainParam,
    kGainParamName,
    kGainParamUnit,
    kAudioUnitParameterUnit_Decibels,
    kGainParamMinDB,
    kGainParamMaxDB,
    kGainParamDefaultDB,
    0.01,
    kAudioUnitParameterFlag_IsWritable | kAudioUnitParameterFlag_IsReadable);
    }

    // Processes a single audio frame using the clipper algorithm
    OSStatus AUv3Clipper::ProcessFrame(UInt32 inNumberFrames, AudioBufferList &ioData)
    {
    // Get the current values of the threshold and gain parameters
    float thresholdDB = GetParameter(kThresholdParam);
    float gainDB = GetParameter(kGainParam);

    // Convert the threshold and gain values from decibels to linear scale
    float threshold = pow(10.0, thresholdDB / 20.0);
    float gain = pow(10.0, gainDB / 20.0);
    
    // Get pointers to the audio data for each channel
    float *leftChannel = (float *)ioData.mBuffers[0].mData;
    float *rightChannel = (float *)ioData.mBuffers[1].mData;
    
    // Process each sample in the audio frame
    for (UInt32 i = 0; i < inNumberFrames; i++)
    {
        // Clip the left channel sample
        leftChannel[i] = std::max(-threshold, std::min(threshold, leftChannel[i]));
        // Apply the gain to the left channel sample
        leftChannel[i] *= gain;
    
        // Clip the right channel sample
        rightChannel[i] = std::max(-threshold, std::min(threshold, rightChannel[i]));
        // Apply the gain to the right channel sample
        rightChannel[i] *= gain;
    }
    
    // Return success
    return noErr;
    

    }

  • Now all that’s need is a GUI and someone to put it together!

  • And here are some names it came up with:

    Sure! Here are a few examples of more creative or artistic names for a clipper plugin:

    "Sonic Sculptor"
    "Dynamic Dynamics"
    "Power Limiter"
    "Level Master"
    "Signal Shaper"
    "Frequency Fencer"
    "Waveform Wielder"
    "Audio Artist"
    "Tone Tamer"
    "Wave Shaper"

    “Dynamic Dynamics” FTW 😂

  • @KRPT said:
    Now all that’s need is a GUI and someone to put it together!

    Oh, is that all?

  • @uncledave said:

    @KRPT said:
    Now all that’s need is a GUI and someone to put it together!

    Oh, is that all?

    😂

  • @KRPT said:
    Now all that’s need is a GUI and someone to put it together!

    Just ask Midjourney, it is taking all the jobs!

  • Couldn't you maybe find a hard clipper already inplemented in BYOD, for example?

    I expect the code you posted would generate some nasty aliasing artifacts.

  • I’d really like for there to exist a dedicated clipper plugin, something preferably lightweight - yeah I’m guessing this AI generated code would probably be very rough but the sentiment is there. Here’s to more of robots helping and less of robots hindering in 2023!

  • Load Drambo into an effects slot and add ONE Shaper Module to it and set it to clip mode and you’ll propably have one of the best super low aliasing clippers on iOS ready to go…

  • _ki_ki
    edited December 2022

    Code generated by chatGPT often doesn‘t work on the first ‚round‘. You need to try it and then state to chatGTP in which parts it fails and chatGTP comes up with a better code. (That‘s what the above video mentions as ‚iterations‘, he needed about 20 rounds of chatGTP fixing its own code to get it running)

Sign In or Register to comment.