Original Post
If you've been using OpenAL, you'll have noticed that the only way of having real time audio effects are via either the EAX Extensions (which have nothing to do with the design methodology of OpenAL, if I may rant) or the recently introduced EFX Extensions. Before EFX was out, I've been working on a DSP like shading system that's sort of OpenAL meets GL_ARB_fragment_program (keep reading, if you're not an OpenGL buff, everything will be clearer a few lines down). Mainly, I wanted to break from the fixed set of EAX, and since even relatively old sound boards have decent DSPs (see the Kx project for some amazing utilization of the Emu10K chips), that should be possible in real time. Seeing as I knew nothing about audio programming, I turned to friend and GameDev member Jonathan "LoneSock" Dummer to help me with this. We eventually came with a framework for a "proposed" OpenAL source shaders extension. It mainly allows you to write small assembly language programs (for now, a high level compiler is coming soon) that execute on OpenAL Sources. I have created a wrapper DLL that adds support for this extension (albeit in software, amazingly slow for now) with the help of a friend and coworker of mine, Hisham H. Fawzy (Credit given when due, he did the wrapper framework, and a handy parser for overriding existing AL funcitons :) ). We created 2 new extensions: AL_TWX_asm_shader_objects and AL_TWX_source_shader_asm (extensive documentation coming soon, for now, check the ALEXT header supplied below and the sample application). To get started, here're the files we have about this, publicly available online: 1) A replacement wrap_oal.dll (IMPORTANT: READ THE SECTION CALLED INSTALLATION NOTES, FURTHER DOWN, BEFORE DOING ANYTHING WITH THIS FILE). 2) A header file for the extensions, alext.h 3) A sample application that uses the extensions, along with a mono wav file and a couple of shaders: ALSL_Sample.rar 4) A quick reference document, for the extension instructions and registers: alasm_ref.txt INSTALLATION NOTES: 1) Download the latest OpenAL installer from OpenAL.org 2) Run the installer (D-U-H!) 3) Go to the windows/system32 dir 4) Rename wrap_oal.dll to oal_icd.dll 5) Copy our wrap_oal.dll to the system32 dir, and you're done. You can run the binary available with the ALSL Sample rar, the command line parameters are: alsl.exe Keep in mind that the modified DLL will dump the processed results in a wav file in the same directory as the application using it, so that you can check it with any audio viewer (we use Audacity). Credits go to Jonathan for the wave writing function. Let me know if you need any more info, make suggestions, etc. We hope to get this in a mature enough form to warrant IHV support, and any help would be appreciated. For bug reports, additional instructions requests or if you need to talk more privately, feel free to email me directly: sherief 'at' mganin.com Please try to share your shaders, as they'll help everyone learn, innovate, and show the world how buggy my code really is :D :D .