Forums

Full Version: WARP POWER
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
WARP POWER

On my 1GHz G4, warping performs as outlined:
CPU:
Med 20%
Medium is often good enough, and adding a tight room reverb only pushes me up to 23%.

HI 41% Hi setting puts me at 41%. Already a significant jump. However, if I slap on some reverb, I go up to only 45%, regardless to what type of reflextions I create, and the overall effect has the potential to sound better than the original!
By comparison,
Lo 4%,
Is REALLY COOL as a guitar pedal-like effect but otherwise unsuitable for accurate representation of even a cabbage like intelligence. Because the timing gets garbled as well, I can;t really use it as a "make my drum beats sound like Satan" effect either, making it kind of usesless on my lowly G4.

Now in general, I do want to say the SOUND QUALITY is something I have noticed in other software programs attempting to do similar things. Not having a working demo at my disposal for a few weeks there offerred me the slutty opportunity to try out other competing products, and I notice tonight an OBVIOUS difference in just overall sound quality with AudioCodex. Now, for sure, that has a lot to do with the individual settings I create, and how personalized they can be on a per song basis.
But,
I feel that the performance AND quality for what my CPU is doing is FAR MORE stable than what I've been experiencing in recent memory. Especially on Medium warp mode and on large tempo contrasts. It is at this point, when a song is stretched out to a ridiculous amount, with the fundamentals of the rhythm and pitch still present, that we really hear what kind of quality a music player can put out. Add the ability to tweak, and tighten that, is very similar to tuning a guitar. Such a difference to have that kind of control on how you listen to music. GIven, a lot of people may not realize this hidden beauty right away, but I sure appreciate it!
The "smothness" and "Tightness" controls rock, and although that may be well beyond the scope of a lot of casual users, I think this kind of flexibility in an iPuke replacement music player is ....wel....AWESOME!

j0hnny r3tard
Thanks Johnny,

It was always a primary goal of AudioCodex to be lean and mean, providing the best quality for the lowest possible overhead. It's nice to know that we've met that goal for you at least. Stick around, 1.0 is just around the corner...

Cheers,
Yo Johnny,

A bit more nuts&bolts on our CoreAudio internals.

Quality settings for 'Warp' Time & Pitch

AudioCodex uses OSX's built-in AUTimePitch unit to do the work for Time & Pitch shifting. So the quality of the effect, and also the amount of CPU it consumes is all down to Apple's hard work... we merely provide an interface to control that particular unit.

