|
|||||||
![]() |
|
|
Thread Tools |
|
|
#1 |
|
DriverHeaven Newbie
Join Date: Oct 2005
Posts: 4
Rep Power: 0 ![]() |
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. |
|
|
|
|
|
#2 |
|
S-3D enthusiast
|
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. |
|
|
|
|
|
|
|
|
DriverHeaven Newbie
Join Date: Oct 2005
Posts: 4
Rep Power: 0 ![]() |
Quote:
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. |
|
|
|
|
|
|
#4 | |
|
S-3D enthusiast
|
My version of a noise canceller :
http://www.hardwareheaven.com/effects-dsp/88350-noise-canceller-improved.html 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.hardwareheaven.com/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:
|
|
|
|
|
|
|
|
|
DriverHeaven Newbie
Join Date: Oct 2005
Posts: 4
Rep Power: 0 ![]() |
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) |
|
|
|
|
|
#6 | |
|
HardwareHeaven Extreme Member
Join Date: Jan 2005
Posts: 5,507
Rep Power: 61 ![]() ![]() ![]() ![]() ![]() ![]() |
Quote:
|
|
|
|
|
![]() |
| Bookmarks |
| Thread Tools | |
|
|