So far MidiKey2Key was a hobby project of mine which I developed for fun for my own purposes.
I am a IT freelancer working in projects on automated software-delivery development.
Covid-19 also has an impact on me, meaning I did not have assigments since the beginning of the year.
So I am thinking of making a commercial MidiKey2Key pro-version, which has advanced features and which will be sold for a fair price.
The free version will remain in general as it is now and will get some small enhancements and bugfixes.
Addions to the free-version still to come:
- Including a different method of producing keyboard-actions producing all kinds of keypresses (arrow-keys and different LEFT-Alt/RIGHT-Alt ...)
with maybe sending keystrokes to special apps (if this validity generates a hugher effort, perhaps as pro-version feature)
- very simple condition-editor (abilty to define 'if Byte3 is not 0, then...')
- some bugfixes
The pro-version will in steps get some modules which could be:
:: Integration of Microsoft Flight Simulator ::
- Due to a higher number of requests on this, it will be one of the first options to be integrated into MidiKey2Key Pro!
- No need of pressing any hotkey with MK2K. All comon aircraft functions will be accessible directly (like in TS). Not only On/Off functions, but numeric values like the radio frequencies will be changeable by MIDI-controllers ('Midi Fighter Twister' would be a great device...)
- flightsim-reading polls of all common values: Like in MK2K's Train Simulator integration You will be able to get values of all common parameters, like "Autopilot enabled", "Gear Up/down/in transit", "Parking brake set", ... and set LEDs on Your MIDI-device as You wish.
:: Advanced condition/logic editor ::
- Define freely conditions on MIDI-values (if Byte1 or/and Byte2 or/and Byte3 is smaller/eqal/greater than x then do ...)
with comparisons like < > <= <= != LIKE, a logical operators AND and OR and a number of bracket levels to make more complex formulas
- Capable of comparisons with the formerly received MIDI-event.
- Ability of making longer chains of alternating sequences for MIDI-out-actions AND other action instead of just toggeling two MIDI-out-actions A/B.
- Ability to choose between circle those toggle-chains endless or let them end after the 1st, 2nd, 3rd, ... time.
- Slider-Area to keypress: Divide a pot- or slider-path into a number of slices and let at each part trigger a different keypress
:: Mouse-Event Editor ::
- Generating Mouse-events like moving the mouse to fixed or relative positions
- clicking once, double or three times, holding and releasing mousebuttons later
- writing a userscript that defines a sequence of mouse-actions with timing and keypresses in between
:: Virtual Joystick Support ::
- Enables the abiliy to bress buttons or change axises of virtual joysticks
- Even more compatibilies to many games
:: Macro-Composer ::
- Define freely chains of actions that will be fired in an order of Your wish with freely mixed type of actions
(Keyboard, MIDI-Out, Mouse, ...) with defineable pauses
- typing free defined texts
:: Full integrated, network-based OBS-remote ::
- including almost every function and value of OBS Studio
- most wanted: changing all kinds of audio levels
- mute/unmute visual elements
- visualization of common values like streaming-time, current bitrate, lost frames, etc.
on the MidiKey2Key PC (the OBS machine can be a different PC)
:: Integrated Sound player ::
- You could use MidiKey2Key then for DJing, but this is meant more as a jingle-player for having short sound-effetcs on Your finger-tips.
- Define playing any soundfile (of the most common formats) after receiving a MIDI-event
- Quick-stop command of all or individial playing soundfiles
:: Integration of Farming-Simulator 19 manipulation ::
This is under investigation to find out, what is possible. FS provides a mighty lua-interface,
there could be something usefull to play with...
In a more distant future: FEATURES PROPABLY FOR A PRO-PLUS VERSION:
:: Built-In virtual MIDI-Ports ::
- More easy use of different MIDI-apps together with MidiKey2Key on the same MIDI-device.
:: General Networking ability ::
- Connect two or more instances of MidiKey2Key over ethernet/internet and execute actions on a different PC
- Integration of artnet/SACN (or similar) to have MIDI-over-ethernet onBoard
:: Integration of manipulation of Adobe products like Lightroom or Premiere ::
- I posted a short video-clip, showing that this is already possible (AKAI APCmini faders move the soundmixer of premiere's faders).
This could be a bit more confortable.
:: comprehensive script language that allows to develope own solutions ::
(just an rough idea...)
More more far away, but possible:
:: Mac-version of MidiKey2Key ::
All of this will need to make a web-shop with instant payment and delivery (I am thinking of PayPal), which will also need some time to develope.
As well as this I have to write an EULA to protect myself if Your house explodes by using MidiKey2Key and check some other law-stuff.
I would also integrate a basic kind of piracy protection, that just a copy of the pure product would not run.
Therefore all customers would need to register an account, which will be connected to a MK2K license.
The uniqueness {is this an correct english expression? } and the validity of the license could be proved once a month over the internet
(or an other period/method? What do You think?).
SO GIRLS AND GUYS: WHAT DO YOU THINK ABOUT ALL OF THIS?
Would You still like MidiKEy2Key when it would be a payware? Or would this be a no-go?
Would You draw the border between free- and pro-version differently?
Do You have additional feature suggestions?
What would be the most important new feature for You?
Sticky: MidiKey2Key developement roadmap
Re: Sticky: MidiKey2Key developement roadmap
This looks great.
With the release of Microsoft Flight Simulator 2020, I went looking for a way to use a midi controller to control all the cockpit rotation knobs.
In a typical plane you have dials for altitude setting, heading setting, course, barometer, course deviation indicators, communication frequencies and navigation frequencies. In some planes you have a few more.
Setting these by using a keyboard is not very tactile, but something like a Midi Fighter Twister (https://www.midifighter.com/#Twister) would be perfect for it. In cockput, the dials are "endless", i.e. they can keep rotating right and left, without a minimum and maximum value.
If you could find a way to allow endless MIDI knobs to be used so that they generate a keystroke (or joystick button push) when turning right, and another keystroke (or joystick button push) when turning left, the flight simmers would be able to set dials like this for their in-plane dials.
With the release of Microsoft Flight Simulator 2020, I went looking for a way to use a midi controller to control all the cockpit rotation knobs.
In a typical plane you have dials for altitude setting, heading setting, course, barometer, course deviation indicators, communication frequencies and navigation frequencies. In some planes you have a few more.
Setting these by using a keyboard is not very tactile, but something like a Midi Fighter Twister (https://www.midifighter.com/#Twister) would be perfect for it. In cockput, the dials are "endless", i.e. they can keep rotating right and left, without a minimum and maximum value.
If you could find a way to allow endless MIDI knobs to be used so that they generate a keystroke (or joystick button push) when turning right, and another keystroke (or joystick button push) when turning left, the flight simmers would be able to set dials like this for their in-plane dials.
Re: Sticky: MidiKey2Key developement roadmap
I also found this because of the new Microsoft flight simulator. Currently using another midi programmer software to integrate my Behringer X-Touch mini controller, but it has limited functionality. You have some interesting features that I would pay for if the price was right.
Re: Sticky: MidiKey2Key developement roadmap
I have a little feature request:
When you use a slider or rotating knob you get the 'val' value as you know, now to use various values you could create 127 different definition to trigger with each separate val, but that would be a bit tiresome of course, so what would be handy is if the value of the slider was available as a 'key' output add-on.
So let say you define a slider as key 'a' and then had a checkbox for instance that said 'add value' and then midi2key would send 'a 80' if the slider was at 80 or 'a 25' if it was at 25 for example.
You could then evaluate it with other programs like autohotkey and such.
Of course if that could be done it might also be handy if you could add it as an argument when you ran a program in the midi2key start program section.
Although it would be tricky to send every slide movement as a separate program I guess, you could soon run hundreds of instances if you were to use that feature with the wrong kind of program But for certain command line utilities it would still be usable I'm thinking.
Anyway, thanks a lot for making this software available, even as it is it's pretty neat.
When you use a slider or rotating knob you get the 'val' value as you know, now to use various values you could create 127 different definition to trigger with each separate val, but that would be a bit tiresome of course, so what would be handy is if the value of the slider was available as a 'key' output add-on.
So let say you define a slider as key 'a' and then had a checkbox for instance that said 'add value' and then midi2key would send 'a 80' if the slider was at 80 or 'a 25' if it was at 25 for example.
You could then evaluate it with other programs like autohotkey and such.
Of course if that could be done it might also be handy if you could add it as an argument when you ran a program in the midi2key start program section.
Although it would be tricky to send every slide movement as a separate program I guess, you could soon run hundreds of instances if you were to use that feature with the wrong kind of program But for certain command line utilities it would still be usable I'm thinking.
Anyway, thanks a lot for making this software available, even as it is it's pretty neat.
Re: Sticky: MidiKey2Key developement roadmap
Thanks for Your suggestion!
I do that already - with train simulator!
The tricky part of Your suggestion is: How should MK2K "send" a '80' out?
So far MK2K can:
- produce a keypress on the PC keyboard
- start a program or script
- give parameters directly to train simulator
- send out custom MIDI messages.
In future it will be able to:
- Move and click the mouse
- send parameters directly to flightsimulator.
So, where is Your type of output? Invent a new one?
How would autohotkey understand this new output?
Do You have an idea?
I do that already - with train simulator!
The tricky part of Your suggestion is: How should MK2K "send" a '80' out?
So far MK2K can:
- produce a keypress on the PC keyboard
- start a program or script
- give parameters directly to train simulator
- send out custom MIDI messages.
In future it will be able to:
- Move and click the mouse
- send parameters directly to flightsimulator.
So, where is Your type of output? Invent a new one?
How would autohotkey understand this new output?
Do You have an idea?
Re: Sticky: MidiKey2Key developement roadmap
In regards to my idea for value output:
I already understood that you achieved sending values to train simulator from one of your videos, and such things are obviously much nicer than simply having 'up' and 'down' from a slider, but I don't play that game and of course there are many other games and other software packages that would be better controlled with a value, but you can't make separate code for each game/program that people use, it's just not practical, so there has to be a way to send a value in a more universal way, so that you can get it to work with any program somehow
skip to edit01 for a better idea about doing this
Now there are various command line utilities available that can do things with numbers as input.
As for the 'keypress' thing, the idea would be to have an identifier and then recognize that and read the value in ASCII after it, but of course it's true that if you send a single character that would be hard to evaluate, but if it was a string like 'MIDIKEY<value>' you could scan for the occurrence of that identifier 'MIDIKEY' (or whatever unique name you gave it) and then read the value following that.
So let's say you see the message 'midikey25' with autohotkey and then you strip the 'MIDIKEY' part and you have the value. But then you might have an issue with the variable length of course, so it would be preferable to get it as 001 to 127 with preceding zeros to keep the length constant.
But now the problem is that you are suddenly asked to change midikey2key to not send out single characters but strings, and I'm not sure that that isn't asking a bit much since it's a bigger program change.
And for sending it as an argument you run in that issue I mentioned earlier where you trigger too many instances when you move a slider even a little, so it would need some sort of limiter I suppose. I'm trying to think of a usable (almost said 'elegant', but that's unlikely ) way to do this.
Perhaps it's better to just use Python and my idea is no good, Python has a working MIDI library, but Python is a more complex language and takes more space than a simple small utility and might not be suited for everybody.
edit 01
Hmm, I have a way it might be solved, if the value was put in a fixed place and then any other software could read the value and either use it as is or detect a change.
But where do you put it? In a system environment variable? (That would make it work with VBcode too) or into the registry the way windows does it itself? You would have to account for more than one value of course since MIDI device can have tons of knobs and sliders, but if you give them names like registry values do you could all keep them apart.
Anyway putting the value in a fixed spot that you can access universally seems to be a usable idea to me, and it would not require a big change to midikey2key, only an additional bit of code to push the value which you can give a settings checkbox to enable/disable. And from there you can just hack it into other software with various scripting languages.
What do you think?
edit 02
Using environment variables would be too much to do with tons of sliders I think, so to do it that was you would have to make an enable button for each slider/knob you defined and keep them to a sane number of knob/sliders that are simultaneously in use. I don't know how windows would like hundreds of extra environment variables but I'm guessing it would go nuts.
edit 03
Or to make it even more basic, simply write the values to a file in the my document/midikey2key/sliders folder, although that has its own set of issues, like would you make a new file for each slider? And you must avoid exclusive access.
I already understood that you achieved sending values to train simulator from one of your videos, and such things are obviously much nicer than simply having 'up' and 'down' from a slider, but I don't play that game and of course there are many other games and other software packages that would be better controlled with a value, but you can't make separate code for each game/program that people use, it's just not practical, so there has to be a way to send a value in a more universal way, so that you can get it to work with any program somehow
skip to edit01 for a better idea about doing this
Now there are various command line utilities available that can do things with numbers as input.
As for the 'keypress' thing, the idea would be to have an identifier and then recognize that and read the value in ASCII after it, but of course it's true that if you send a single character that would be hard to evaluate, but if it was a string like 'MIDIKEY<value>' you could scan for the occurrence of that identifier 'MIDIKEY' (or whatever unique name you gave it) and then read the value following that.
So let's say you see the message 'midikey25' with autohotkey and then you strip the 'MIDIKEY' part and you have the value. But then you might have an issue with the variable length of course, so it would be preferable to get it as 001 to 127 with preceding zeros to keep the length constant.
But now the problem is that you are suddenly asked to change midikey2key to not send out single characters but strings, and I'm not sure that that isn't asking a bit much since it's a bigger program change.
And for sending it as an argument you run in that issue I mentioned earlier where you trigger too many instances when you move a slider even a little, so it would need some sort of limiter I suppose. I'm trying to think of a usable (almost said 'elegant', but that's unlikely ) way to do this.
Perhaps it's better to just use Python and my idea is no good, Python has a working MIDI library, but Python is a more complex language and takes more space than a simple small utility and might not be suited for everybody.
edit 01
Hmm, I have a way it might be solved, if the value was put in a fixed place and then any other software could read the value and either use it as is or detect a change.
But where do you put it? In a system environment variable? (That would make it work with VBcode too) or into the registry the way windows does it itself? You would have to account for more than one value of course since MIDI device can have tons of knobs and sliders, but if you give them names like registry values do you could all keep them apart.
Anyway putting the value in a fixed spot that you can access universally seems to be a usable idea to me, and it would not require a big change to midikey2key, only an additional bit of code to push the value which you can give a settings checkbox to enable/disable. And from there you can just hack it into other software with various scripting languages.
What do you think?
edit 02
Using environment variables would be too much to do with tons of sliders I think, so to do it that was you would have to make an enable button for each slider/knob you defined and keep them to a sane number of knob/sliders that are simultaneously in use. I don't know how windows would like hundreds of extra environment variables but I'm guessing it would go nuts.
edit 03
Or to make it even more basic, simply write the values to a file in the my document/midikey2key/sliders folder, although that has its own set of issues, like would you make a new file for each slider? And you must avoid exclusive access.
Re: Sticky: MidiKey2Key developement roadmap
Hey, Whatno,
You have a lot of creative idea! I appreciate that!
MK2K could be extendet with any weird ouput techniques, but the general problem ist, that the receiving app must have a built-in function for that.
So far most of the apps can be controlled by keytrokes, mouseclicks, and joystick actions. Some in addition to that by network comands.
Some can communicate via COM+.
Some have an api to connect to, like Train Simultor and Microsoft Flight Simulator.
And that's it. You can invent endless methods to talk to apps, but 99% are limited to these techniques.
You have a lot of creative idea! I appreciate that!
MK2K could be extendet with any weird ouput techniques, but the general problem ist, that the receiving app must have a built-in function for that.
So far most of the apps can be controlled by keytrokes, mouseclicks, and joystick actions. Some in addition to that by network comands.
Some can communicate via COM+.
Some have an api to connect to, like Train Simultor and Microsoft Flight Simulator.
And that's it. You can invent endless methods to talk to apps, but 99% are limited to these techniques.
Re: Sticky: MidiKey2Key developement roadmap
There is a new section in the 1st post here.
IN case You overread that, here is the new announcement repeated:
:: Integration of Microsoft Flight Simulator ::
- Due to a higher number of requests on this, it will be one of the first options to be integrated into MidiKey2Key Pro!
- No need of pressing any hotkey with MK2K. All comon aircraft functions will be accessible directly (like in TS). Not only On/Off functions, but numeric values like the radio frequencies will be changeable by MIDI-controllers ('Midi Fighter Twister' would be a great device...)
- flightsim-reading polls of all common values: Like in MK2K's Train Simulator integration You will be able to get values of all common parameters, like "Autopilot enabled", "Gear Up/down/in transit", "Parking brake set", ... and set LEDs on Your MIDI-device as You wish.
IN case You overread that, here is the new announcement repeated:
:: Integration of Microsoft Flight Simulator ::
- Due to a higher number of requests on this, it will be one of the first options to be integrated into MidiKey2Key Pro!
- No need of pressing any hotkey with MK2K. All comon aircraft functions will be accessible directly (like in TS). Not only On/Off functions, but numeric values like the radio frequencies will be changeable by MIDI-controllers ('Midi Fighter Twister' would be a great device...)
- flightsim-reading polls of all common values: Like in MK2K's Train Simulator integration You will be able to get values of all common parameters, like "Autopilot enabled", "Gear Up/down/in transit", "Parking brake set", ... and set LEDs on Your MIDI-device as You wish.