The end is nigh...
-
I'm sure I'm not the only one who is completely baffled by ChatGPT and the quality of its output and I was playing around with it for the last days to see how I can utilize it to help the HISE development.
Apart from completely magical stuff like documenting the C++ function
hmath::smoothstep()
where it detects that it uses hermite interpolation to create a curve between 0 and 1 and adds a comment describing perfectly what each line in the function does, I found the most useful application to be the creation of documentation of things that are somewhat generic like the basic nodes from scriptnode. I gave it a shot at creating docs for some scriptnode nodes and with minimal input and corrections, it created stuff like this:START OF ROBOT
simple_ar
An simple_ar node applies an envelope to an audio signal. The envelope shapes the amplitude of the signal over time, allowing you to control how the signal fades in and out.
Parameters
- Attack: The time it takes for the envelope to reach its maximum level after the envelope is triggered, measured in milliseconds.
- Release: The time it takes for the envelope to return to its minimum level after the envelope is released, measured in milliseconds.
- Attack curve: The shape of the attack curve. This can be a linear curve or an exponential curve, specified as a gamma factor. A gamma factor of 0.5 corresponds to a linear curve, while a gamma factor greater than 0.5 corresponds to an exponential curve that fades in more slowly and fades out more quickly. A gamma factor less than 0.5 corresponds to an exponential curve that fades in more quickly and fades out more slowly.
- Gate: A value between 0 and 1 that controls whether the envelope is triggered. When the gate value passes 0.5, the envelope is triggered and the attack phase begins. When the gate value falls below 0.5, the envelope is released and the release phase begins. The gate value can also be controlled using MIDI notes, with a note on message triggering the attack phase and a note off message triggering the release phase.
Modulation Outputs
- CV: A control-rate modulation output that sends out the envelope value at each audio buffer. The output range is 0 to 1.
- GT: An control-rate modulation output that sends out a pulse whenever the gate value changes. The output range is 0 to 1.
In addition to providing modulation outputs, the envelope node also processes the audio signal by applying the envelope to the amplitude of the signal. This allows you to use the envelope node to modulate the gain of the signal directly, without the need to use the modulation outputs.
END OF ROBOT
What scares me the most is that it perfectly assumed what the attack curve and gate parameter do (all I need to do was to change the range of the values). However I had to thoroughly read it and fact check it to make sure that it doesn't invent functionality but it still tremendously increases the speed where I (or someone with sufficient knowledge about HISE) could crank out documentation that is easy to read yet contain enough technical knowledge.
I would be interested in whether you think that's a good idea to continue the AI assisted documentation. Given the fact that ChatGPT is a language model and not a "truth" model, any output obviously has to be fact-checked and redirected (Stack Overflow for example already banned users when they detect they are using ChatGPT for answering questions), but the way it summarizes features and writes in in a concise text that is super easy to read is close to perfection IMO.
-
So sick.
@Christoph-Hart said in The end is nigh...:
I would be interested in whether you think that's a good idea to continue the AI assisted documentation.
If it improves throughput and doesn't cause too many headaches, for sure.
-
Looks like a useful tool
-
@Christoph-Hart That is indeed weird, but if the output is checked then it would be a useful tool I imagine
-
@Christoph-Hart Well, I don't mean to bring negative thoughts in there, but I 'd like to temporise a wee bit about AI integration nonetheless.
I know it is a marvelous tool technology wise, but seeing what humanity does with AI at the moment really scares me (and if you've seen the same things I'm sure you'd be scared too), and I don't intend to support this in any way. Yes, here we're just talking about Hise, and not AI for war, kill decisions, or world financial decisions. But if I am against weapons, I am against for the bad as well as the good to use them. My words can be perceived extreme but I assume this, I just don't like AI for anything, and it's not because it can do good thing on the medical side that I will let this always taken statement change my mind. I was one of the first having access to AI images and wanted to use this as image generation for my plugins but I've changed my mind. Now I much prefer to pay someone to do it for me, and have interaction with people.
Again I know this is just code documentation, but maybe tomorrow why not some algorithms. The temptation is magical, but I know having the shape of my next car, or what the next generation smartphone will be made of, or even the targeted notifications and advertising, or what a sextoy thinks it's best for me will be largely enough in my life regarding what AI can do…
Sorry for the negative thoughts though, but trust me it's all about being positive. I definitely prefer to have an incomplete documentation with its flaws written by a human than having to know it's been automatically generated this way, and same thing for the arts in general. Knowing that the music I'm listening to the radio can one day be even just 10% AI recorded and mixed (and marketed), or as an amateur photographer the awesome new fake shots from this or that guy, pushes me in a state of mind I'd prefer not to describe here...
As for the evident fact that sooner or later the audio market will be submerged with AI, I will say that it's not because the majority of the poultry industry doesn't respect the animals that small and quality producers have to feel forced to go down the same road. -
Yes I totally understand these arguments and it is super clear that I would never slap an non-proof-readed text as a documentation on the website so in my case there will still the human element of verifying the integrity of the facts in the text, but it's rather things like "how am I going to boil down this abstract concept into two paragraphs in a good language style" that takes more time than it should be and this is where this thing is such an incredible timesaver it's not even funny anymore.
However, I think that a complete negation of the progress will not lead anywhere and in contrary to your example of weapons the invention of AI is not evil by design. These tools are out there and there is not a single case in human history where a technology was "deinvented" so I'd rather adapt and try to encorporate the new tools into my workflow as good as possible and while keeping on board with the development I might realize good and bad things about it and try to shape the development within my limited amount of influence (as tiny it might be it's still more than nothing if you completely disregard the development).
Of course there is a bias of overemphasing the present, but I feel that this is the single most disruptive technological innovation in my years as a software developer (after finding JUCE lol)...
-
@Christoph-Hart I agree with what you say, the adaptation, not disregarding new technologies and all that. I just feel that AI will be the new brain behind the scene hidden from everyone to know. (And it's already the case for anyone using social medias, so quite a big percentage around the world)
Of course it is the opposite here because you kindly ask users opinions. I also understand the amount of work the documentation (as well as everything else) is weighing on you.
The problem with adaptation, is that humanity always had a very long period to adapt (except sudden catastrophes). But with AI (or other technologies) it's going so fast that every year if not every month you feel dragged behind, like not smart enough to take the train. Does it mean we absolutely have to take the same path?
I don't mind walking to the baker than taking an electric scooter because everyone has one, just to give an image of courseWell, I don't need to go further I'm sure everyone got my point and it's not my decision to take.
Although if AI has to play a part in Hise, I'd like to see a mention like "AI made" everywhere it is the case. And if one day AI should appear to play a role in the audio path, to have it mentioned in the plugins, but we're not here right? Yet :) -
Impressive.
-
Very impressive, that said, is this a good description of the simple_ar node?
AnA simple_ar node applies an envelope to an audio signal. The envelope shapes the amplitude of the signal over time, allowing you to control how the signal fades in and out.The simple_ar is not limited to controlling audio signals, or amplitude. While calling it amplitude might be technically correct, a human with prior knowledge of synthesis might assume the node is limited to volume modulation based on this information alone. While it goes on to tell us about modulation outputs, there's some redundant information about audio signals and a user might be left wondering, how do I negate the amplitude modulation? (and other such nuances).
Generally speaking though, I think it's a great start. The parameter info is perfect. I'd be willing to review/edit chatGPT's output (or the documentation in general), if that would be helpful. Perhaps an informal group of volunteers working on this would be most effective, it would reduce mistakes based on misunderstandings and limit the number of "Hey Christoph.." posts that would arise.
-
@modularsamples I might have introduced that typo myself :) But the rest is pretty accurate: of course you can feed it with a modulation signal instead of the audio, but even then it still shapes the signal according to what it says.
That being said, this description is highly redacted (I've given it maybe 4-5 rounds of feedback to get to this version) and then I applied some minor changes.
I'd like to see a mention like "AI made"
I completely agree that unredacted AI output must be marked so that the reader can assume that the facts are not guaranteed to be correct (and I think this will be a common practice going forward). Since this is not the case here as I don't intend to upload it without fact checking this disclaimer could lead to a false impression of an untrustworthy source of information (which would damage the entire trust into the correctness of the documentation).
-
@Christoph-Hart said in The end is nigh...:
I completely agree that unredacted AI output must be marked so that the reader can assume that the facts are not guaranteed to be correct (and I think this will be a common practice going forward).
I would just add that it's not only about knowing if the output can contain flaws or not (because it is the same case for human made stuff) but just as information to keep in mind and know where AI has been involved.
-
@Christoph-Hart Minor criticism aside, it is super impressive.
I'd be interested to see what you're "input" looked like, if you have the time.
-
Sure here's the input for the reverb node:
fx.reverb
node, parameters Damping, Width, Size, use dry/wet template to control the mixRobot:
The fx.reverb node is a reverb effect that can be used to add a sense of space and depth to a sound. The Damping parameter controls the amount of high frequency damping that is applied to the reverb. This can be used to adjust the brightness or "darkness" of the reverb. The Width parameter controls the stereo width of the reverb, with higher values resulting in a wider stereo image. The Size parameter controls the overall size of the virtual space being simulated by the reverb, with larger values resulting in a longer decay time and a bigger sound.
To control the mix of the dry (unprocessed) sound and the wet (reverberated) sound, you can use the dry/wet template. This template allows you to adjust the balance between the dry and wet signals, with a value of 0 representing a completely dry sound and a value of 1 representing a completely wet sound. For example, if you wanted to have the dry sound dominate with only a small amount of reverb, you could set the dry/wet value to something like 0.2. On the other hand, if you wanted the reverb to be more prominent, you could set the dry/wet value to something like 0.8.
please put the parameter list in markdown formatted table and put the text into code blocks
Here is the parameter list for the fx.reverb node in a markdown formatted table:
Parameter Description
Damping Controls the amount of high frequency damping applied to the reverb.
Width Controls the stereo width of the reverb.
Size Controls the overall size of the virtual space being simulated by the reverb.
dry/wet Controls the balance between the dry and wet signals.(the formatting got lost by pasting it here, but usually I get the table formatting right).
It would take a few more feedback rounds ("please make the example shorter and add the value ranges 0-1 to all parameter explanations etc") to get it to a state that I would consider good enough, but it's astonishing how it can explain what these parameters do with as little input as I gave it.
-
So interesting & also sick...
-
Another thing where it might be super useful is to define spec sheets of a feature set that meets the average expectancy - this is particularly useful for the use case of making generic DSP building blocks that are defined by what the majority of the reference data expects them to be.
spec sheet of a chorus effect (parameters, UI elements)
ROBOT:
A chorus effect is a type of audio effect that modifies the sound of an audio signal by adding a slightly delayed and pitch-modulated copy of the original signal to it. The effect is typically used to add depth and dimension to an audio signal, and is often used on guitar, keyboard, and vocal tracks.
Here is a list of common parameters and UI elements that may be found on a chorus effect:
Mix: Controls the wet/dry balance of the effect, allowing you to adjust the amount of chorus applied to the signal.
Rate: Controls the speed of the pitch modulation applied to the delayed copy of the signal.
Depth: Controls the amount of pitch modulation applied to the delayed copy of the signal.
Delay: Controls the amount of time delay applied to the delayed copy of the signal.
Feedback: Controls the amount of the delayed signal that is fed back into the input, creating a more pronounced effect.
Tone: Controls the overall frequency response of the effect, allowing you to shape the tonal character of the chorus.
LFO Shape: Controls the shape of the low frequency oscillator (LFO) used to modulate the pitch of the delayed copy of the signal. Common LFO shapes include sine, triangle, and square waves.
Stereo: Controls the stereo spread of the effect, allowing you to widen or narrow the stereo image of the processed signal.
Wet/Dry: Controls the wet/dry balance of the effect, allowing you to adjust the amount of chorus applied to the signal.
Bypass: A switch that allows you to bypass the effect completely and hear the unprocessed signal.
On/Off: A switch that allows you to turn the effect on or off.
please write me a C++ class with these parameters
Sure! Here is an example of a C++ class that implements a chorus effect with the parameters you specified:
class Chorus { public: Chorus(); ~Chorus(); // Set the wet/dry balance of the effect void SetMix(float mix); // Set the rate of the pitch modulation void SetRate(float rate); // Set the depth of the pitch modulation void SetDepth(float depth); // Set the delay time of the delayed signal void SetDelay(float delay); // Set the feedback amount of the delayed signal void SetFeedback(float feedback); // Set the overall frequency response of the effect void SetTone(float tone); // Set the shape of the LFO used to modulate the pitch of the delayed signal void SetLfoShape(LfoShape shape); // Set the stereo spread of the effect void SetStereo(float stereo); // Bypass the effect void Bypass(bool bypass); // Process a block of audio void Process(float* in_left, float* in_right, float* out_left, float* out_right, int num_samples); private: // Private member variables and functions go here };
This class has public member functions for setting the various parameters of the chorus effect, as well as a function for processing a block of audio. The implementation details of the class would depend on the specific algorithms used to create the effect.
-
And one last query before I leave you alone with it:
what is HISE?
HISE (Hornet Impulse Sound Engine) is a software application that allows users to create, edit, and manipulate audio samples, as well as design virtual instruments and effects processors. It is primarily used by musicians, audio engineers, and sound designers as a tool for creating sounds and building custom instrument and effects plugins for use in digital audio workstations (DAWs) and other music production software.
HISE is designed to be modular and flexible, with a range of features and tools that allow users to customize and create their own sounds and virtual instruments. It includes a sample editor, a synthesizer engine, and a set of modular effects processors, as well as a graphical user interface (GUI) that allows users to design and program custom virtual instruments and effects. HISE is available for Windows, Mac, and Linux, and can be used as a standalone application or as a plugin in a DAW.
-
Hornet Impulse Sound Engine
-
@Christoph-Hart Amazing! Though I never thought of HISE as particularly buggy ;)
Thanks for sharing. Boring work emails are now a thing of the past.
-
@Christoph-Hart said in The end is nigh...:
HISE (Hornet Impulse Sound Engine)
I knew HISE stands for Hart Instruments Sampler Engine
-
@Christoph-Hart The AI is a tool like any other (but a lot more sophisticated). Whether or not it does good or bad depends entirely on the people using it.
You should definitely continue to familiarize yourself with it and utilize it if it helps you accomplish tasks quicker and better. I use Grammarly to help me write, which is another level of spell-check. If you recall, a few months ago, I was inquiring here whether openAi could be beneficial for HISE development, as it could possibly explain code and help write pieces of code.