HardwareHeaven.com

HardwareHeaven.com

Looking for the skin chooser?
 
 
  • Home

  • Hardware reviews

  • Articles

  • News

  • Tools

  • Gaming at HardwareHeaven

  • Forums

 

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


Reply
 
Thread Tools
Old Dec 22, 2005, 08:57 AM   #1
Tail Razer
 
Maddogg6's Avatar
 
Join Date: Jun 2005
Location: Bernyurass, AZ - USA
Posts: 4,027
Rep Power: 0
Maddogg6 will become famous soon enoughMaddogg6 will become famous soon enough

10KX to decode DTMF?

Id think this is possible - but the frquencies are so close.

My first instinct is to use multiple bandpass filters. but Im not sure how such close multiple frequencies would sperate.

Is there more reliable ways?

Is access to this 'decoded' data even possible - like saved to a text file.

I'm thinking a preset threshold can be detected and reported for each bandpass plugin set to the 7 (or 8) freqs that make up a DTMF matrix.

Has anyone tried something like this?


Code:
---------------------- DTMF Matirix -----------------------
		1209Hz  1336Hz  1477Hz  1633Hz
697Hz	   1	   2	               3 	              A 
 770Hz	 4	   5 	              6 	              B 
 852Hz	 7	                 8 	              9 	              C
 941Hz	    *	   0	               # 	              D

Hope that looks right...

Last edited by Maddogg6; Dec 22, 2005 at 09:04 AM.
Maddogg6 is offline   Reply With Quote


Old Dec 22, 2005, 09:04 AM Threadstarter Thread Starter   #2
Tail Razer
 
Maddogg6's Avatar
 
Join Date: Jun 2005
Location: Bernyurass, AZ - USA
Posts: 4,027
Rep Power: 0
Maddogg6 will become famous soon enoughMaddogg6 will become famous soon enough

I guess it wont look right...
Maddogg6 is offline   Reply With Quote
Old Dec 22, 2005, 09:24 AM Threadstarter Thread Starter   #3
Tail Razer
 
Maddogg6's Avatar
 
Join Date: Jun 2005
Location: Bernyurass, AZ - USA
Posts: 4,027
Rep Power: 0
Maddogg6 will become famous soon enoughMaddogg6 will become famous soon enough

I did find source code for a 'Goertzel' algo...

Code:
#define MAX_BINS            12
#define GOERTZEL_N          92

int         sample_count;
double      q1[ MAX_BINS ];
double      q2[ MAX_BINS ];
double      r[ MAX_BINS ];
double      coefs[ MAX_BINS*2 ] = {
1.7088388,
1.6339398,
1.5514226,
1.4616719,

1.1533606,
1.0391679,
0.7968022,
0.5395935,

-0.6697592,
-1.0391679,
-1.3651063,
-1.7088388};


/*----------------------------------------------------------------------------
 *  post_testing
 *----------------------------------------------------------------------------
 * This is where we look at the bins and decide if we have a valid signal.
 */
void
post_testing()
{
int         row, col, see_digit;
int         peak_count, max_index;
double      maxval, t;
int         i;
char *  row_col_ascii_codes[4][4] = {
        {"1", "2", "3", "A"},
        {"4", "5", "6", "B"},
        {"7", "8", "9", "C"},
        {"*", "0", "#", "D"}};


    /* Find the largest in the row group. */
    row = 0;
    maxval = 0.0;
    for ( i=0; i<4; i++ )
    {
        if ( r[i] > maxval )
        {
            maxval = r[i];
            row = i;
        }
    }

    /* Find the largest in the column group. */
    col = 4;
    maxval = 0.0;
    for ( i=4; i<8; i++ )
    {
        if ( r[i] > maxval )
        {
            maxval = r[i];
            col = i;
        }
    }


    /* Check for minimum energy */

    if ( r[row] < 4.0e5 )   /* 2.0e5 ... 1.0e8 no change */
    {
        /* energy not high enough */
    }
    else if ( r[col] < 4.0e5 )
    {
        /* energy not high enough */
    }
    else
    {
        see_digit = TRUE;

        /* Twist check
         * CEPT => twist < 6dB
         * AT&T => forward twist < 4dB and reverse twist < 8dB
         *  -ndB < 10 log10( v1 / v2 ), where v1 < v2
         *  -4dB < 10 log10( v1 / v2 )
         *  -0.4  < log10( v1 / v2 )
         *  0.398 < v1 / v2
         *  0.398 * v2 < v1
         */
        if ( r[col] > r[row] )
        {
            /* Normal twist */
            max_index = col;
            if ( r[row] < (r[col] * 0.398) )    /* twist > 4dB, error */
                see_digit = FALSE;
        }
        else /* if ( r[row] > r[col] ) */
        {
            /* Reverse twist */
            max_index = row;
            if ( r[col] < (r[row] * 0.158) )    /* twist > 8db, error */
                see_digit = FALSE;
        }

        /* Signal to noise test
         * AT&T states that the noise must be 16dB down from the signal.
         * Here we count the number of signals above the threshold and
         * there ought to be only two.
         */
        if ( r[max_index] > 1.0e9 )
            t = r[max_index] * 0.158;
        else
            t = r[max_index] * 0.010;

        peak_count = 0;
        for ( i=0; i<8; i++ )
        {
            if ( r[i] > t )
                peak_count++;
        }
        if ( peak_count > 2 )
            see_digit = FALSE;

        if ( see_digit )
        {
            printf( "%s", row_col_ascii_codes[row][col-4] );
            fflush(stdout);
        }
    }
}



