GPU Delay - A delay plugin running on a graphics card

VST, AU, AAX, CLAP, etc. Plugin Virtual Effects Discussion
Post Reply New Topic
RELATED
PRODUCTS

Post

Chorus is working on my FX5200, but it's crackle-land with just one instance @ 44.1K.

Something else I noticed, in WaveLab at least, is that if you stop and then re-start playback, the delay plays the remaining echoes that was about to play when stopped.

Nils, would a GeForce 7600GS AGP be sufficient for this type of processing or is PCI-e actually required?

Post

Mmm.... So what HAPPENED to BionicFX anyway?
All I could find was this:
http://www.dce.harvard.edu/pubs/unlette ... l/cann.jsp
It's from Harvard, and apparently he was in Wired as well... and applying for a patent... all sounds pretty serious, but the BionicFX website is no more.

Post

Hmmm, chorus gives an error when starting Cubase (Radeon 9500pro here), here's the log :


18:10:26: Creating resource group General
18:10:26: Creating resource group Internal
18:10:26: Creating resource group Autodetect
18:10:26: Registering ResourceManager for type Material
18:10:26: Registering ResourceManager for type Mesh
18:10:26: Registering ResourceManager for type Skeleton
18:10:26: MovableObjectFactory for type 'ParticleSystem' registered.
18:10:26: Loading library OgrePlatform.dll
18:10:26: OverlayElementFactory for type Panel registered.
18:10:26: OverlayElementFactory for type BorderPanel registered.
18:10:26: OverlayElementFactory for type TextArea registered.
18:10:26: Registering ResourceManager for type Font
18:10:26: ArchiveFactory for archive type FileSystem registered.
18:10:26: ArchiveFactory for archive type Zip registered.
18:10:26: DevIL version: Developer's Image Library (DevIL) 1.6.7 Oct 28 2005
18:10:26: DevIL image formats: bmp dib cut dcx dds gif hdr ico cur jpg jpe jpeg lif mdl mng jng pcx pic pix png pbm pgm pnm ppm psd pdd psp pxr sgi bw rgb rgba tga vda icb vst tif tiff wal xpm raw
18:10:26: Registering ResourceManager for type HighLevelGpuProgram
18:10:26: Registering ResourceManager for type Compositor
18:10:26: MovableObjectFactory for type 'Entity' registered.
18:10:26: MovableObjectFactory for type 'Light' registered.
18:10:26: MovableObjectFactory for type 'BillboardSet' registered.
18:10:26: MovableObjectFactory for type 'ManualObject' registered.
18:10:26: MovableObjectFactory for type 'BillboardChain' registered.
18:10:26: MovableObjectFactory for type 'RibbonTrail' registered.
18:10:26: *-*-* OGRE Initialising
18:10:26: *-*-* Version 1.2.2 (Dagon)
18:10:26: Loading library RenderSystem_Direct3D9.dll
18:10:26: An exception has been thrown!

-----------------------------------
Details:
-----------------------------------
Error #: 9
Function: DynLib::load
Description: Could not load dynamic library RenderSystem_Direct3D9.dll. System Error: The specified module could not be found.

.
File: \sgpu\source\ogre\OgreMain\src\OgreDynLib.cpp
Line: 82
Stack unwinding: <<beginning of stack>>



I have DirectX9.0c installed. Anything else needed?

Post

Seems that your system didn't notice that the path env variable has been updated. Should work when logging off and logging in again.
https://k1v.nilsschneider.de - Kawai K1 emulated as VSTi/AU
https://heatvst.com - Android Synthesizer with full VST integration
https://gpuimpulsereverb.de - Use your GPU as reverberation DSP

Post

Newest version of the delay is working on my ATI Radeon 9550.

The chorus starts but put the db meters to full and stay there
with no sound on the output.

Also noticed that if you load the chorus on a track where you
already got the delay going will make the delay stop working
and if you remove the chorus then EnergyXT terminate and you
are back to the desktop.

//Daniel :)

Post

my pecs:

intel p4 3.2ghz, 2 gb ram and geforce mx5200.

the delay works great, i can load quite a lot of them without any crackles at 256, 512 and 1024! nice work! :-D