The three Quality settings are dictated by the AUTimePitch itself. AUTimePitch represents itself as responding to 5 quality-levels, but internally, it only uses three ranges. The lowest of these ranges evidently uses algorithms that are optimised for non-vector-enabled processors ( ie G3's), while the Medium & High settings use algorithms that are optimised for vector-processing ( ie AltiVec, SS3), and which are very expensive to run on a G3.

So while the 'Low' setting sounds poor compared to 'Medium' or 'High', 'Low' is the only setting that is really usable on a G3; in fact, when AudioCodex is first run, the quality is automatically set to low on G3's, 'Medium' for all other CPU-types.

This was important to me personally, because when I first started on this project I was mostly coding on a G3 600 MHz iBook, running side-by-side with a G4 400 (retro-fitted with a GeForce 5200 AGP graphics card so it could do Quartz rendering). On the iBook, 'Medium' used about 60% of CPU, 'High' overloaded with about 110%. In contrast, 'Low' used about 20% and was bearable for jamming purposes.

On the G4 400 I found that 'Medium' was a good compromise of CPU & sound quality, although 'High' was still usable, running around 50% CPU. A while later I picked up a 1.25GHz eMac, and found that this type of machine was a lot more comfortable with 'High' quality using around 35% of CPU.

On G5's & Intels, 'High' quality is a lot less expensive... ~15% of CPU time on my MacBook 2.0 GHz for example, so I usually leave quality set to 'High' on that machine. All Intel machines should run fine with 'High' quality as the default setting.

However, so that AudioCodex doesn't seem to be too huge a CPU hog, the default setting on first-launch for all non-G3's is still 'Medium'. If the user changes it up to 'High', the setting will persist across successive launches.

Other 'Warp' controls

While the Smoothness & Tightness sliders are the only additional controls we expose for this unit, the 'full' interface for this unit has about 25 sliders, similar to the AUPitch when you click the triangle next to 'Parameters' (on the AudioUnit Inspector).

This sort of interface is way too complex for most users, so we chose to expose only the most-frequently used handful of the units parameters. The three built-in factory presets re-arrange a lot of these parameters over quite a wide percentage of their ranges, so if you think it would be useful to be able to access the rest of the AUTimePitch's control's, let me know... I suspect it might be possible to design a lot of better-quality presets for this unit, admittedly with a 'lot' of tinkering with sliders...

AUTimePitch Quirks

A quirk with the AUTimePitch is that although it responds to 'bypass' commands, it still uses the same amount of CPU when bypassed as when engaged, even though it is clearly doing no 'work' on the signal when bypassed. Presumably this is due to some internal buffering arrangement, but in any case, we have no control over this aspect of the AUTimePitch's behavior.

However, the AUTimePitch can be made to use significantly less CPU by switching it's Quality setting to 'low' when bypassed, which is something that AudioCodex manages 'silently'. While the CPU-saving this provides is significant, there is one unfortunate side-effect, which is that there is usually an audible click or thump produced when the Quality setting is changed on the AUTimePitch. This is internal to the unit, I would guess it has to do with buffers being suddenly cleared as the units internal processing pathway is switched between non-vector & vector mode.

Using Other AU's for Speed & Pitch shifting

Overall, I think the AUTimePitch does a pretty good job for a 'free' unit, but it's possible that other third-party AU's exist that might do an even better job. OctaveShifter2 for example does a very nice pitch-shift, and seems to use a few less horses than the AUPitch. And I'm pretty sure there are some other high-end au's that might also fit the bill, if you have the bills to pay for 'em Smile

AUTimePitch's fixed-pitch rate-shift is however a feature that's hard to find in 'free-or-cheap' AU's; one way to accomplish the same effect involves synchronising a speed-varying unit like an AUVarispeed with an associated pitch-shifter unit, i.e using the parameters of one unit to drive the parameters of another unit. This type of parameter mapping isn't something we've yet designed an interface to just yet. But it might be that a 'CoreAudio Composer' view might appear in some future version Smile

Mark Hill
MachineCodex Software
Well I for one will purchase this when it's released JUST for this feature. I produce experimental music and one of the methods I like to use is creating 'series' of tracks in a similar vein and using 'Pitch/Time' to create variations...doing this from a playlist format and using Audio Hijack affords me both an oppurtunity to 'audition' the effects when the series is 'gleened' as a whole and simultaneously to capture a record of these variations 'automatically.

One note/bug...when opening the 'Audio Inspector' for 'Warp' I found that it's slider was only ranging -300 to +300 cents while the top level 'Pitch' knob was allowing settings between -1200 to +1200. AND the reason I was in the 'Inspector (other than try the different 'Quality' settings) was that even with my preference set to '10' in sensitivity (default) I was unable to 'dial in' exact amounts (such as -700 cents which would skip from 699~702). A calibration error on the 'Pitch' knob' and a value range error on the 'Pitch' slider then?

Anyway, this is going to be a great tool for what I do and look forward to it's release ;-)[/align]
Oh ok, I see you have addressed most of this here:

http://www.machinecodex.com/forum/showthread.php?tid=39
Hi Loopy,

Yeah, I acknowledge that the current Pitch slider on the Audio Inspector is a less-than-perfect compromise, and I will be implementing some more ways to affect the Pitch via the Inspector soon.

One thing you might not be aware of is that if the dials are in one of the linear-tracking modes, holding down the Option key while dragging spins the dial at 25% of it's normal rate. This should be fine enough to change pitch at ~1-cent intervals.

Cheers,

Mark Hill
MachineCodex Software

mantis Wrote:
Hi Loopy,

Yeah, I acknowledge that the current Pitch slider on the Audio Inspector is a less-than-perfect compromise, and I will be implementing some more ways to affect the Pitch via the Inspector soon.

One thing you might not be aware of is that if the dials are in one of the linear-tracking modes, holding down the Option key while dragging spins the dial at 25% of it's normal rate. This should be fine enough to change pitch at ~1-cent intervals.

Cheers,

Mark Hill
MachineCodex Software


Thanks for the reply, I will check that out. The shortcuts did the trick for the most part on my last 'session' ;-)

Reference URL's