/*----------------------------------------------------------------------------
 *  goertzel
 *----------------------------------------------------------------------------
 */
void
goertzel( int sample )
{
double      q0;
ui32        i;

    if ( sample_count < GOERTZEL_N )
    {
        sample_count++;
        for ( i=0; i<MAX_BINS; i++ )
        {
            q0 = coefs[i] * q1[i] - q2[i] + sample;
            q2[i] = q1[i];
            q1[i] = q0;
        }
    }
    else
    {
        for ( i=0; i<MAX_BINS; i++ )
        {
            r[i] = (q1[i] * q1[i]) + (q2[i] * q2[i]) - (coefs[i] * q1[i] * q2[i]);
            q1[i] = 0.0;
            q2[i] = 0.0;
        }
        post_testing();
        sample_count = 0;
    }
}
Maddogg6 is offline   Reply With Quote
Old Dec 22, 2005, 11:28 AM   #4
S-3D enthusiast
 
Tril's Avatar
 
Join Date: Sep 2004
Location: Canada
Posts: 1,676
Rep Power: 64
Tril has much to be proud ofTril has much to be proud ofTril has much to be proud ofTril has much to be proud ofTril has much to be proud ofTril has much to be proud ofTril has much to be proud ofTril has much to be proud ofTril has much to be proud ofTril has much to be proud of
System Specs

First, why do you want to make something like that?

If you want to use that 'Goertzel' algo, you will have to use an ASIO plugin because you need the c++ code to access all the samples.

It may be possible to do this in a kX plugin but you will need to make a c++ plugin.

I'm thinking about something a little like the Peak plugin. You will need a timer to read the content of some registers.

You will probably need at least 2nd order bandpass filters because the frequencies are so close. Even a 2nd order won't eliminate completely the closest frquencies but it will be enough if you use a threshold that is high enough as a parameter. You have 8 frequencies. So you need 16 1st order bandpass filters. You can easily make these. Simply use kX bandpass filter's code. Set the plugin to the required frequency and set the width to 20. For music, 20 would be too much because it can cause ringing but here you need it. Click Edit on the plugin in the DSP and it will give you the values of a and b that you need for the filter. Repeat for all the frequencies. You can then make a bandpass filter plugin with one input and 8 ouputs.

Apart from that, you can use the code from Peak, but 4 times to get 8 inputs. Change the code of the plugin Peak pplugin to accept 8 inputs unstead of 2 and remove the code to display the bar graph and replace it by a label to write the key numbers.

I think that I can make it. I'll post it later if I decide to make it and if I'm successful.
Tril is offline   Reply With Quote
Old Dec 22, 2005, 06:55 PM Threadstarter Thread Starter   #5
Tail Razer
 
Maddogg6's Avatar
 
Join Date: Jun 2005
Location: Bernyurass, AZ - USA
Posts: 4,027
Rep Power: 0
Maddogg6 will become famous soon enoughMaddogg6 will become famous soon enough

Well for application, I can think of 100 ways to use it...

1) DTMF signals could automate KX setting - how cool would this be, to have an MP3 that first set FX levels, mute speakers and enable headphone output, turn off reverb etc... This concept alone has several possibilities if these decoded keys can be implemented to change KX params.

