HardwareHeaven.com
Looking for the skin chooser?
 
 
  • Home

  • Reviews

  • Articles

  • News

  • Tools

  • GamingHeaven

  • Forums

  • Network

 

Go Back   HardwareHeaven.com > Forums > Hardware and Related Topics > kX Project Audio Driver Support Forum > General Discussion


Reply
 
Thread Tools
Old Oct 29, 2006, 01:30 AM   #1
Tail Razer
 
Maddogg6's Avatar
 
Join Date: Jun 2005
Location: Bernyurass, AZ - USA
Posts: 4,027
Rep Power: 50
Maddogg6 will become famous soon enoughMaddogg6 will become famous soon enough

vMidiMixer

EDIT: NEW ALL GUI VERSION - V2
Send just about any midi message, including notes, program change
after touch, channel pressure & Pitchwhell in addition to any CC#.

Loads/saves config file

tool tios


----------------------------------
-old version
I made a very simple Virtual Midi Mixer..

It allows sending Midi CC data to any midi out port

It currently only sends CC 0-9 on midi Channel 1 of what ever
output port is selected in a simple windows GUI.

Theres no saved states - nor does it respond to midi input.

Its light weight and uses very little CPU (for me)

Any comments are welcome - but Im not a programmer - so any feature requests beyond it reading a config file or more tracks will most likely be 'beyond me'. (sorry - I suck, I know... )

Any way I made this becuase I find it usefull - and others have expressed interest in such a tool (i think) - so here it is

'vMidiMixer' - By ME...
Find it here
http://www.esnips.com/web/MD6Music/

Last edited by Maddogg6; Nov 1, 2006 at 11:04 AM.
Maddogg6 is offline   Reply With Quote


Old Oct 29, 2006, 07:01 PM   #2
HardwareHeaven Extreme Member
 
Join Date: Jan 2005
Posts: 5,507
Rep Power: 61
Russ is just super!Russ is just super!Russ is just super!Russ is just super!Russ is just super!Russ is just super!

Not a bad idea, although there are already some programs that can do similair (although not always simple to figure out how to use immediatley).

I would suggest allowing the user to pick which controller numbers they want to use with each of the sliders, or, if you want it to be even more useful (and kX specific), you might try and mirror kX's automation options exactly (except for (maybe) the option for 'Raw' as I am not completely sure what that option is for). In any case, just a suggestion...
Russ is online now   Reply With Quote
Old Oct 30, 2006, 08:17 AM Threadstarter Thread Starter   #3
Tail Razer
 
Maddogg6's Avatar
 
Join Date: Jun 2005
Location: Bernyurass, AZ - USA
Posts: 4,027
Rep Power: 50
Maddogg6 will become famous soon enoughMaddogg6 will become famous soon enough

Quote:
Originally Posted by Russ View Post
Not a bad idea, although there are already some programs that can do similair (although not always simple to figure out how to use immediatley).

I would suggest allowing the user to pick which controller numbers they want to use with each of the sliders, or, if you want it to be even more useful (and kX specific), you might try and mirror kX's automation options exactly (except for (maybe) the option for 'Raw' as I am not completely sure what that option is for). In any case, just a suggestion...
Yeah - its not earth shattering -

Seeing as how I cant seem to get anywhere with kx api (even simple ikx throws me - actually its M$VS that gets me!!!) I wouldnt hold my breath on any of that - lol

Tho that would be cool to auto populate as many tabs needed to have every KX automation found - represented and adjustable (even switches) . Maybe someday :S

I do plan to add the ability to read a config file and assign sliders that way - and even maybe make it possible to send SYSEX data (midioutlong() ?? Ive only used midioutshort() in winAPI thus far so... )
Possibly merge with an input as well, I would find usefull.

we'll see I guess...

And...
yeah good Q - what is the 'raw' data - ???
Maddogg6 is offline   Reply With Quote
Old Oct 31, 2006, 06:02 PM   #4
DH Senior Member
 
Join Date: Jan 2003
Location: The Netherlands
Posts: 1,930
Rep Power: 62
Lex Nahumury is just really niceLex Nahumury is just really niceLex Nahumury is just really niceLex Nahumury is just really nice

Quote:
Originally Posted by Maddogg6 View Post
yeah good Q - what is the 'raw' data - ???
That is 'unformated midi data bytes' aka 'raw midi data'.
Wth raw data, you have to interprete incoming midi data bytes into 'midi messages' yourself.
This gives more freedom, and was initialy added to accomodate the DSP-Synths.

Cheers,

