• Home
  • Reviews
  • Articles
  • News
  • Tools
  • GamingHeaven
  • Forums
  • Network
 

Go Back   DriverHeaven.net > Forums > Hardware and Related Topics > kX Project Audio Driver Support Forum > Effects and the DSP

Notices

Reply
 
LinkBack Thread Tools
Old Oct 20, 2005, 01:38 PM   #1
DriverHeaven Newbie
 
Join Date: Oct 2005
Posts: 4
atalwar is on a distinguished road

SDK Questions / Any Basic Tutorial

Hi, can someone find some time to put in some papaer explaining a little bit about SDK architecture and what basis steps one needs to follow to start developing a plugin VC++ 6.0

I took a look at the demo project but that is a lot of files included and i think the entire effects lib is included too, is that mandatory for every plugin to include all those and be part of fxlib or can one make a single plugin to test it out and then go on adding it to fxlib etc.

A startup vc++ template would be vey helpful too.

what role does vc++ does exactly play in kx project plugin.
can i take the input signal process in vc++ and all and then send out signal back etc, much like vst & dx plugins do in their respective hosts. and If so are the vc++ dsp limited by the tram sizes etc of emu10k1/2 chips.

i have lot of creative ideas to further extend kx audio project, but need a headstart in some direction and some basics cleared before i jump into something that by virture is not possible even.
as of now i have a very limited knowledge of vc++ but not too shy of it as have been a programmer for last 9 years and getting hang of it shall be matter of days/weeks.
atalwar is offline   Reply With Quote
Old Oct 20, 2005, 04:31 PM   #2
S-3D enthusiast
 
Tril's Avatar
 
Join Date: Sep 2004
Location: Canada
Posts: 1,410
Tril is on a distinguished road
System Specs

VC++ use in kX plugins is limited to calculating parameters and using more complex gui controls. For example, you can't use a combox without VC++. When making a plugin, you start by writing the microcode.
No signal processing is done in c++. All the processing is done on the soundcard. You have to learn how to program the microcode in dane first. There are two manuals on dane programming and there is the emu10kx manual. I suggest you read them first.

Each plugin has three main files.
da_plugin.cpp (dane exported to c++)
plugin.cpp
plugin.h

When writing plugins, I usually start with the demo as a template and I modify it as required.

Please share your ideas with us even if you are unsure if they would work. There are a few experienced kX plugins programmers here to tell you what can and can't be done. The chances are high that I could tell you if your ideas could be made into plugins.
Tril is offline   Reply With Quote
Old Oct 21, 2005, 12:37 PM   #3
DriverHeaven Newbie
 
Join Date: Oct 2005
Posts: 4
atalwar is on a distinguished road

Quote:
VC++ use in kX plugins is limited to calculating parameters and using more complex gui controls.
Hmm, clears some doubts, so basically the vc++ module acts as a controller,which itself cannot manupulate registers itself, or input and output, but can take a peek at em and change microcode parameters, altering which different effects can be obtained. right?

what i need to make baiscally for learning is input and output swap/ bypass switches.
that take 2 inputs but on one goes out depending on switch state that i think i can do in microcode too using the conditional logic instruction, for a slider if value over 50% send input 2 through and block other, or vice versa. main reason means midi control over bypass of a effect chain or alternate effect chain.

some idea that i had.
1. ADSR envelope control and ADSR with a filter (usinga visual window for adsr control, no slider but tweakeabke envelopes).

2. Frequency analyzer, that does not do audio deformation or anything but just takes a peek at input signal and plots a freq graph , later on with modification to macth frequency response of IN 1 to that of In2 and other.

3. Noise Canceller (this is what i am most interested in)
trial 1.
take a mono signal in from 2 sources, one generating just sound card internal noise, reverse the phase summ that with original signal using a sample delay perhaps aand try to redue the noise.

trial 2 :
sample the input(noise learn)eg guiar in guitar on board vol 0, store than as a sample and a phase changer slider, mix that with live input (guiar vol >0) tweak using sample level delay to cancel out as much noise that can be.

4. tone shaper, tkae input,split into freq zones and deal with each zone individually with a filter and then sum them out for output - all of thing in a single plugin/package.

5. Channel Extractor/Mixer : remove vocals / extract just voclals/ split vocal part and other off center channl part into sep signals, procss them individually send to out.

6. DJ like KILLS (kill low, Kill mid , Kill high) with gain and other adjustments
a lot of thse can be done with a combo of multiple units, but in single package one has to see.



These are what seem to be tops off my heads as of now.
will post more ideas as i get them.

One Request for KX Driver GODS(they do deserve that credit)

Can a provision be made sometime to store a effect chain as a unit that can be used for building blocks. like i have Highpass - expander - LP - chain i want to store this entire combo as a unit and then can be called upon with their connections as a unit and all three load connected ready for in and out assignment.
atalwar is offline   Reply With Quote
Old Oct 21, 2005, 11:36 PM   #4
S-3D enthusiast
 
Tril's Avatar
 
Join Date: Sep 2004
Location: Canada
Posts: 1,410
Tril is on a distinguished road
System Specs

My version of a noise canceller :
Noise Canceller Improved

I don't know if it would work well for what you want to do.

I've tried a little to use the conditional instructions but I could not find a good use for them. You can swap and bypass using volume code easily controlled using c++. You can use c++ to change a Volume register like in the code :