U.S. TV use DTMF to automate TV station - for instance - DTMF tones que when a localized commercial is to be inserted by local station. I was thinking more on the lines of just outputting the decoded keys to a file as a simple way to interface with an external app (that I would like to use to learn C++ with as a real world use, it seems simple enough and is quite an interesting propect for me)

2) External applications like home automation via ANY audio transfering method, radio, Telephone etc..

HAM radio operators use DTMF to control radios and repeaters. And this concept has a WIDE range off possibilities.

So I guess the next Q is - is it even possible to pass the decoded keys to an external app? - or even simply save the data to a text file (that an external app could detect changes in and then react in some way)

Other than those reasons - its just an idea Id like to buid upon to learn more about KX and C++ . I wasn't necessarily soliciting it to be done for me - but for dane this would be a huge help (and greatly appreciated, btw.) if you did that part - so to keep DSP resources lower (I assume a single plugin can make use of ONLY needed resources, like no need for adjusting all the freqs and Q's - if hard coded - would release resources - is this correct?)

So it seems at least feasable for the 10KX dsp to detect... now its a matter of making the data do some work - or making data available outside KX.

Also...
I see there are algos that are either based on time or frequency

I *think* the posted algo is FFT based.

I also read that TIME based algos are more reliable, I also read 10KX is a 'time based' dsp as opposed to freq based.
So it just seem to all fit, that it was possible. Its more intersting for me to learn from than 'HELLO world' apps - and I do find a ton of examples in C++ about text file handeling.

I imagine a better interface to an external app is possible using the KX API - but this may have to come later when I get a better grip on C++. But I conceed it *may* be the only way to get this data externally.

Oh.. and thanks Trill

Last edited by Maddogg6; Dec 22, 2005 at 07:03 PM.
Maddogg6 is offline   Reply With Quote
Old Dec 22, 2005, 09:29 PM Threadstarter Thread Starter   #6
Tail Razer
 
Maddogg6's Avatar
 
Join Date: Jun 2005
Location: Bernyurass, AZ - USA
Posts: 4,027
Rep Power: 0
Maddogg6 will become famous soon enoughMaddogg6 will become famous soon enough

Ok I did some reading up...

This is what Im thinking;

Using bandpass with hi-Q - detecting saturation could set a flag in a (GPR) register that (it seems) could be read even by KX console and pipe output to a text file - with no need of external programming - but would only work for 1 digit at a time - OR make multiple registers as 'buffers'

Am I all wet on this logic?

Last edited by Maddogg6; Dec 22, 2005 at 10:27 PM.
Maddogg6 is offline   Reply With Quote
Old Dec 22, 2005, 11:31 PM   #7
HardwareHeaven Extreme Member
 
Join Date: Jan 2005
Posts: 5,563
Rep Power: 62
Russ is just super!Russ is just super!Russ is just super!Russ is just super!Russ is just super!Russ is just super!

One issue you have is that there is no mechanism to fire an event based on the contents of a register. You would have to poll the register using a timer, which means you would probably need some mechanism within your DSP code, to store values that haven't been accounted for as of yet, etc. Something like this might work better as a VST.
Russ is online now   Reply With Quote
Old Dec 23, 2005, 12:14 AM Threadstarter Thread Starter   #8
Tail Razer
 
Maddogg6's Avatar
 
Join Date: Jun 2005
Location: Bernyurass, AZ - USA
Posts: 4,027
Rep Power: 0
Maddogg6 will become famous soon enoughMaddogg6 will become famous soon enough

This seems a bit overkill to me - as needing a VST host would be needed and still doesnt address controlling KX params or storing the data AFAIK.

Granted a VST would allow using ANY algo to detect the tones, but Im still left with putting it to work some way.

Now - I see theres a 'KXADDON' but looking at the code - it looks like its meant for external control (writing to) of registers and I dont see how (what functions) read GPR's

This I was thinking a batch file that reads GPR via KXCTRL and pipe output to an addended textfile - in an endless loop - seems like a possibility? I understand this will NOT guarentee receiving and recording all results - but Im trying to start somewhere that gives me a better insight in KX and learn som C++ too along the way.

First I need to understand how its accomplished logically first.

I assume its possible to write to a GPR via dane - is this correct?

Right now - Im just trying to read ANY GPR with KXconsole and have yet for find a GPR <id> thats in use in a plugin in my DSP.. I only get GET GPR FAILED - not sure what format the <id> needs to be - The <pgm> looks like the Plugin ID # in the[] that pop up in KX DSP.