but when i load the chorus plugin energyxt quits without any error message or so :-(

still, congratulations, great effort!

Post

@ddummer I'm just experimenting, I also noticed that, when using different plugins that refer to the Ogre dlls it leads to problems.

I already thought about throwing all the Ogre stuff away and writing my own engine, resulting in a smaller app and with less dlls, but will loose the ability to switch to OpenGL later... :( I'm not sure yet..... Maybe the Ogre guys have a solution for me...
https://k1v.nilsschneider.de - Kawai K1 emulated as VSTi/AU
https://heatvst.com - Android Synthesizer with full VST integration
https://gpuimpulsereverb.de - Use your GPU as reverberation DSP

Post

The ogre.log
17:31:02: Creating resource group General
17:31:02: Creating resource group Internal
17:31:02: Creating resource group Autodetect
17:31:02: Registering ResourceManager for type Material
17:31:02: Registering ResourceManager for type Mesh
17:31:02: Registering ResourceManager for type Skeleton
17:31:02: MovableObjectFactory for type 'ParticleSystem' registered.
17:31:02: Loading library OgrePlatform.dll
17:31:02: OverlayElementFactory for type Panel registered.
17:31:02: OverlayElementFactory for type BorderPanel registered.
17:31:02: OverlayElementFactory for type TextArea registered.
17:31:02: Registering ResourceManager for type Font
17:31:02: ArchiveFactory for archive type FileSystem registered.
17:31:02: ArchiveFactory for archive type Zip registered.
17:31:02: DevIL version: Developer's Image Library (DevIL) 1.6.7 Oct 28 2005
17:31:02: DevIL image formats: bmp dib cut dcx dds gif hdr ico cur jpg jpe jpeg lif mdl mng jng pcx pic pix png pbm pgm pnm ppm psd pdd psp pxr sgi bw rgb rgba tga vda icb vst tif tiff wal xpm raw
17:31:02: Registering ResourceManager for type HighLevelGpuProgram
17:31:02: Registering ResourceManager for type Compositor
17:31:02: MovableObjectFactory for type 'Entity' registered.
17:31:02: MovableObjectFactory for type 'Light' registered.
17:31:02: MovableObjectFactory for type 'BillboardSet' registered.
17:31:02: MovableObjectFactory for type 'ManualObject' registered.
17:31:02: MovableObjectFactory for type 'BillboardChain' registered.
17:31:02: MovableObjectFactory for type 'RibbonTrail' registered.
17:31:02: *-*-* OGRE Initialising
17:31:02: *-*-* Version 1.2.2 (Dagon)
17:31:02: Loading library RenderSystem_Direct3D9.dll
17:31:02: D3D9 : Direct3D9 Rendering Subsystem created.
17:31:02: D3D9: Driver Detection Starts
17:31:02: D3D9: Driver Detection Ends
17:31:02: Loading library Plugin_CgProgramManager.dll
17:31:02: D3D9 : RenderSystem Option: Full Screen = No
17:31:02: D3D9 : RenderSystem Option: VSync = No
17:31:02: D3D9 : RenderSystem Option: Anti aliasing = None
17:31:02: D3D9 : RenderSystem Option: Allow NVPerfHUD = No
17:31:02: D3D9 : RenderSystem Option: Video Mode = 640 x 480 @ 32-bit colour
17:31:02: D3D9 : RenderSystem Option: Floating-point mode = Fastest
17:31:02: D3D9 : Subsystem Initialising
17:31:02: D3D9RenderSystem::createRenderWindow "GPU Audio DSP Processing Prototype v0.01a", 640x480 windowed miscParams: FSAA=0 FSAAQuality=0 colourDepth=32 useNVPerfHUD=false vsync=false
17:31:02: D3D9 : Created D3D9 Rendering Window 'GPU Audio DSP Processing Prototype v0.01a' : 640x480, 32bpp
17:31:02: D3D9 : WARNING - disabling VSync in windowed mode can cause timing issues at lower frame rates, turn VSync on if you observe this problem.
17:31:02: Registering ResourceManager for type Texture
17:31:02: Registering ResourceManager for type GpuProgram
17:31:02: RenderSystem capabilities
17:31:02: -------------------------
17:31:02: * Hardware generation of mipmaps: yes
17:31:02: * Texture blending: yes
17:31:02: * Anisotropic texture filtering: yes
17:31:02: * Dot product texture operation: yes
17:31:02: * Cube mapping: yes
17:31:02: * Hardware stencil buffer: yes
17:31:02: - Stencil depth: 8
17:31:02: - Two sided stencil support: yes
17:31:02: - Wrap stencil values: yes
17:31:02: * Hardware vertex / index buffers: yes
17:31:02: * Vertex programs: yes
17:31:02: - Max vertex program version: vs_2_0
17:31:02: * Fragment programs: yes
17:31:02: - Max fragment program version: ps_2_0
17:31:02: * Texture Compression: yes
17:31:02: - DXT: yes
17:31:02: - VTC: no
17:31:02: * Scissor Rectangle: yes
17:31:02: * Hardware Occlusion Query: yes
17:31:02: * User clip planes: yes
17:31:02: * VET_UBYTE4 vertex element type: yes
17:31:02: * Infinite far plane projection: yes
17:31:02: * Hardware render-to-texture: yes
17:31:02: * Floating point textures: yes
17:31:02: * Non-power-of-two textures: yes
17:31:02: * Volume textures: yes
17:31:02: * Multiple Render Targets: 4
17:31:02: * Point Sprites: yes
17:31:02: * Extended point parameters: yes
17:31:02: * Max Point Size: 256
17:31:02: ***************************************
17:31:02: *** D3D9 : Subsystem Initialised OK ***
17:31:02: ***************************************
17:31:02: ResourceBackgroundQueue - threading disabled
17:31:02: Particle Renderer Type 'billboard' registered
17:31:02: OverlayElementFactory for type MyPanel registered.
17:31:02: Added resource location 'data.bin' of type 'Zip' to resource group 'General' with recursive option
17:31:02: Parsing scripts for resource group Autodetect
17:31:02: Finished parsing scripts for resource group Autodetect
17:31:02: Parsing scripts for resource group General
17:31:02: Parsing script chorus.material
17:31:02: Finished parsing scripts for resource group General
17:31:02: Parsing scripts for resource group Internal
17:31:02: Finished parsing scripts for resource group Internal
17:31:02: Creating viewport on target 'rtt/2345184', rendering from camera 'CAM_art0', relative dimensions L: 0.00 T: 0.00 W: 1.00 H: 1.00 ZOrder: 0
17:31:02: Viewport for camera 'CAM_art0', actual dimensions L: 0 T: 0 W: 2048 H: 1
17:31:02: Warning: material chorus0 has no supportable Techniques on this hardware, it will be rendered blank.
17:31:07: Render Target 'rtt/2345184' Average FPS: 21.6568 Best FPS: 22.5269 Worst FPS: 21.5264
17:31:07: *-*-* OGRE Shutdown
17:31:07: Unregistering ResourceManager for type Compositor
17:31:07: Unregistering ResourceManager for type Font
17:31:07: Unregistering ResourceManager for type Skeleton
17:31:07: Unregistering ResourceManager for type Mesh
17:31:07: Unregistering ResourceManager for type HighLevelGpuProgram
17:31:07: Unloading library Plugin_CgProgramManager.dll
17:31:07: Render Target 'GPU Audio DSP Processing Prototype v0.01a' Average FPS: 0 Best FPS: 0 Worst FPS: 999
17:31:07: D3D9 : Shutting down cleanly.
17:31:07: Unregistering ResourceManager for type Texture
17:31:07: Unregistering ResourceManager for type GpuProgram
17:31:07: D3D9 : Direct3D9 Rendering Subsystem destroyed.
17:31:07: Unloading library RenderSystem_Direct3D9.dll
17:31:07: Unregistering ResourceManager for type Material
17:31:07: Unloading library OgrePlatform.dll
The sgpu.log
WARN: sgpuVST::DestroyThread: WaitForSingleObject( m_hThreadTerminated ) = WAIT_TIMEOUT
INFO: main: Working directory: C:\Program\Nils Schneider\GPU Chorus VST Effect Plugin
INFO: CRApp::Init: CApp successfully created.
INFO: main: returning effect...
INFO: DllMain: DLL_THREAD_ATTACH
INFO: sgpuVST::_Thread_Process: Thread 0 started
INFO: CAudioEffect::Create: Audio Effect with ID 0 successfully created.
INFO: sgpuVST::processReplacing: Audio effect created, blockSize = 2048
INFO: sgpuVST::processReplacing: Buffers created, blockSize = 2048
INFO: sgpuVST::_Thread_Process: Thread 0 terminated
INFO: DllMain: DLL_THREAD_DETACH
INFO: CAudioEffect::Destroy: Audio Effect with ID 0 successfully destroyed.
INFO: DllMain: DLL_PROCESS_DETACH
INFO: CRApp::Destroy: CApp successfully destroyed (0 audio effects left).
INFO: DllMain: DLL_PROCESS_ATTACH
INFO: main: entered...
INFO: main: Working directory: C:\Program\Nils Schneider\GPU Chorus VST Effect Plugin
INFO: CRApp::Init: CApp successfully created.
INFO: main: returning effect...
INFO: DllMain: DLL_THREAD_ATTACH
INFO: DllMain: DLL_THREAD_ATTACH
INFO: sgpuVST::_Thread_Process: Thread 0 started
INFO: CAudioEffect::Create: Audio Effect with ID 0 successfully created.
INFO: sgpuVST::processReplacing: Audio effect created, blockSize = 2048
INFO: sgpuVST::processReplacing: Buffers created, blockSize = 2048
INFO: sgpuVST::_Thread_Process: Thread 0 terminated
INFO: DllMain: DLL_THREAD_DETACH
INFO: DllMain: DLL_THREAD_DETACH
INFO: CAudioEffect::Destroy: Audio Effect with ID 0 successfully destroyed.
INFO: DllMain: DLL_PROCESS_DETACH
INFO: CRApp::Destroy: CApp successfully destroyed (0 audio effects left).
INFO: DllMain: DLL_THREAD_ATTACH
INFO: DllMain: DLL_THREAD_DETACH
I guess I'm hardware incompatible now... merde... :D

//Daniel :)

Post

Noluck here.. restarted, dll not found again. Put dll in system path environment variable, still nothing. Copied the .dll to system32, still the program doesn't see it. Seems I will give up here :(

Post

Could you post your sgpu.log please, it should clear up why the dll isn't found.
https://k1v.nilsschneider.de - Kawai K1 emulated as VSTi/AU
https://heatvst.com - Android Synthesizer with full VST integration
https://gpuimpulsereverb.de - Use your GPU as reverberation DSP

Post

gonzo wrote:Noluck here.. restarted, dll not found again. Put dll in system path environment variable, still nothing. Copied the .dll to system32, still the program doesn't see it. Seems I will give up here :(
From earlier posts...

Google this: D3DXDLLFebruary29.zip

Install it, worked for me

(add to FAQ.... hehe)

Post

I guess he means the RenderSystem_Direct3D9.dll which is part of my installation
https://k1v.nilsschneider.de - Kawai K1 emulated as VSTi/AU
https://heatvst.com - Android Synthesizer with full VST integration
https://gpuimpulsereverb.de - Use your GPU as reverberation DSP

Post

Nils Schneider wrote:Your should note the following: The purpose of outsourcing plugins is not to get more instances of a single pluging, but creating plugins that are very complicated and may sound better then. These plugins, the delay and the chorus, are just a proof-of-concept.
This is understandable, but it is also true that such 'complicated plug-ins' can work as good on normal multi-core processor. While with such 'externalized' plug-ins you'll have problem of synchronization (you can't process effects without latency at all) and - as I see it - problem of programming flexibility: in most cases you'll be forced to code in machine language, you have some constraints on memory (including local memory) and execution flow as well while creating complex plug-ins may require more of programming flexibility than you need for simple plug-ins (you'll need complex branching, C++ classes, large code size, look-up tables, gigabytes of memory space for sampler plug-ins).

Just to be clear about my attitude (some do not perceive my critics well enough it seems): it is perfectly OK to code and release such GPU plug-ins as long as they work, but as for me (as developer) I see problems with them, and so I do not want to play this game.
Image

Post

OK, the February DX update thing did it. Still, the chorus puts the meters all the way up and emits no sound. Bah.

Post

Can you get this code working on my gfx card please? That would be a HUGE step forward (wrt. complicated stuff).

http://www.dspdimension.com/src/smbPitchShift.cpp

Right now I am using it as VST and it eats my CPU for breakfast... :-(

Cheers
--th
I'm the stereo chancellor

Post Reply

Return to “Effects”