<div dir="auto">Really love this thread.  So true.  We have two hands and two feet.  It's just not enough to turn every knob.  Automation based on values is extremely important and evolutionary. <div dir="auto"><br></div><div dir="auto">HEQX</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sun, Jan 29, 2023, 10:28 AM cheater cheater via Synth-diy <<a href="mailto:synth-diy@synth-diy.org">synth-diy@synth-diy.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Modules that *measure* the incoming signal in some way are definitely<br>
the next step in the evolution of synthesis. You could also have<br>
trigger modules, which send out a trigger if something special<br>
happens. Some possible measurements you could take include:<br>
- roughness, as you mentioned. Send trigger if below or above a certain value.<br>
- loudness (i.e. envelope follower). Send trigger if zero for longer than t.<br>
- frequency (i.e. audio to pitch). Send trigger if can't find it<br>
longer than t; or send trigger if settled longer than t.<br>
- slope (how quickly the sound falls off from fundamental); send<br>
trigger of too bright or send trigger if too close to sinewave<br>
- self-correlation (if you already have the pitch of the signal, how<br>
similar are the subsequent cycles?); send trigger if it goes<br>
under/over certain value; send trigger if a jump was expected (eg a<br>
saw core reset) but didn't happen<br>
- loudness at specific frequencies (eg low / mid / high) - basically<br>
vocoding. you could also say this is a measure of the distribution of<br>
incoming signal samples vs frequency, i.e. how many values (in %) of<br>
the incoming signal are in a certain frequency bin. You could also<br>
sample wave cycles into the various bins and use them for something.<br>
- distribution of voltage values, i.e. how many (in %) values of the<br>
incoming signal are at a specific voltage. basically the classical<br>
distribution of a time series.<br>
- bayesian predictor: given the history of the signal, predict the<br>
immediate next value, or a value that's t seconds into the future (t<br>
is probably much less than 1 second)<br>
- bayesian probability: given the history of the signal, evaluate how<br>
probable the current signal was<br>
- state machine analyzer: analyze the incoming signal as generated<br>
from a state machine. guess the state machine. predict next output<br>
value / evaluate probability of latest input value (like bayesian<br>
predictor / probability)<br>
- predictive transformer based predictor / analyzer (basically a<br>
simplified version of the GPT algorithm)<br>
- FFT edge finder: look at the FFT of the sound coming in, do a curve<br>
fit using f(x) = x, x^2, x^3, x^1/2, x^1/3, exp(x), and log_e(x), and<br>
output what the current slope is of the curve, what the slope is<br>
between the curve at the start and end of the window, and how concave<br>
the curve is (i.e. the signed (pos/neg) area between the curve and the<br>
2nd slope). Also output the certainty of your curve fit. The window is<br>
rolling, and output evaluated at every sample.<br>
- polyphony analyzer: how polyphonic is the current sound?<br>
- chord analyzer: what is the current chord root? what is the current<br>
chord type? Output trigger if can't find chord / can find chord.<br>
- ???<br>
<br>
<br>
The vocoder idea to store wave cycles suggests to me that it would be<br>
nice to have patch cables that can carry instantaneous access to wave<br>
data for subsequent modules. I.e. if you have a vocoder that collects<br>
waveforms into its internal memory and sorts them into low/mid/high<br>
frequency bins, patch a cable from e.g. low, to an oscillator, and<br>
that oscillator has access to all those wave cycles, and can then play<br>
them e.g. like a wavetable (scan the index from 0 to 255 or whatever)<br>
or probabilistically (play the various waveforms depending on some<br>
random cycle)<br>
<br>
The "vocoder storing a wave" could be broken up into two modules:<br>
1. a vocoder that classifies the current input wave cycle as<br>
low/mid/high freq, and on top of what a vocoder normally does, it<br>
outputs the wave via a digital cable, including its low/mid/high<br>
classification, to another module<br>
2. a module that stores the waves and provides them on a digital<br>
output, and contains memory to store past incoming values<br>
<br>
then, the second module could provide a vco the memorized values, and<br>
the vco could make sense of them on its own. the vco could then play<br>
back the waves. the waves are still stored on the storage module, and<br>
at every instant, when the vco needs a waveform, it asks the storage<br>
module to send it over. obviously this would require a high speed<br>
digital link.<br>
<br>
the vco could could then decide which waves to play back based on<br>
whatever parameter is attached to the waves. imagine something like a<br>
database table (eg sql) where one column contains the waveform, and<br>
the next column contains its low/mid/high classification.<br>
<br>
obviously the classification could be something else, e.g. the<br>
roughness value, or anything else you've managed to analyze from the<br>
waveform. or there could be multiple classifications, eg vocoder band<br>
+ roughness + bayesian probability analyzer, and then eg you can have<br>
a vco knob that goes from (low roughness + low probability) to (high<br>
roughness + high probability) while also randomly cycling through<br>
vocoder bands at every cycle.<br>
<br>
at that point various set theoretic tools known from sql become<br>
available too (JOIN, INNER JOIN, WHERE, <. >, AND, OR, ...)<br>
<br>
Just letting my creativity run free<br>
<br>
Best regards<br>
<br>
<br>
<br>
<br>
<br>
<br>
On Sun, Jan 29, 2023 at 11:05 AM David Huss <<a href="mailto:dh@atoav.com" target="_blank" rel="noreferrer">dh@atoav.com</a>> wrote:<br>
><br>
> Roughness as a measure is described by Zwicker and Fastl in their 1990 book: Eberhard, and Hugo Fastl. Psychoacoustics: Facts and Models<br>
><br>
> Afaik there is also an ISO standard for sound roughness.<br>
><br>
> What such a broad measure as roughness would mean for synthesis, who knows. You would have to pick your poison there.<br>
><br>
> I think there is a lot of potential in the inverse tho: a module that spits out a CV with the perceived roughness of incoming audio.<br>
><br>
> On January 29, 2023 6:39:17 AM UTC, cheater cheater via Synth-diy <<a href="mailto:synth-diy@synth-diy.org" target="_blank" rel="noreferrer">synth-diy@synth-diy.org</a>> wrote:<br>
> >BTW here's a bunch of sounds of varying roughness to listen to:<br>
> ><br>
> >"Rating EAS Alarms From Different Countries!"<br>
> ><a href="https://www.youtube.com/watch?v=CuduG89DrLE" rel="noreferrer noreferrer" target="_blank">https://www.youtube.com/watch?v=CuduG89DrLE</a><br>
> ><br>
> >sadly someone's talking over them but you can hear enough.<br>
> ><br>
> >On Sun, Jan 29, 2023 at 7:37 AM cheater cheater<br>
> ><<a href="mailto:cheater00social@gmail.com" target="_blank" rel="noreferrer">cheater00social@gmail.com</a>> wrote:<br>
> >><br>
> >> Is it possible to define roughness so that a sound can be said to have<br>
> >> a specific amount of roughness at a specific frequency? It appears to<br>
> >> me that some sounds seem to sound "rough" at high frequency parts of<br>
> >> their spectrum and other sounds at low frequency parts, or others yet<br>
> >> at mid freq parts.<br>
> >><br>
> >> Maybe a spectral envelope of roughness vs frequency could be produced<br>
> >> (kind of like level vs frequency which is just the normal audio<br>
> >> spectrum of a sound)<br>
> >_______________________________________________<br>
> >Synth-diy mailing list<br>
> ><a href="mailto:Synth-diy@synth-diy.org" target="_blank" rel="noreferrer">Synth-diy@synth-diy.org</a><br>
> ><a href="http://synth-diy.org/mailman/listinfo/synth-diy" rel="noreferrer noreferrer" target="_blank">http://synth-diy.org/mailman/listinfo/synth-diy</a><br>
> >Selling or trading? Use <a href="mailto:marketplace@synth-diy.org" target="_blank" rel="noreferrer">marketplace@synth-diy.org</a><br>
><br>
> _______________________________________________<br>
> Synth-diy mailing list<br>
> <a href="mailto:Synth-diy@synth-diy.org" target="_blank" rel="noreferrer">Synth-diy@synth-diy.org</a><br>
> <a href="http://synth-diy.org/mailman/listinfo/synth-diy" rel="noreferrer noreferrer" target="_blank">http://synth-diy.org/mailman/listinfo/synth-diy</a><br>
> Selling or trading? Use <a href="mailto:marketplace@synth-diy.org" target="_blank" rel="noreferrer">marketplace@synth-diy.org</a><br>
_______________________________________________<br>
Synth-diy mailing list<br>
<a href="mailto:Synth-diy@synth-diy.org" target="_blank" rel="noreferrer">Synth-diy@synth-diy.org</a><br>
<a href="http://synth-diy.org/mailman/listinfo/synth-diy" rel="noreferrer noreferrer" target="_blank">http://synth-diy.org/mailman/listinfo/synth-diy</a><br>
Selling or trading? Use <a href="mailto:marketplace@synth-diy.org" target="_blank" rel="noreferrer">marketplace@synth-diy.org</a><br>
</blockquote></div>