Another question is - theres 'gf' command - what is this reading and writing. I first though it was FX BUSS levels. but this doesnt seem to be.

For instance just trying to read what gain a GIANHQ is set to via KXCTRL.

I tried
gg 3 0x0

3 - is the ID of gain HQ in my DSP
0x0 - is a defined register in the dane source

it says GET GPR FAILED.
Maddogg6 is offline   Reply With Quote
Old Dec 23, 2005, 02:39 AM   #9
HardwareHeaven Extreme Member
 
Join Date: Jan 2005
Posts: 5,563
Rep Power: 62
Russ is just super!Russ is just super!Russ is just super!Russ is just super!Russ is just super!Russ is just super!

You can use the kxapi to read and write registers (outside a plugin or addon). i.e. Using the same interface the kxctrl itself uses.

To read/write registers in kx console, do the following:
Find the number of the plugin that you want in the DSP window (lets say the plugin is number '3').
In kx console type 'mp 3 <enter>'
This will list all the registers (including the current value) for that plugin. Find the register that you want and note the number to the left in square brackets (lets say the number in brackets is 8007).
Type in kx console 'gg 3 8007 <enter>' to read the value of that register. You can also write to the same register using the same format with the 'sg' command, except add the new value (hex) to the end, i.e. 'sg 3 8007 0xa <enter>' would set that register to 10.

Last edited by Russ; Dec 23, 2005 at 03:14 AM. Reason: typo
Russ is online now   Reply With Quote
Old Dec 23, 2005, 02:42 AM   #10
S-3D enthusiast
 
Tril's Avatar
 
Join Date: Sep 2004
Location: Canada
Posts: 1,676
Rep Power: 64
Tril has much to be proud ofTril has much to be proud ofTril has much to be proud ofTril has much to be proud ofTril has much to be proud ofTril has much to be proud ofTril has much to be proud ofTril has much to be proud ofTril has much to be proud ofTril has much to be proud of
System Specs

I made a basic DTMF Decoder plugin. Download here.

I gave you the source code. It can be improved. I leave that to you Maddogg6. It already uses a lot of instructions so I only used first order bandpass filters. I took the Peak plugin code and I modified it to do what I wanted.

The slider is used to set a threshold between detecting and not detecting.

It's far from perfect. It only shows the last key it detected and it can't make the difference between a key that is pushed two times from a key that is touched only once.

If two codes of two keys are played at the same time, it will detect the two one after the other, in the order of the lines of code.

You could write the codes to a text file instead of displaying them in in a label.

The tweak window needs to be open for the plugin to work.

In C++ :
To read a register, you use get_dsp_register.
To write to a register, you use set_dsp_register.
Tril is offline   Reply With Quote
Old Dec 23, 2005, 05:06 AM Threadstarter Thread Starter   #11
Tail Razer
 
Maddogg6's Avatar
 
Join Date: Jun 2005
Location: Bernyurass, AZ - USA
Posts: 4,027
Rep Power: 0
Maddogg6 will become famous soon enoughMaddogg6 will become famous soon enough

Holy CRAP!

Thanks sooooo much Tril - this is way more than I expected, the jumpstart in the dane code alone is a huge help. THANK YOU 1,000,000,000,000,000,000,000,001.25 times.

I understand this may not be 'perfect' but if functional I'm still quite happy.

@Russ:
OK I understand this now - Thanks so much for this imput.

But...

The first time trying (gg KXCTRL command) kept giving errors - I had to re-init the dsp and reload my settings for this to work - is this a known bug - or did I (prolly) type something wrong to cause this to happen?


THANKS to to you both. and CHEERS!
[*raised mug of root beer - cuz nows NOT the time for me to drink... yet*]

Last edited by Maddogg6; Dec 23, 2005 at 05:08 AM. Reason: left out info that only a psychic would know
Maddogg6 is offline   Reply With Quote
Old Dec 23, 2005, 05:33 AM Threadstarter Thread Starter   #12
Tail Razer
 
Maddogg6's Avatar
 
Join Date: Jun 2005
Location: Bernyurass, AZ - USA
Posts: 4,027
Rep Power: 0
Maddogg6 will become famous soon enoughMaddogg6 will become famous soon enough

Tril:
Theres a DA file and a KXL - this is unfamiliar to me?