/Lex.
Lex Nahumury is offline   Reply With Quote
Old Oct 31, 2006, 08:10 PM Threadstarter Thread Starter   #5
Tail Razer
 
Maddogg6's Avatar
 
Join Date: Jun 2005
Location: Bernyurass, AZ - USA
Posts: 4,027
Rep Power: 50
Maddogg6 will become famous soon enoughMaddogg6 will become famous soon enough

Quote:
Originally Posted by Lex Nahumury View Post
That is 'unformated midi data bytes' aka 'raw midi data'.
Wth raw data, you have to interprete incoming midi data bytes into 'midi messages' yourself.
This gives more freedom, and was initialy added to accomodate the DSP-Synths.

Cheers,

/Lex.
Ok - that makes sense.
Does that speed up possible transmission rates this way as well (seems to by pass KX decoding midi data this way) - I seen a post you refering to kxcontrol as slow - but Im not sure if that meant midi is slow in general - or that kxcontrol was unusually slow (which I suppose is a possible side affect of how kx automation is implemented)?

Thanks
Mark
Maddogg6 is offline   Reply With Quote
Old Nov 1, 2006, 10:57 AM Threadstarter Thread Starter   #6
Tail Razer
 
Maddogg6's Avatar
 
Join Date: Jun 2005
Location: Bernyurass, AZ - USA
Posts: 4,027
Rep Power: 50
Maddogg6 will become famous soon enoughMaddogg6 will become famous soon enough

Updated version..
Now V2 - all GUI based (drop downs, & Spinners)
Load config file / auto save on exit
Tool tips

Displays midiOutShort () message alements (status, channel, data1,data2)
Great for KX automation & midi testing - even send NOTES (anything except sysex actually)

Available at link in first post
Maddogg6 is offline   Reply With Quote
Old Nov 1, 2006, 12:51 PM   #7
DH Senior Member
 
Join Date: Jan 2003
Location: The Netherlands
Posts: 1,930
Rep Power: 62
Lex Nahumury is just really niceLex Nahumury is just really niceLex Nahumury is just really niceLex Nahumury is just really nice

Quote:
Originally Posted by Maddogg6 View Post
Does that speed up possible transmission rates this way as well
No not really.

Quote:
I seen a post you refering to kxcontrol as slow - but Im not sure if that meant midi is slow in general - or that kxcontrol was unusually slow (which I suppose is a possible side affect of how kx automation is implemented)?
I meant, kX Control port is too slow for some applications.
That is, while Raw midi input for DSP-Instruments is way too slow (lots of note on/off messages), setting a few plugin-automated parameters now and then, it is more then adequate.
Point is, one hardly notices some automated Level control kicking in a few msec to late/early wheras Note On/Off in a DSP-Instrument is noticed imediatly as 'off beat'.

But like I said, for automating a few DSP parameters it's fine.
Besides, there are more important issues to deal with DSP automation
like midi resolution and non-interpolated DSP-Controls (causing zipper-noise) etc.

Cheers,

/Lex.
Lex Nahumury is offline   Reply With Quote
Old Nov 1, 2006, 01:04 PM   #8
DH Senior Member
 
Join Date: Jan 2003
Location: The Netherlands
Posts: 1,930
Rep Power: 62
Lex Nahumury is just really niceLex Nahumury is just really niceLex Nahumury is just really niceLex Nahumury is just really nice

Quote:
Originally Posted by Maddogg6 View Post
Seeing as how I cant seem to get anywhere with kx api (even simple ikx throws me - actually its M$VS that gets me!!!)
Sorry, I don't understand.
What did you use to write this app then?
And what do you mean by "....simple ikx throws me"?

/Lex.
Lex Nahumury is offline   Reply With Quote
Old Nov 1, 2006, 08:56 PM Threadstarter Thread Starter   #9
Tail Razer
 
Maddogg6's Avatar
 
Join Date: Jun 2005
Location: Bernyurass, AZ - USA
Posts: 4,027
Rep Power: 50
Maddogg6 will become famous soon enoughMaddogg6 will become famous soon enough

hehe - I have had a hard time getting even simple tutorials to compile with M$VS(C/++) - which Im certain is a result of my lack of understanding the IDE - I find it overwealmingly complicated for me to get the simple things to learn from to work.

This program I made with PureBasic - if KX didnt rely on classes - I could easily import and use KX API - and do stuff right in purebasic - its not impossible - but my lack in M$C knowledge keeps me from converting the types (and thus the KX Classes)
- I tried to make a simple wrapper functions for the KX API - to manipulate ac97 registers - but If I mis understood this would not suprise me - the only KX API documentation is the headerfiles and examples - and one needs to have a grasp of C++ already for them to be 'informative'
I am able to convert most types and defines, and even func calls - but I get thrown with classes in general ....

