|
|||||||
![]() |
|
|
Thread Tools |
|
|
#1 |
|
Tail Razer
Join Date: Jun 2005
Location: Bernyurass, AZ - USA
Posts: 4,027
Rep Power: 50 ![]() ![]() |
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. |
|
|
|
|
|
#2 |
|
HardwareHeaven Extreme Member
Join Date: Jan 2005
Posts: 5,507
Rep Power: 61 ![]() ![]() ![]() ![]() ![]() ![]() |
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... |
|
|
|
|
|
|
|
|
Tail Razer
Join Date: Jun 2005
Location: Bernyurass, AZ - USA
Posts: 4,027
Rep Power: 50 ![]() ![]() |
Quote:
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 - ??? |
|
|
|
|
|
|
#4 |
|
DH Senior Member
Join Date: Jan 2003
Location: The Netherlands
Posts: 1,930
Rep Power: 62 ![]() ![]() ![]() ![]() |
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. |
|
|
|
|
|
|
|
|
Tail Razer
Join Date: Jun 2005
Location: Bernyurass, AZ - USA
Posts: 4,027
Rep Power: 50 ![]() ![]() |
Quote:
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 |
|
|
|
|
|
|
|
|
Tail Razer
Join Date: Jun 2005
Location: Bernyurass, AZ - USA
Posts: 4,027
Rep Power: 50 ![]() ![]() |
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 |
|
|
|
|
|
#7 | ||
|
DH Senior Member
Join Date: Jan 2003
Location: The Netherlands
Posts: 1,930
Rep Power: 62 ![]() ![]() ![]() ![]() |
Quote:
Quote:
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. |
||
|
|
|
|
|
#8 |
|
DH Senior Member
Join Date: Jan 2003
Location: The Netherlands
Posts: 1,930
Rep Power: 62 ![]() ![]() ![]() ![]() |
|
|
|
|
|
|
|
|
Tail Razer
Join Date: Jun 2005
Location: Bernyurass, AZ - USA
Posts: 4,027
Rep Power: 50 ![]() ![]() |
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",®)==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();
}
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. |
|
|
|
|
|
#10 |
|
HardwareHeaven Extreme Member
Join Date: Jan 2005
Posts: 5,507
Rep Power: 61 ![]() ![]() ![]() ![]() ![]() ![]() |
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 |
|
|
|
|
|
|
|
|
Tail Razer
Join Date: Jun 2005
Location: Bernyurass, AZ - USA
Posts: 4,027
Rep Power: 50 ![]() ![]() |
Quote:
Ill kick around some idea's and see what I can come up with. Thanks guys... |
|
|
|
|
|
|
|
|
Tail Razer
Join Date: Jun 2005
Location: Bernyurass, AZ - USA
Posts: 4,027
Rep Power: 50 ![]() ![]() |
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. |
|
|
|
|
|
#13 |
|
HardwareHeaven Extreme Member
Join Date: Jan 2005
Posts: 5,507
Rep Power: 61 ![]() ![]() ![]() ![]() ![]() ![]() |
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 |
|
|
|
|
|
|
|
Tail Razer
Join Date: Jun 2005
Location: Bernyurass, AZ - USA
Posts: 4,027
Rep Power: 50 ![]() ![]() |
Ah yes - good idea.... I think I can do that...
|
|
|
|
|
|
#15 |
|
HardwareHeaven Extreme Member
Join Date: Jan 2005
Posts: 5,507
Rep Power: 61 ![]() ![]() ![]() ![]() ![]() ![]() |
@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 |
|
|
|
|
|
|
|
Tail Razer
Join Date: Jun 2005
Location: Bernyurass, AZ - USA
Posts: 4,027
Rep Power: 50 ![]() ![]() |
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.) |
|
|
|
|
|
|
|
Tail Razer
Join Date: Jun 2005
Location: Bernyurass, AZ - USA
Posts: 4,027
Rep Power: 50 ![]() ![]() |
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 |
|
|
|
|
|
|
|
|
Tail Razer
Join Date: Jun 2005
Location: Bernyurass, AZ - USA
Posts: 4,027
Rep Power: 50 ![]() ![]() |
Quote:
|
|
|
|
|
|
|
#19 |
|
HardwareHeaven Extreme Member
Join Date: Jan 2005
Posts: 5,507
Rep Power: 61 ![]() ![]() ![]() ![]() ![]() ![]() |
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.
|
|
|
|
|
|
|
|
Tail Razer
Join Date: Jun 2005
Location: Bernyurass, AZ - USA
Posts: 4,027
Rep Power: 50 ![]() ![]() |
Ahh - ok - will do
Sorry ![]() edit: fixed - and thanks Russ.... |
|
|
|
![]() |
| Bookmarks |
| Thread Tools | |
|
|