Is one just a multi-filter (the da file)?
Maddogg6 is offline   Reply With Quote
Old Dec 23, 2005, 06:35 AM   #13
S-3D enthusiast
 
Tril's Avatar
 
Join Date: Sep 2004
Location: Canada
Posts: 1,676
Rep Power: 64
Tril has much to be proud ofTril has much to be proud ofTril has much to be proud ofTril has much to be proud ofTril has much to be proud ofTril has much to be proud ofTril has much to be proud ofTril has much to be proud ofTril has much to be proud ofTril has much to be proud of
System Specs

If you register the da file, it will filter the sound but the gui, the timer, the slider and the label won't be there.

The da file is the dane code I wrote. I used it to make the file da_DTMF_Decoder.cpp by clicking on the export to c++ button in the edit window. Be careful if you do it. It removes the underscore between DTMF and Decoder in the file da_DTMF_Decoder.cpp. You have to manually add them.

When you compile the c++ project, the compiler will use the file da_DTMF_Decoder.cpp and all the other source code files to make the kxl file. It's the kxl file that you need to register.

I put 8 outputs on the plugin but they are not needed. I used them to test the bandpass filters by inputting white noise and looking at a frequency graph of each output.
Tril is offline   Reply With Quote
Old Dec 23, 2005, 09:03 AM Threadstarter Thread Starter   #14
Tail Razer
 
Maddogg6's Avatar
 
Join Date: Jun 2005
Location: Bernyurass, AZ - USA
Posts: 4,027
Rep Power: 0
Maddogg6 will become famous soon enoughMaddogg6 will become famous soon enough

Yup - I registered the da first - I reset global to un-screw myself (lol)

The kxl seems like it was compiled for 3538i - or at least the error msg is the same. Im @3538h btw - The ol Midi CH10 thing for me is quite important.

Which brings up another Q - why do I find some plugins work for ALL 3538 - and some only for 'H' or 'I' - do the 'ALL' ones include ALL (as in multiple) versions or are the ALL one dane only?

Is there a place that explains these differences? - I imagine Id need the 'I' SDK for this info. I guess Im a bit suprised at such significant changes in a 'sub' version of 3538.

BUT now I understand why the 'Save as C++' is in the dane editor...
I wondered about this before - now its 'AH DUHHHH!' - You make the dane first - save the C++ - then all the registers are already typed up for ya instead of typing them in for easier GUI designing. Thats pretty cool.
Maddogg6 is offline   Reply With Quote
Old Dec 23, 2005, 09:06 AM   #15
HardwareHeaven Extreme Member
 
Join Date: Jan 2005
Posts: 5,563
Rep Power: 62
Russ is just super!Russ is just super!Russ is just super!Russ is just super!Russ is just super!Russ is just super!