Code:
        if(strcmp(argv[0],"-gac97")==NULL)
        {
            if(argc<2)
             help();
            else
            {
            byte reg;
            word val;
            if(sscanf(argv[1],"%x",&reg)==1)
            {
                if(!ikx->ac97_read(reg,&val)) '<< Bolded
                 printf("AC97[reg=%x]=%x\n",reg,val);
                else
                 printf("error reading AC97 reg=%x\n",reg);
            }
            else help();
            }
I follow the whole thing except whats bolded
the iKx class (I think thats what I would call it - it looked like it was defined as a class in one of the header files) is used to query the ac97 register (+2argument).
I guess its possible to 'emulate' this bolded command (in other languages) - but I dont understand what its doing in C/++ - to apply it in another language. Which also means I have no idea what to do with the class definitions in the headers.
By 'possible' it may mean making a C++ wrapper in VC - or even re-writing the libs - and export differently..?? Thats what I was refering to 'simple iKx' trowing me.

I have with success called functions from libs in different languages, like irlicht, OpenGL, GTK - but were all C libs - I was one hoping KX would move to one of the OS freeware compilers - which would make KX api use MUCH simpler in sooo many other languages.

I just cant get a grip on C/++ ??? I tried and just get frustrated in not seeing some kind of successful end result. (all the setups needed just for 'hello world' is frustrating enough to me). Not to mention it seems like I waste hours trying to apply a tutorial made for an older version of M$VS (this goes for vb/C/C++ etcc btw).

Last edited by Maddogg6; Nov 1, 2006 at 09:03 PM.
Maddogg6 is offline   Reply With Quote
Old Nov 1, 2006, 11:27 PM   #10
HardwareHeaven Extreme Member
 
Join Date: Jan 2005
Posts: 5,507
Rep Power: 61
Russ is just super!Russ is just super!Russ is just super!Russ is just super!Russ is just super!Russ is just super!

The second version is better, but I would still like to see something that is specific to kX's Automation options, and simple to use (i.e. I do not want to have to know the internals of MIDI messages to be able to use it to control a plugin, etc). The advanced stuff is good too (for extra control and generic testing, etc), as an advanced option, but considering that other programs are available for this (MIDI-OX for example), I was thinking that something more specific to kX would be better.

i.e.
Something like this (just a quick little program a threw together for testing automation with plugins).

In any case, it is just an idea...

-Russ

<edit>
I forget to mention that the default MIDI device is not shown in the port selection combo. (i.e. if KX Synth is your default MIDI device in the Control Panel, it is not shown in your port selection combo (it shows as MIDI Mapper instead)).
</edit>

Last edited by Russ; Nov 14, 2006 at 03:52 AM. Reason: typo
Russ is online now   Reply With Quote
Old Nov 2, 2006, 01:47 AM Threadstarter Thread Starter   #11
Tail Razer
 
Maddogg6's Avatar
 
Join Date: Jun 2005
Location: Bernyurass, AZ - USA
Posts: 4,027
Rep Power: 50
Maddogg6 will become famous soon enoughMaddogg6 will become famous soon enough

Quote:
Originally Posted by Russ View Post
<edit>
I forget to mention that the default MIDI device is not shown in the port selection combo. (i.e. if KX Synth is your default MIDI device in the Control Panel, it is not shown in your port selection combo (it shows as MIDI Mapper instead)).
</edit>
oops - I didnt add saving the midi port.... :S

Ill kick around some idea's and see what I can come up with.

Thanks guys...
Maddogg6 is offline   Reply With Quote
Old Nov 2, 2006, 06:36 PM Threadstarter Thread Starter   #12
Tail Razer
 
Maddogg6's Avatar
 
Join Date: Jun 2005
Location: Bernyurass, AZ - USA
Posts: 4,027
Rep Power: 50
Maddogg6 will become famous soon enoughMaddogg6 will become famous soon enough

I dont suppose its possble to query kxctrl.exe for what is configured in KX Automation? - I dont see a way. - but alot of the commands I dont understand other then listing modules and the registers used.(--mp x)

I was thinking if I could pipe kxctrl output to a text file - listing all kx automated controls - I could parse this text file and make a mixer panel based on that.. ?? but I dont think its possible with kxctrl.exe.
Maddogg6 is offline   Reply With Quote
Old Nov 3, 2006, 12:01 AM   #13
HardwareHeaven Extreme Member
 
Join Date: Jan 2005
Posts: 5,507
Rep Power: 61
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, there is no kxctrl command to do that.

It might be possible to parse a saved config file.
i.e.
User saves thier kX Automation settings in a config.
Parse the saved config to make a mixer panel that only includes automation parameters that are defined/saved (although you would not get the parameter names, etc).

Last edited by Russ; Nov 3, 2006 at 03:05 AM. Reason: typo
Russ is online now   Reply With Quote
Old Nov 3, 2006, 02:21 AM Threadstarter Thread Starter   #14
Tail Razer
 
Maddogg6's Avatar
 
Join Date: Jun 2005
Location: Bernyurass, AZ - USA
Posts: 4,027
Rep Power: 50
Maddogg6 will become famous soon enoughMaddogg6 will become famous soon enough

Ah yes - good idea.... I think I can do that...
Maddogg6 is offline   Reply With Quote
Old Nov 9, 2006, 08:51 PM   #15
HardwareHeaven Extreme Member
 
Join Date: Jan 2005
Posts: 5,507
Rep Power: 61
Russ is just super!Russ is just super!Russ is just super!Russ is just super!Russ is just super!Russ is just super!

@Maddogg6
I noticed an error in your documentation, regarding the Pitch Wheel parameters:

'PW - $E0 = PitchWheel (Data1 = MSB ; Data2 = LSB - PitchWhellAmmount = MSB*$100+LSB '

Data1 should be LSB
Data2 should be MSB
PitchWhellAmmount (<- typo) should be MSB*$80+LSB
Russ is online now   Reply With Quote
Old Nov 9, 2006, 10:55 PM Threadstarter Thread Starter   #16
Tail Razer
 
Maddogg6's Avatar
 
Join Date: Jun 2005
Location: Bernyurass, AZ - USA
Posts: 4,027
Rep Power: 50
Maddogg6 will become famous soon enoughMaddogg6 will become famous soon enough

Ah - yes... thanks for pointing that out... I fixed.
(the math part threw me for a moment - thinking my code was wrong - becuse I am using bit shift instead.)
Maddogg6 is offline   Reply With Quote
Old Dec 26, 2006, 05:52 AM Threadstarter Thread Starter   #17
Tail Razer
 
Maddogg6's Avatar
 
Join Date: Jun 2005
Location: Bernyurass, AZ - USA
Posts: 4,027
Rep Power: 50
Maddogg6 will become famous soon enoughMaddogg6 will become famous soon enough

UPDATE:

vMIDI MIXER V3 - Now saves / loads selected MIDI OUT Port...


Ok - so I finally got around to adding such a simple function - sue me

I hope its useful ....
http://www.esnips.com/web/MD6Music

Mark
Maddogg6 is offline   Reply With Quote
Old Dec 26, 2006, 05:56 AM Threadstarter Thread Starter   #18
Tail Razer
 
Maddogg6's Avatar
 
Join Date: Jun 2005
Location: Bernyurass, AZ - USA
Posts: 4,027
Rep Power: 50
Maddogg6 will become famous soon enoughMaddogg6 will become famous soon enough

Quote:
Originally Posted by Russ View Post
No, there is no kxctrl command to do that.

It might be possible to parse a saved config file.
i.e.
User saves thier kX Automation settings in a config.
Parse the saved config to make a mixer panel that only includes automation parameters that are defined/saved (although you would not get the parameter names, etc).
btw - I gave up trying to parse the KX settings file - so.... I wouldnt hold my breath on that anymore - if your still alive that is... lolz
Maddogg6 is offline   Reply With Quote
Old Dec 26, 2006, 02:37 PM   #19
HardwareHeaven Extreme Member
 
Join Date: Jan 2005
Posts: 5,507
Rep Power: 61
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 should probably change vMIDI_settings.txt to default to midi port 0. Currently it defaults to midi port 16, and not everyone has 16 available midi ports, and as such the program will just exit when it it cannot find the port.
Russ is online now   Reply With Quote
Old Dec 26, 2006, 07:05 PM Threadstarter Thread Starter   #20
Tail Razer
 
Maddogg6's Avatar
 
Join Date: Jun 2005
Location: Bernyurass, AZ - USA
Posts: 4,027
Rep Power: 50
Maddogg6 will become famous soon enoughMaddogg6 will become famous soon enough

Ahh - ok - will do

Sorry

edit: fixed - and thanks Russ....
Maddogg6 is offline   Reply With Quote
Reply

Bookmarks

Thread Tools