macs Out, 0, In, Volume; Out = 0 + In*Volume

To swap two signal, you could write :

macs Out1, 0, In1, Volume1; Out1 = 0 + In1*Volume1
macs Out1, 0, In2, Volume2; Out2 = 0 + In2*Volume1
macs Out2, 0, In1, Volume1; Out2 = 0 + In1*Volume2
macs Out2, 0, In2, Volume2; Out1 = 0 + In2*Volume2

If Volume1 = 1 and Volume 2 = 0,
Out1 = In1
Out2 = In2

If Volume1 = 0 and Volume 2 = 1,
Out1 = In2
Out2 = In1

It's that easy.

When using c++, the values of the sliders are read by c++ and the c++ code decides what to write to the register. You would write your logic code in c++ and apply some logic with your sliders values and write to some registers (registers for volume, etc).

Here are some comments on your ideas.

1. I have no idea what you are talking about. I can't help you here.

2. You can't do that. You can't analyse the frequency of the audio with microcode. If you want to use a frequency analyser, you have to send the audio through ASIO to an ASIO host and let the a plugin do the job or send the audio to RecL and RecR and let some software do the processing. Either way, it's the processor that's doing the work.

3. You have my way of doing it.http://www.driverheaven.net/images/s...big%20grin.gif
You first way. Is possible. You can easily inverse the phase of a signal by multiplying by -1. You can make short delays and change them with a slider by using iTram. I'm not sure it would work well.
Your second way, I'm not sure it would work well.

4. Possible. Could currently be done with multiples badpass filters, effects and a lot of stereo mixers. That can be used to test if it would be worthwhile to make a sigle package.

5. It can surely be done. I'm interested in that kind of plugins. I don't really have a use for this but this kind of plugin gets me curious. I am interested in knowing how it's done. If you have any info on this, please share it. Links to websites welcome. I'm not talking about only inversing the polarity of one channel and add the two channels together. That does not really give good results.

6. That would be nice. I'm sure it can be done.

Quote:
Can a provision be made sometime to store a effect chain as a unit that can be used for building blocks. like i have Highpass - expander - LP - chain i want to store this entire combo as a unit and then can be called upon with their connections as a unit and all three load connected ready for in and out assignment.
Sadly, I don't think it's possible. The closest to what you want is that you can save the current dsp and reload it later. You can then make many different DSP for different purposes.
Tril is offline   Reply With Quote
Old Oct 22, 2005, 02:17 AM   #5
DriverHeaven Newbie
 
Join Date: Oct 2005
Posts: 4
atalwar is on a distinguished road

hi, tril,
i'll explore more into the ideas given by you.

btw successfully compiled my first test plugin in vc++ thx for the starter info.

for a input swap/switch (kind of bypass switch over a set modules) i wrote this microcode (mono)

control vol = 0;
input in1,in2;
output o ;
static a,xo;

macints a,0,1,vol;
interp xo,in1,a,0 ;
macs o, xo,a,in2;
end ;

planning to replace first macints by a checkbox control and get rid of vol.

macints sets value of a to 0 or 1 ; a=0 when vol = 0, a=1 when vol >0

nothing major yet achieved but atleast a positive headstart.
THX for input.

Needed one clarification;I read in the help file but not sure if its up to date.
the INput registers eg in1 : Is it must that they be called only once in code. and if they need to be used again, one has to assign thier values to other registers and use those registers?
i tried that in some code and it worked fine when i replaces second call to in1 by putting in a intermediate register to hold the value. (in same cycle)
atalwar is offline   Reply With Quote
Old Oct 22, 2005, 07:33 PM   #6
DriverHeaven Extreme Member
 
Join Date: Jan 2005
Posts: 4,104
Russ has a spectacular aura aboutRuss has a spectacular aura aboutRuss has a spectacular aura about

Quote:
Originally Posted by atalwar
hi, tril,
Needed one clarification;I read in the help file but not sure if its up to date.
the INput registers eg in1 : Is it must that they be called only once in code. and if they need to be used again, one has to assign thier values to other registers and use those registers?
i tried that in some code and it worked fine when i replaces second call to in1 by putting in a intermediate register to hold the value. (in same cycle)
Yes, you should not use an input register more than once in the microcode. The result of doing so is undefined, and thus will depend on how the plugin is wired in the DSP, and possibly which sound card you have.
Russ is offline   Reply With Quote
Reply

Bookmarks

Thread Tools


Similar Threads for: SDK Questions / Any Basic Tutorial
Thread Thread Starter Forum Replies Last Post
Photoshop Tutorial Request Thread daedal Heavenly Visions 13 Mar 7, 2006 12:30 PM
4 BASIC QUESTIONS from NEWBY ron505 General Discussion 4 Jan 9, 2005 06:22 AM
Far Cry SDK v1.0 MIG-31 News 0 Aug 2, 2004 12:25 PM
DirectX 9.0 SDK Update - Summer 2003 Dom News 0 Sep 23, 2003 08:58 AM
Stephen Orr Interview Questions... Shrink All-in-Wonder, TV, and Video Capture 41 Aug 4, 2003 06:17 PM




 

 
Powered by: vBulletin
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0
Artwork by Allan 'Zardon' Campbell, vBulletin implementation by Craig '5320' Humphreys based on original artwork by Ratchet.

All times are GMT -5. The time now is 03:46 AM. Copyright ©2008 HeavenMedia.net