Quote:
or did I (prolly) type something wrong to cause this to happen?
I can only guess, but I would guess that you typed something wrong the first time (are you sure the plugin who's register you were trying to read was enabled and translated?).


Quote:
Q - why do I find some plugins work for ALL 3538 - and some only for 'H' or 'I'
.da files are not version specific (as they are just text files that Dane/kX translates into microcode). .kxl's are .dll's compiled using a specific version of the kxapi. This does not necessarly mean kx version, but rather the kxapi version. If the api stays the same with multiple kx releases then the .kxl's will work with all those kx versions, etc, but if it changes (i.e. bug fixes or new features in the api code, etc), then it will need to be re-compiled to work with the new version of the api.

Last edited by Russ; Dec 23, 2005 at 09:25 AM. Reason: consolidated 2 posts into 1
Russ is online now   Reply With Quote
Old Dec 23, 2005, 09:21 AM Threadstarter Thread Starter   #16
Tail Razer
 
Maddogg6's Avatar
 
Join Date: Jun 2005
Location: Bernyurass, AZ - USA
Posts: 4,027
Rep Power: 0
Maddogg6 will become famous soon enoughMaddogg6 will become famous soon enough

well, Im not sure of anything except death and tax...

I typed several times tho - I did find out what '-mr 3' does - it makes me want to reboot.

About me:
If I have a plugin in the dsp screen - its enabled (except 'phase'), translated and connected. I dis-like clutter - so Im sure this is not the case - it must have been a command I sent prior (from mistyping prolly).

The '-mr 3' caused ALL all my MIXY4x2 to +12db on all inputs according to the level meters - no audio tho (my ears are still ok)

But I did try a bunch of possible numbers for the <id> argument and all i got was 'failed' until I re-init dsp and reloaded my settings, after reading your instructions.
So it must have been from me screwing around.
Maddogg6 is offline   Reply With Quote
Old Dec 23, 2005, 09:32 AM   #17
HardwareHeaven Extreme Member
 
Join Date: Jan 2005
Posts: 5,563
Rep Power: 62
Russ is just super!Russ is just super!Russ is just super!Russ is just super!Russ is just super!Russ is just super!

I an not exactly sure what that command is supposed to do, It appears to partially reinitalize the DSP. I think maybe there is a bug with that instruction. I will have to look at the code for kxctrl and see what it is doing.

<edit> That instruction just calls reset_microcode which is documented as " clears and re-loads pre-defined microcode -- 're-initialize' ", so that was not all the helpful with explaining the behavior of that instruction. i.e. I think it is supposed to reintialize the DSP, but it seems only to do a partial reset.

Last edited by Russ; Dec 23, 2005 at 09:46 AM.
Russ is online now   Reply With Quote
Old Dec 23, 2005, 09:36 AM   #18
S-3D enthusiast
 
Tril's Avatar
 
Join Date: Sep 2004
Location: Canada
Posts: 1,676
Rep Power: 64
Tril has much to be proud ofTril has much to be proud ofTril has much to be proud ofTril has much to be proud ofTril has much to be proud ofTril has much to be proud ofTril has much to be proud ofTril has much to be proud ofTril has much to be proud ofTril has much to be proud of
System Specs

The kxl file in the zip file was compiled on 3538i. If it does not work for you, you can recompile it on 3538h since you have all the source code.
Tril is offline   Reply With Quote
Old Dec 23, 2005, 09:49 AM   #19
HardwareHeaven Extreme Member
 
Join Date: Jan 2005
Posts: 5,563
Rep Power: 62
Russ is just super!Russ is just super!Russ is just super!Russ is just super!Russ is just super!Russ is just super!

I do not think he can recompile it himself Tril, as he does not have VC++ 6.
Russ is online now   Reply With Quote
Old Dec 23, 2005, 09:51 AM Threadstarter Thread Starter   #20
Tail Razer
 
Maddogg6's Avatar
 
Join Date: Jun 2005
Location: Bernyurass, AZ - USA
Posts: 4,027
Rep Power: 0
Maddogg6 will become famous soon enoughMaddogg6 will become famous soon enough

Ok.... now its time to drink...

[*passes mugs of Molson to Trill and Russ (Curiously, Trils mug looks frosted)*]

- Ive been to Canada plenty times before and I know how 'we' like our brew-ski's. I lived in MI and visited Windsor on several occasions for a 'Mothers' dinner - oh and Tunnel B-B-Q... (thats the story we gave the customs and Im sticking to it... .MMMMMMMMMmmmmmmmmmmm beeeeer.

Russ - I havent a clue where yur at - so I dont know if your mug is frosted or not. hehe.

Cheers again guys.
Maddogg6 is offline   Reply With Quote
Old Dec 23, 2005, 09:55 AM Threadstarter Thread Starter   #21
Tail Razer
 
Maddogg6's Avatar
 
Join Date: Jun 2005
Location: Bernyurass, AZ - USA
Posts: 4,027
Rep Power: 0
Maddogg6 will become famous soon enoughMaddogg6 will become famous soon enough

Quote:
Originally Posted by Russ
I do not think he can recompile it himself Tril, as he does not have VC++ 6.
Doh - Ok, now Im confused again....

I *thought* the MFC's were for GUI (like reverb station) gui.

So, Im back to Square 1 needing VC++6.... just when I thought I learned sumthin...


Can ANYTHING using KXAPI be compiled with VC++2003.net?
Maddogg6 is offline   Reply With Quote
Old Dec 23, 2005, 09:56 AM Threadstarter Thread Starter   #22
Tail Razer
 
Maddogg6's Avatar
 
Join Date: Jun 2005
Location: Bernyurass, AZ - USA
Posts: 4,027
Rep Power: 0
Maddogg6 will become famous soon enoughMaddogg6 will become famous soon enough

edit: can ANYTHING be compiled using KXAPI with VC++2003.net with out changing headers and such?
Maddogg6 is offline   Reply With Quote
Old Dec 23, 2005, 10:01 AM Threadstarter Thread Starter   #23
Tail Razer
 
Maddogg6's Avatar
 
Join Date: Jun 2005
Location: Bernyurass, AZ - USA
Posts: 4,027
Rep Power: 0
Maddogg6 will become famous soon enoughMaddogg6 will become famous soon enough

@Russ:

This is why I was weighing M$ against open source compilers reguarding 'forward compatability'

This seems severly limiting.
Maddogg6 is offline   Reply With Quote
Old Dec 23, 2005, 10:02 AM Threadstarter Thread Starter   #24
Tail Razer
 
Maddogg6's Avatar
 
Join Date: Jun 2005
Location: Bernyurass, AZ - USA
Posts: 4,027
Rep Power: 0
Maddogg6 will become famous soon enoughMaddogg6 will become famous soon enough

Well, I guess I can still learn C++ with, I just gotta fins something that piqs my interest not sound/music related.

Thanks anyways - I did learn stuff about KX anyway. So Ill still drink..hehe

But were gonna need another round.......
Maddogg6 is offline   Reply With Quote
Old Dec 23, 2005, 10:03 AM   #25
HardwareHeaven Extreme Member
 
Join Date: Jan 2005
Posts: 5,563
Rep Power: 62
Russ is just super!Russ is just super!Russ is just super!Russ is just super!Russ is just super!Russ is just super!

MFC is for the GUI. VC++ 6 (which was used to create KX) uses a different MFC version, and newer MFC versions seem to have a problem with the kxgui code (and only the GUI code, everyting else works). You do not necessarly need VC++ 6, but you do need MFC version 6 to be able to use the kxgui code. One of these days I will try and figure out exactly which functions/classes kxgui uses, and see if I can edit the newer MFC files to make it work.
Russ is online now   Reply With Quote
Old Dec 23, 2005, 10:03 AM Threadstarter Thread Starter   #26
Tail Razer
 
Maddogg6's Avatar
 
Join Date: Jun 2005
Location: Bernyurass, AZ - USA
Posts: 4,027
Rep Power: 0
Maddogg6 will become famous soon enoughMaddogg6 will become famous soon enough

Or maybe that VST idea you first mentioned, now thats making more sense....
Maddogg6 is offline   Reply With Quote
Old Dec 23, 2005, 10:05 AM Threadstarter Thread Starter   #27
Tail Razer
 
Maddogg6's Avatar
 
Join Date: Jun 2005
Location: Bernyurass, AZ - USA
Posts: 4,027
Rep Power: 0
Maddogg6 will become famous soon enoughMaddogg6 will become famous soon enough

Ok - I was assuming the GUI stuff you mentioned is the FANCY gui stuff like reverb station has - or MX6 etc...
Maddogg6 is offline   Reply With Quote
Old Dec 23, 2005, 10:10 AM   #28
HardwareHeaven Extreme Member
 
Join Date: Jan 2005
Posts: 5,563
Rep Power: 62
Russ is just super!Russ is just super!Russ is just super!Russ is just super!Russ is just super!Russ is just super!

No the GUI stuff is the tweak window for all plugins (tweak window/sliders, etc). You could still create plugins, but you would need to do the GUI stuff yourself, instead of using the kx gui stuff.
Russ is online now   Reply With Quote
Old Dec 23, 2005, 10:17 AM Threadstarter Thread Starter   #29
Tail Razer
 
Maddogg6's Avatar
 
Join Date: Jun 2005
Location: Bernyurass, AZ - USA
Posts: 4,027
Rep Power: 0
Maddogg6 will become famous soon enoughMaddogg6 will become famous soon enough

Using a fancy GUI and needing a particular function of MFC makes logical sense, but not for regular sliders that; - when I edited a dane (FXMIX) and added another send (in dane only) - the added slider was automagically added to the FXMix gui without recompiling.

I guess Im completely lost reguarding KX/API now.
Maddogg6 is offline   Reply With Quote
Old Dec 23, 2005, 10:23 AM   #30
HardwareHeaven Extreme Member
 
Join Date: Jan 2005
Posts: 5,563
Rep Power: 62
Russ is just super!Russ is just super!Russ is just super!Russ is just super!Russ is just super!Russ is just super!

Well, you can still use the auto GUI that kx makes, but you would not be able to set the sliders range, etc, and respond to events from the slider.
Russ is online now   Reply With Quote
Reply

Thread Tools