pouët.net

Go to bottom
AWE - Algo Wave Extraction by Algotech
screenshot added by algorithm on 2024-07-22 15:35:47
platform :
type :
release date : july 2024
  • 11
  • 2
  • 0
popularity : 55%
 55%
  • 0.85
alltime top: #14539
added on the 2024-07-22 15:35:47 by algorithm algorithm

popularity helper

increase the popularity of this prod by spreading this URL:

or via: facebook twitter pinterest tumblr bluesky threads

comments

awesome
rulez added on the 2024-07-22 17:16:16 by SiR SiR
Algotech delivers the compression porn!
rulez added on the 2024-07-22 18:33:49 by rloaderro rloaderro
It's pretty nuts that this prg file is 51KB! Seriously wtf :D
added on the 2024-07-22 18:35:33 by rloaderro rloaderro
awesome
rulez added on the 2024-07-22 19:01:36 by gloky gloky
Algorithm is a newcomer from another coding dimension. Rulez!
rulez added on the 2024-07-22 23:30:35 by tjahzi(aka Jimi) tjahzi(aka Jimi)
Again pushing the limits, love it!
rulez added on the 2024-07-22 23:44:05 by roudoudou roudoudou
Black magic! :]
rulez added on the 2024-07-23 00:07:48 by ham ham
amazing
rulez added on the 2024-07-23 00:46:54 by Ramon B5 Ramon B5
Impressive!
added on the 2024-07-23 10:41:32 by sim sim
Just wow! algorithm is back with another/new incedible audio (AWE) technique / demo. It would be interesting to hear the whole thing with a vocal based sound.

Imagine if this demo / technique had been released a few decades ago, during the heyday of the C64. :-)
rulez added on the 2024-07-25 11:43:43 by MrVainSCL MrVainSCL
Some "quick" technical notes behind this demo

Lets start off with the encoder

The encoder analyses the complexity of variable chunks per 20/40ms and this determines the chunk length to analyse. This is useful for preserving transients as well.

The encoding process extracts the following data from the chunk

frequency
This is 10bits. however an additional bit to determine if the frequency will traverse backwards. This can get better matches for asymettrical waveforms

phase
a range of 0-255 which is the start offset into the waveform

volume
a range of 0-31. This implies 5bit resolution, however on inspecting the maximum amplitudes, many would not reach the highest peaks. For this reason, the encoding is at 7bit volume resolution per layer (0-127) however only the first quarter of this is used which can then fit into 5bits

waveform
a range of 0-7. any one of 8 waveforms (noise, sine, triangle, pulse, sawtooth, resonance1, resonance2, trisaw)

It does all the above for x amount of layers. In this demo I opted for 8 layers (channels)

When comparing this with fourier transform based encoding, it requires only a quarter of the layers to achieve the same quality.


Now onto the decoder

the lower 3 bits of the 11bit frequency point to the finetuned pitch tables. the upper 8 bits are the main step values. this is incremented all together to form 8 step values which are written to the main decodeloop per layer (to the waveform low bytes)

the phase is merely written to the index per layer

the waveform value is calculated by pointing to the 512 byte waveform (this is 256 bytes repeated twice) to allow the indexing crossover. exception is the noise waveform.

the volume data points to the relevant scaled volume table (I did previously experiment in signed volume tables, but this introduced unwanted noise due to carry flag clear/set due to crossover

the decoder has 8 phase accumulators per layer. The main optimisation is that the phase is only updated once per 8 bytes. This is due to the step values already calculated per 8 bytes. At the end of the 8 bytes, the last step value is written to the indexing which allows it to loop seamlessly at the required frequency


Now info about the spectrogram
Yes it is realtime, but nothing too complex about that as we already have access to the frequency and amplitudes per layer.
There are 2 main stages, the fader (which fades each level of the frequencies) and the plotter (which plots the main updated strips)


the sample rate is at 5200hz (this is rather low) but as i am calculating pitch tables on the fly for 8 layers (and the main decode has phase accumulators updating in realtime) this used quite a lot of cpu time (though saves a lot on precalculated data).

I do have variants of the decoder that use larger tables to precalculate both volume and waveform together and run at higher sample rates, but use over 30k of tables (compared to 5k). Precalculating pitchs to the waveforms is not an option either as i would need over 1000 of these per waveform

Average compression per second is between 300-700 bytes per second, however since releasing this demo, I have implemented "phase quantisation" where i can shave off roughly 100-200 bytes from the total without much loss in quality

The encoder and decoder is being updated continiously with improvements (In particular i am working more on improving the quality at sub 300 bytes a second)

Some people were curious about how it would sound with some voices. I have prepared some examples. Bear in mind that encoding takes a very very long time, hence I used the quantised phase options to encode faster as a preview (This gives roughly a 25% degradation in quality) but at the plus point of using on average under 450 bytes a second for both these examples. examples of three voiced (with instrumentation combined) here. https://youtu.be/LgIcf25rTiw
added on the 2024-07-25 14:39:05 by algorithm algorithm
Very interesting and awesome tech details. Thanks for the cool yt example, how it sounds with voices. In my eyes it's just incredible for a C64/SID. I'm really impressed! Still looking forward to your amiga version/experiemnts.
added on the 2024-07-27 00:19:40 by MrVainSCL MrVainSCL
Impressive to say the least!
rulez added on the 2024-08-06 19:55:49 by Emod Emod
wow
rulez added on the 2024-08-23 12:14:19 by Frequent Frequent
Impressive
rulez added on the 2024-10-18 15:18:04 by Chainsaw Chainsaw

submit changes

if this prod is a fake, some info is false or the download link is broken,

do not post about it in the comments, it will get lost.

instead, click here !

[previous edits]

add a comment

Go to top