"Intermediary midi mapping" software *discussion thread* (Traktor mapping is a pain)

Home :: Post and find Controller Mappings :: "Intermediary midi mapping" software *discussion thread* (Traktor mapping is a pain)Reply
"Intermediary midi mapping" software *discussion thread* (Traktor mapping is a pain)
Posted on: 16.06.2011 by Arcelia Siebeneck
Introduction

Just wanted to start a discussion thread regarding the shortcomings of mapping midi controllers using Traktors default mapping options. And by that, I don't just mean the annoying non-resizeable window, lack of serious copy/paste/clipboard functions and the recent inablity to directly edit the xml mapping files with a text editor. What I'm really talking about is the limitations of the default Traktor midi mapping window to achieve more powerful, dynamic and complex mappings... mappings that go well beyond what Traktor is normally capable of.

So what do I mean by this? Well if we look at the djtt firmwares for the vci-100 and midifighter as an example you can see that Traktor is capable of some amazing things. Superfaders, fx triggers, etc are made possible by combining various midi commands into one control which are then executed in a certain way. The only realistic way to achieve this is by re-writing the firmware on a midi controller at a hardware level. Yes, it's true that some of these effects can be done via a plain old Traktor mapping - but it gets very complicated and isn't as full featured.

The obvious disadvantage with using modified firmwares is that only a few people have the skill and know how to write them. Also, the firmware will only work on specific midi hardware. What I propose is some sort of intermediary midi software that sits between Traktor and your hardware. A utility that allows full access to every midi command available in Traktor with the aim of achieving the kind of custom mappings only normally available via custom firmwares.

The solution

This isn't an easy undertaking so I'm hoping that the clever people on DJTT can get involved in the discussion and hopeful development of such a tool. In the absence of any sort of Traktor public SDK, here's how it could be achieved:

Traktor - A mapping is created that maps literally every control to a different midi CC. All these controls are set to receive midi from a virtual midi device such as LoopBe. The midi commands are then routed via LoopBe from the mapping utility which could be created via one of the following programs:

Synthmaker/SynthEdit - Both Windows programs which allow the creation of midi plugins/vst's. Usually the plugins are effects/synths for DAW's such as Cubase, Ableton Live, etc however they can also export standalone Windows executables with midi in/out functionality.

Reaktor - Same as Synthmaker/Synthedit but probably more powerful and there may be more people on here that know how to use Reaktor properly. Trouble is, I don't believe there's a plugin export function so you'd need to run Reaktor in the background.. not ideal.

Emulator - the new version of Emulator allows you to design your own touchscreen interface GUI and map midi commands to each button/control.

GlovePie - probably quite a good option as their is decent scripting and midi support. Disadvantage is that it's a bit unstable in my experience.

Autohotkey - my area of expertise (lol) but not really designed for such a job... I might use it to knock up a prototype though.

VisualStudio - probably the most viable and professional option... a decent programming language that is stable, fast and powerful.


So what would the custom midi mapping software look like? and what kind of things could it do?

This is obviously up for discussion, but the first and most important function should be a wholesale replacement of the standard Traktor mapping window. The tool should allow easy duplicating, adding, deleting, etc of all the various Traktor controls and the ability to setup modifiers etc.

Once this is implemented, we can look at ways to achieve complex midi mappings based on rules, scripts, etc. This might enable functions such as superfaders and other midifighter features but also:

- complex ADSR/LFO based controls
- sequenced/pre-scripted midi control
- Serato-style continuous play in the background after beatjuggling has ended
- GUI editor for custom diy controllers (edit the midi controls in a more visual manner)
- simpler midi LED mappings
- stuff I haven't even thought of...!

How you can help

Feel free to contribute to this thread... let me know if this is something that you would find useful and what you would do differently. The suggestions I've listed above are just ideas and I'm keen to get something developed that will be useful for everyone so get posting
Nana Mohs
13.12.2013
Originally Posted by wolfbiter
Hi,

So I'm totally loving midimasher. I'm a programmer turned DJ, so this whole idea (exposing traktor's api via a scriptable midi layer) appeals to me on a deep level.

I had discovered the site http://midimasher.djism.com/ accidentally while browsing the internet, downloaded it, and began using it. I had thought development on it had been halted (since the last version was released sometime in 2012), but then discovered this thread!

Long story short: Damn this scripting is amazing. I personally use all 4 track decks, and since that isn't already supported in midimasher, I implemented it in my local copy (as in I added (add control ...) statements / corresponding mappings in traktor in order to expose decks C/D to midimasher).

But rather than hacking on custom attachments like that, I'd rather support midimasher by contributing it for others to use as well.

So my question is: Is there still active development on midimasher?

Greetings from the Bay Area,
-wolfbiter
I don't know if zestoi is actively developing this or not, but we are still trying to help each other out here.
At least upload your 4deck "traktor" TSI/config file to here (probably has to be a .zip file to upload .lua if I remember correctly)

When you are done with your LP mapping upload that too. I feel like a lot of us use LP that use midimasher. I'm currently fine tuning my mapping right now. (2 track decks / 2 sample decks)

If you upload your config and tsi file, I will be able to add to yours making even more usability for the community. A+ for teamwork!!!

I personally haven't had any problems w/ crashing. Mac or PC? I have used it on both, and Linux totally fine. I don't ever have a ton of midi signals going out at once though.

@ djsckid I will have some time tomorrow to try to figure your issue out. Probably something silly, but I'm a little pressed for time at the time being. Maybe PM me a copy of your .lua file? Just copy and paste the text into a PM and that will help a ton
Jeanette Heckmann
23.11.2013
Hey! Thanks for the reply.. I'm starting to get really close now. When I saw your update about the send command I realized the launchpad config file merely calls on the functions which are part of the library lua files (it's been a few years since I've been in a programming class.. I'm a little rusty lol).. The only problem I have
now from what I can tell is getting traktor to kickstart the scs3d devices into action. I see data passing through loopMIDI on the Traktor to MM output, just nothing from MM to Traktor when I push any buttons on the scs3d.

So midimasher and loopmidi are communicating to the scs3ds fine, there is just a missing link somewhere in my config to get traktor to fully trigger the scs3ds to operate correctly.

Here is my updated config file which initializes the scs3d devices and from what I can tell starts the spinning led function (but doesn't work yet in traktor):

open_midi_device("scs1", "scs3d", "SCS.3d", "SCS.3d", 2)
open_midi_device("scs2", "scs3d", "SCS.3d", "SCS.3d", 2)
open_midi_device("traktor", "traktor", "V:Traktor to MM", "V:MM to Traktor")

scs3d.init("scs1")
scs3d.init("scs2")
scs3d.spinning_jog("scs1", "a", "vinyl")
scs3d.spinning_jog("scs2", "b", "vinyl")



Originally Posted by muffintop
open_midi_device("scs3d1", "scs3d", "SCS3D1", "SCS3D1", 2)
open_midi_device("scs3d2", "scs3d", "SCS3D2", "SCS3D2", 2)
open_midi_device("traktor", "traktor", "V:Traktor to MM", "V:MM to Traktor")
open_midi_device("mf1", "generic", "V:MidiFighter1 Input", "V:MidiFighter1 Output")
open_midi_device("mf2", "generic", "V:MidiFighter2 Input", "V:MidiFighter2 Output")

virtual_midifighter("scs3d1", "mf1", 0, 0)
virtual_midifighter("scs3d2", "mf1", 0, 0)

If you are trying to get regular midi fighters on you SCS3Ds try this. If that isn't right names for the midi channels midimasher will give you a name of all of the connected controllers when you try to connect. I don't own a scs3d, so I can't be sure those coordinates are the ones that make since for a midifighter. You might have to toy around with that.

Here are some bits from my current launchpad lua (WIP will post my fresh one soon). Replace device names and stuff w/ what you need and it should be ok for you. (Note, I use multiple pages, so the extra "1" in the MF part is for the page, so you should take it out if you are only using one page on the SCS)

-------------------------------------------------------------------------------
-- connect devices
-------------------------------------------------------------------------------

open_midi_device("lp", "launchpad", "Launchpad", "Launchpad", 4)
open_midi_device("traktor", "traktor", "V:Traktor to MM", "V:MM to Traktor")
open_midi_device("mf1", "generic", "V:MidiFighter1 Input", "V:MidiFighter1 Output")
open_midi_device("mf2", "generic", "V:MidiFighter2 Input", "V:MidiFighter2 Output")
open_midi_device("mf3", "generic", "V:MidiFighter3 Input", "V:MidiFighter3 Output")




--
-- virtual midifighters x2 normal mode
--
virtual_midifighter("lp", 1, "mf1", 0, 0)
virtual_midifighter("lp", 1, "mf2", 4, 4)




------------EDIT--------------
I just reread an earlier post and saw that you just want the spinning LED on the SCS

open_midi_device("scs1", "scs3d", "SCS3D1", "SCS3D1")
open_midi_device("scs2", "scs3d", "SCS3D2", "SCS3D2")
open_midi_device("lp", "launchpad", "Launchpad", "Launchpad")
open_midi_device("traktor", "traktor", "V:Traktor to MM", "V:MM to Traktor")
open_midi_device("mf1", "generic", "V:MidiFighter1 Input", "V:MidiFighter1 Output")
open_midi_device("mf2", "generic", "V:MidiFighter2 Input", "V:MidiFighter2 Output")


send(scs1, "vinyl")
send(scs2, "vinyl")
virtual_midifighter("lp", "mf1", 0, 0)
virtual_midifighter("lp", "mf2", 0, 4)



Maybe? that should give you a jumbled mess, but something you can work from
Then must hook your SCS3D straight up to traktor and map through there. That'd what I'd do at least. Zestoi will try to talk you out of that though :P

It would probably be more helpful for you if the master hopped in on this, but I can probably figure it out if that doesn't work
Jeanette Heckmann
16.11.2013
Originally Posted by muffintop
After minimalizing my set up for a while, I'm going to add my Launchpad w/ midimasher back into my setup. Playing a set with it tomorrow evening . Can't wait.

Thanks again zestoi!

@djsckid you should post your full scs3d config file, so we can know where you're going wrong.
How are you liking the launchpad config?
Hey muffintop..

The launchpad config works great! It's recognized pretty quickly once I have everything up. I believe that's the problem with my scs3d config.. It's not initializing somewhere. :/

Here is the config I've tried so far:

open_midi_device("scs3d", "scs3d", "SCS.3d", "SCS.3d", 2)
open_midi_device("scs3d", "scs3d", "SCS.3d", "SCS.3d", 2)
open_midi_device("traktor", "traktor", "V:Traktor to MM", "V:MM to Traktor")
open_midi_device("midifighter1", "generic", "V:SCS.3D1 Input", "V:SCS.3D1 Output", 2)
open_midi_device("midifighter2", "generic", "V:SCS.3D2 Input", "V:SCS.3D2 Output", 2)


The second open midi device line is for my second scs3d. The problem is that I don't know if the virtual ports/loopmidi are required for the scs3ds and also what to do in Traktor's Controller Manager. Can I just used the scs3d listings in the first two lines without virtual ports? Or do I need to have three configs setup with loopmidi virtual ports in Traktor (Traktor to MM -> MM to Traktor, Traktor to MM -> SCS.3D1 Input, Traktor to MM -> SCS3D2 Input)?

If I follow the Launchpad config as a reference, I believe I'm supposed to use virtual port. But I'm missing something somewhere... Hmmmmm...
Nana Mohs
13.12.2013
Originally Posted by wolfbiter
Hi,

So I'm totally loving midimasher. I'm a programmer turned DJ, so this whole idea (exposing traktor's api via a scriptable midi layer) appeals to me on a deep level.

I had discovered the site http://midimasher.djism.com/ accidentally while browsing the internet, downloaded it, and began using it. I had thought development on it had been halted (since the last version was released sometime in 2012), but then discovered this thread!

Long story short: Damn this scripting is amazing. I personally use all 4 track decks, and since that isn't already supported in midimasher, I implemented it in my local copy (as in I added (add control ...) statements / corresponding mappings in traktor in order to expose decks C/D to midimasher).

But rather than hacking on custom attachments like that, I'd rather support midimasher by contributing it for others to use as well.

So my question is: Is there still active development on midimasher?

Greetings from the Bay Area,
-wolfbiter
I don't know if zestoi is actively developing this or not, but we are still trying to help each other out here.
At least upload your 4deck "traktor" TSI/config file to here (probably has to be a .zip file to upload .lua if I remember correctly)

When you are done with your LP mapping upload that too. I feel like a lot of us use LP that use midimasher. I'm currently fine tuning my mapping right now. (2 track decks / 2 sample decks)

If you upload your config and tsi file, I will be able to add to yours making even more usability for the community. A+ for teamwork!!!

I personally haven't had any problems w/ crashing. Mac or PC? I have used it on both, and Linux totally fine. I don't ever have a ton of midi signals going out at once though.

@ djsckid I will have some time tomorrow to try to figure your issue out. Probably something silly, but I'm a little pressed for time at the time being. Maybe PM me a copy of your .lua file? Just copy and paste the text into a PM and that will help a ton
Lilla Dultz
01.12.2013
Hi,

I've been using your mapping (thank you so much for it), but am having some problems with crashing. It seems fairly random, but occurs most regularly when I'm pressing a button which sends a lot of midi messages (ex. the button i use to play all 4 decks at once). Has anyone else run into this? I can get some stack traces if that could help.

Thanks,
Kane

p.s. I plan to release my mapping to anyone/everyone when it's complete: single launchpad with full control over 4 decks (it uses shifts to target deck(s))
Lilla Dultz
26.11.2013
Hi,

So I'm totally loving midimasher. I'm a programmer turned DJ, so this whole idea (exposing traktor's api via a scriptable midi layer) appeals to me on a deep level.

I had discovered the site http://midimasher.djism.com/ accidentally while browsing the internet, downloaded it, and began using it. I had thought development on it had been halted (since the last version was released sometime in 2012), but then discovered this thread!

Long story short: Damn this scripting is amazing. I personally use all 4 track decks, and since that isn't already supported in midimasher, I implemented it in my local copy (as in I added (add control ...) statements / corresponding mappings in traktor in order to expose decks C/D to midimasher).

But rather than hacking on custom attachments like that, I'd rather support midimasher by contributing it for others to use as well.

So my question is: Is there still active development on midimasher?

Greetings from the Bay Area,
-wolfbiter
Jeanette Heckmann
23.11.2013
Hey! Thanks for the reply.. I'm starting to get really close now. When I saw your update about the send command I realized the launchpad config file merely calls on the functions which are part of the library lua files (it's been a few years since I've been in a programming class.. I'm a little rusty lol).. The only problem I have
now from what I can tell is getting traktor to kickstart the scs3d devices into action. I see data passing through loopMIDI on the Traktor to MM output, just nothing from MM to Traktor when I push any buttons on the scs3d.

So midimasher and loopmidi are communicating to the scs3ds fine, there is just a missing link somewhere in my config to get traktor to fully trigger the scs3ds to operate correctly.

Here is my updated config file which initializes the scs3d devices and from what I can tell starts the spinning led function (but doesn't work yet in traktor):

open_midi_device("scs1", "scs3d", "SCS.3d", "SCS.3d", 2)
open_midi_device("scs2", "scs3d", "SCS.3d", "SCS.3d", 2)
open_midi_device("traktor", "traktor", "V:Traktor to MM", "V:MM to Traktor")

scs3d.init("scs1")
scs3d.init("scs2")
scs3d.spinning_jog("scs1", "a", "vinyl")
scs3d.spinning_jog("scs2", "b", "vinyl")



Originally Posted by muffintop
open_midi_device("scs3d1", "scs3d", "SCS3D1", "SCS3D1", 2)
open_midi_device("scs3d2", "scs3d", "SCS3D2", "SCS3D2", 2)
open_midi_device("traktor", "traktor", "V:Traktor to MM", "V:MM to Traktor")
open_midi_device("mf1", "generic", "V:MidiFighter1 Input", "V:MidiFighter1 Output")
open_midi_device("mf2", "generic", "V:MidiFighter2 Input", "V:MidiFighter2 Output")

virtual_midifighter("scs3d1", "mf1", 0, 0)
virtual_midifighter("scs3d2", "mf1", 0, 0)

If you are trying to get regular midi fighters on you SCS3Ds try this. If that isn't right names for the midi channels midimasher will give you a name of all of the connected controllers when you try to connect. I don't own a scs3d, so I can't be sure those coordinates are the ones that make since for a midifighter. You might have to toy around with that.

Here are some bits from my current launchpad lua (WIP will post my fresh one soon). Replace device names and stuff w/ what you need and it should be ok for you. (Note, I use multiple pages, so the extra "1" in the MF part is for the page, so you should take it out if you are only using one page on the SCS)

-------------------------------------------------------------------------------
-- connect devices
-------------------------------------------------------------------------------

open_midi_device("lp", "launchpad", "Launchpad", "Launchpad", 4)
open_midi_device("traktor", "traktor", "V:Traktor to MM", "V:MM to Traktor")
open_midi_device("mf1", "generic", "V:MidiFighter1 Input", "V:MidiFighter1 Output")
open_midi_device("mf2", "generic", "V:MidiFighter2 Input", "V:MidiFighter2 Output")
open_midi_device("mf3", "generic", "V:MidiFighter3 Input", "V:MidiFighter3 Output")




--
-- virtual midifighters x2 normal mode
--
virtual_midifighter("lp", 1, "mf1", 0, 0)
virtual_midifighter("lp", 1, "mf2", 4, 4)




------------EDIT--------------
I just reread an earlier post and saw that you just want the spinning LED on the SCS

open_midi_device("scs1", "scs3d", "SCS3D1", "SCS3D1")
open_midi_device("scs2", "scs3d", "SCS3D2", "SCS3D2")
open_midi_device("lp", "launchpad", "Launchpad", "Launchpad")
open_midi_device("traktor", "traktor", "V:Traktor to MM", "V:MM to Traktor")
open_midi_device("mf1", "generic", "V:MidiFighter1 Input", "V:MidiFighter1 Output")
open_midi_device("mf2", "generic", "V:MidiFighter2 Input", "V:MidiFighter2 Output")


send(scs1, "vinyl")
send(scs2, "vinyl")
virtual_midifighter("lp", "mf1", 0, 0)
virtual_midifighter("lp", "mf2", 0, 4)



Maybe? that should give you a jumbled mess, but something you can work from
Then must hook your SCS3D straight up to traktor and map through there. That'd what I'd do at least. Zestoi will try to talk you out of that though :P

It would probably be more helpful for you if the master hopped in on this, but I can probably figure it out if that doesn't work
Nana Mohs
23.11.2013
open_midi_device("scs3d1", "scs3d", "SCS3D1", "SCS3D1", 2)
open_midi_device("scs3d2", "scs3d", "SCS3D2", "SCS3D2", 2)
open_midi_device("traktor", "traktor", "V:Traktor to MM", "V:MM to Traktor")
open_midi_device("mf1", "generic", "V:MidiFighter1 Input", "V:MidiFighter1 Output")
open_midi_device("mf2", "generic", "V:MidiFighter2 Input", "V:MidiFighter2 Output")

virtual_midifighter("scs3d1", "mf1", 0, 0)
virtual_midifighter("scs3d2", "mf1", 0, 0)

If you are trying to get regular midi fighters on you SCS3Ds try this. If that isn't right names for the midi channels midimasher will give you a name of all of the connected controllers when you try to connect. I don't own a scs3d, so I can't be sure those coordinates are the ones that make since for a midifighter. You might have to toy around with that.

Here are some bits from my current launchpad lua (WIP will post my fresh one soon). Replace device names and stuff w/ what you need and it should be ok for you. (Note, I use multiple pages, so the extra "1" in the MF part is for the page, so you should take it out if you are only using one page on the SCS)

-------------------------------------------------------------------------------
-- connect devices
-------------------------------------------------------------------------------

open_midi_device("lp", "launchpad", "Launchpad", "Launchpad", 4)
open_midi_device("traktor", "traktor", "V:Traktor to MM", "V:MM to Traktor")
open_midi_device("mf1", "generic", "V:MidiFighter1 Input", "V:MidiFighter1 Output")
open_midi_device("mf2", "generic", "V:MidiFighter2 Input", "V:MidiFighter2 Output")
open_midi_device("mf3", "generic", "V:MidiFighter3 Input", "V:MidiFighter3 Output")




--
-- virtual midifighters x2 normal mode
--
virtual_midifighter("lp", 1, "mf1", 0, 0)
virtual_midifighter("lp", 1, "mf2", 4, 4)




------------EDIT--------------
I just reread an earlier post and saw that you just want the spinning LED on the SCS

open_midi_device("scs1", "scs3d", "SCS3D1", "SCS3D1")
open_midi_device("scs2", "scs3d", "SCS3D2", "SCS3D2")
open_midi_device("lp", "launchpad", "Launchpad", "Launchpad")
open_midi_device("traktor", "traktor", "V:Traktor to MM", "V:MM to Traktor")
open_midi_device("mf1", "generic", "V:MidiFighter1 Input", "V:MidiFighter1 Output")
open_midi_device("mf2", "generic", "V:MidiFighter2 Input", "V:MidiFighter2 Output")


send(scs1, "vinyl")
send(scs2, "vinyl")
virtual_midifighter("lp", "mf1", 0, 0)
virtual_midifighter("lp", "mf2", 0, 4)



Maybe? that should give you a jumbled mess, but something you can work from
Then must hook your SCS3D straight up to traktor and map through there. That'd what I'd do at least. Zestoi will try to talk you out of that though :P

It would probably be more helpful for you if the master hopped in on this, but I can probably figure it out if that doesn't work
Jeanette Heckmann
16.11.2013
Originally Posted by muffintop
After minimalizing my set up for a while, I'm going to add my Launchpad w/ midimasher back into my setup. Playing a set with it tomorrow evening . Can't wait.

Thanks again zestoi!

@djsckid you should post your full scs3d config file, so we can know where you're going wrong.
How are you liking the launchpad config?
Hey muffintop..

The launchpad config works great! It's recognized pretty quickly once I have everything up. I believe that's the problem with my scs3d config.. It's not initializing somewhere. :/

Here is the config I've tried so far:

open_midi_device("scs3d", "scs3d", "SCS.3d", "SCS.3d", 2)
open_midi_device("scs3d", "scs3d", "SCS.3d", "SCS.3d", 2)
open_midi_device("traktor", "traktor", "V:Traktor to MM", "V:MM to Traktor")
open_midi_device("midifighter1", "generic", "V:SCS.3D1 Input", "V:SCS.3D1 Output", 2)
open_midi_device("midifighter2", "generic", "V:SCS.3D2 Input", "V:SCS.3D2 Output", 2)


The second open midi device line is for my second scs3d. The problem is that I don't know if the virtual ports/loopmidi are required for the scs3ds and also what to do in Traktor's Controller Manager. Can I just used the scs3d listings in the first two lines without virtual ports? Or do I need to have three configs setup with loopmidi virtual ports in Traktor (Traktor to MM -> MM to Traktor, Traktor to MM -> SCS.3D1 Input, Traktor to MM -> SCS3D2 Input)?

If I follow the Launchpad config as a reference, I believe I'm supposed to use virtual port. But I'm missing something somewhere... Hmmmmm...
Nana Mohs
15.11.2013
After minimalizing my set up for a while, I'm going to add my Launchpad w/ midimasher back into my setup. Playing a set with it tomorrow evening . Can't wait.

Thanks again zestoi!

@djsckid you should post your full scs3d config file, so we can know where you're going wrong.
How are you liking the launchpad config?
Jeanette Heckmann
27.10.2013
Hey.. I'm trying to set it up with the SCS.3d as well and I've been scratching my head while setting up the config file.

- Do I need virtual midi ports in loopmidi for them? I've tried with and without them and nothing is being sent to the SCS.3D

Here is my config file so far:

open_midi_device("scs3d", "scs3d", "SCS.3d", "SCS.3d", 2)
open_midi_device("scs3d", "scs3d", "V:SCS.3D1 Input", "V:SCS.3D1 Output", 2)

loopmidi is showing data going to Traktor to MM and whatever virtual port I select as an output, but still no response by the device. (just trying to get the spinning LED platter indicator code to work!)

I have a launchpad as well and that is working fine with the launchpad config, but nada on the SCS... I feel like I'm very close just off somewhere with the config file. HALP!
Arletta Thornes
10.06.2013
I'm attempting to use this for an SCS.3 system set up- if the discussion is still on going i'd really love to learn this software.
Elina Opbroek
23.05.2013
I need big help. I'm trying to simulate Mackie Control implementation with midimasher. So im trying to sniff all the midi msgs that ableton sends into the faux Mackie.

The thing is i get a lot of "pressure", sysex, and wheel msgs which i don't know how to capture or replicate. Can you please help me?
Elina Opbroek
21.05.2013
Quick question. Is there any way of getting cursor position with midimasher?
Chasidy Heckenbach
28.03.2013
should be possible to just grab all via a loop like this:

Code:
for i = 0,127 do
    capture("my_device", string.format("%03d", i), ALL, 0, 'my_filter_function')
    capture("my_device", string.format("CC%03d", i), ALL, 0, 'my_filter_function')
end
then do the filtering/processing in the function my_filter_function(). this example will also capture any CC's.

for something like a musical keyboard you don't need to define a devices file for it and can still then capture() via either of these two formats for notes '023' or 'C#-2' and 'CC012' for CC's.
Elina Opbroek
28.03.2013
Is there a way for me to monitor every note msg recieved from my piano midicontroler so that i can filter some keys and change them to different values without having to declare every single note with Add_control() ?

My controler has a lot of knobs and keys so i dont want to have to declare them all.
Chasidy Heckenbach
18.03.2013
you can do raw hid stuff in midimasher too. there's a config that turns a 12button gamepad into a midifighter for example:

http://midimasher.djism.com/lua/conf...ter_4banks.lua
http://midimasher.djism.com/lua/devi...epad_12btn.lua

hiddump+hidlearn should let you create a 'device' from your keyboard. really not well documented, but pots are trickier than buttons to map.

have quite a few bug fixes applied since i last made a release as well as a new simpler config format. i'll try and test my code and put out a new version soon.
Elina Opbroek
18.03.2013
Thank you very much again!
I'm almost done with my script. And its fucking incredible.

Converted my good ole nanokontrol2 into a multipurpose controller for ableton live. Im so happy right now.


btw. i checked the post regarding keystrokes, but that seems to be done with glovepie. See i have been able to do just that with midiHID but i was hoping to be able to capture qwerty keystrokes directly from within midimasher. Is that even possible?

Thanks in advance again.
Chasidy Heckenbach
18.03.2013
you can build the message yourself via send_midi_raw() or use either of these two forms:

Code:
send("mydevice", "PC37")
send_midi("mydevice", 1, MIDI_PC, 37)
Elina Opbroek
18.03.2013
Thanks for the help.

One last question. How do i go about sending program changes with midimasher?
Chasidy Heckenbach
15.03.2013
Originally Posted by Pineda
A keystroke in a qwerty kb is what i need to capture. Sorry for not being clear enough


Any hints on that?
i believe this is the thread where we were discussing this issue... http://community .djranking s.com/showthread.php?t=32826
Elina Opbroek
15.03.2013
A keystroke in a qwerty kb is what i need to capture. Sorry for not being clear enough


Any hints on that?
Chasidy Heckenbach
15.03.2013
Originally Posted by derschaich
just pipe one input to two outputs:
pipe (input, output1)
pipe (input, output2)

don't hate me if i'm wrong. it's been some time since i worked with this software. reminds me of finishing my FX mapping, finally!
yep that will do it can also write a custom handler that calls as many send()'s as needed etc. didnt see this update to the thread for some reason...

Originally Posted by Pineda
So far so good. Im almost done with my script.
One question though is...

how would i go about capturing a keystroke from my keyboard?

Thanks1
keyboard being a musical one or your qwerty keyboard? if a qwerty one u can connect it as a hid device but there are various issues i seem to remember being discussed in this or other threads before about that. derschaich may remember.
Elina Opbroek
14.03.2013
So far so good. Im almost done with my script.
One question though is...

how would i go about capturing a keystroke from my keyboard?

Thanks1
Allene Manitta
29.01.2013
just pipe one input to two outputs:
pipe (input, output1)
pipe (input, output2)

don't hate me if i'm wrong. it's been some time since i worked with this software. reminds me of finishing my FX mapping, finally!
Elina Opbroek
29.01.2013
is there any way for me to send 2 different messages at the same time?
like for virtual keyboard shortcuts.
Elina Opbroek
29.01.2013
i'm actually building my own mackiecontrol emulation scheme on this baby.

like i said, once you get the hang of it, it becomes really easy.

it would be super cool if the documentation was completed.

but so far everything is cool.

thanks again.

Chasidy Heckenbach
28.01.2013
cheers as it happens i've finally unpacked most of my midi controllers and stuff after moving house and ready to play with midimasher again. i don't have a nanokontrol2 but will have my mk1 back soon. i'd be glad to help if u can give me a few days as i'll be a bit busy for a bit. i may need poking again via this thread or PM if i forget

edit: i shouldn't have replied to a post that i had cached in my browser glad it's of some use to you
Elina Opbroek
28.01.2013
nevermind.

i got it working.

once you get the hang of it you can do amazing thing whit this thing.

thanks again for such amazing peace of software.
Elina Opbroek
26.01.2013
Im thrilled by midimasher, seems to be the solution i've been looking for ages.

I have a nanokontrol2 midicontroller which i'd love to run into ableton live.

The problem with this is, im not much of a programer.

What i'd love to do basically is caprturing the imput from the nk2 into midimasher, changing its values, and then sending it to ableton live via IAC driver (im on a mac). The type of message i would be sending would mostly be CC.

Like i said, im not much of a programer, so i've been reading the documentation, but i havent found a suitable way to build my own config file, as it all seems to be geared towards tracktor.

Could you please help me get started?
i'd really apreciate that.

Thanks in advance!
Nana Mohs
10.07.2012
If I ever go 4 track decks I just use 4x Deckalized MF's via MM on the grid... Plenty for me. Normally I just use 2 decks and the loop recorder, or 2 track+2 sample decks. For me 64 is plenty
Chasidy Heckenbach
10.07.2012
true... a launchpad is just about the right number of buttons for controlling 2 decks in mixxx or traktor. as soon as you start getting into complex effects mappings or clips/samples then a 2nd one comes in useful
Nana Mohs
11.07.2012
Originally Posted by zestoi
only thing better than a launchpad is two launchpads :
This^^ I want to get another one and have a 2 deck style ableton setup with 2LPs and an external Mixer.

1 LP is pretty amazing for traktor/mixxx though. I don't know what I would do with 2 LPs inside traktor or mixxx. Too many buttons
Chasidy Heckenbach
07.07.2012
only thing better than a launchpad is two launchpads mixxx is a great piece of software and i reckon has come on leaps and bounds the last few releases. 1.10.1 is out now - but there's lots of good stuff coming in the imminent 1.11. i coded a little C++ for 1.11 and spent a lot of time on mappings, both midi and hid as 1.11 has native support for hid mapping i created a multi page launchpad mapping that i believe is pretty good, basically using some ideas from the midimasher core and my lua launchpad mapping and ported it to javascript.
Santiago Brasier
07.07.2012
Looking forward to try the new updates. Will probably get a second launchpad to... One can't have to many buttons

I'm still on a pc but are on the verge of ordering a new mac to try it out. Would be great to find a good alternative to AHK first though.

Great to hear you're involved with mixxx!

//Joel
Chasidy Heckenbach
07.07.2012
been a while since i played about with it too tbh, as i've been coding mappings for mixxx in javascript recently. funny timing tho as i just started to get back to finishing the new simpler config format yesterday so i can finally get that released. it still supports lua too and lua can be used within the new config format too for more complex stuff.

as for key strokes on mac not sure... if i can find an api to generate keystrokes tho i could put it into midimasher. i don't believe it'd be too tricky but i'd need to at least add the functionality for both windows and mac. i'll have a dig around tomorrow. might be some useful info on that 'hack the f1' thread too.
Santiago Brasier
07.07.2012
Hi, been a while since i played around with the masher.

Just had an idea today. Wanted to use my launchpad for shortcuts in other progs. Either by converting midi to keystrokes or if someone comes up with another nifty idea.

So, could midimasher be used to convert midi to keystrokes? Or could autohotkey perhaps recognize midi? Is there btw a good alternative to AHK for mac?

Sorry if this post sidetracked somewhat. The main q is still to find out if it is possible to use midimasher to emulate keystrokes from my mididevice. Even though this might sound like going backwards.

Best regards
//Joel
Chasidy Heckenbach
06.05.2012
u mean to send a message sometime in the future? for that there's an optional 5th argument for send() which is the delay in milliseconds like:

send("traktor", "play_a", ON, 0, 500)

so u could for example make traktor play deck 'a' for just 2 seconds if wanted:

send("traktor", "play_a", ON)
send("traktor", "play_a", ON, 0, 2000)

which reminds me that i need to come up with a simple syntax for that in the new config format, as well as an easy way for auto repeats to work, i was believeing of something like "play_a ON delay 20ms" for a delayed command and "play_a ON repeat 50ms" to auto repeat a command.

auto repeats already work with pure LUA code ofc, believe i posted an example here before of that.

or u mean something else by timed messages?
Allene Manitta
06.05.2012
so, any news on timed midi-messages? would be glad to hear!
Chasidy Heckenbach
01.05.2012
the grammar actually makes this valid - tho bloody confusing:

Code:
map button1 : $cond1 ? 2 & $cond2 ? 1 : 2 & $cond3 ? 2 : 3 : 4
which compiles to this:

Code:
capture("lp", "button1", ALL, 0, function(d, e, v, p)
    if get("cond1") > 0 then
        send("lp", "button1", 2)
        if get("cond2") > 0 then
            send("lp", "button1", 1)
        else
            send("lp", "button1", 2)
            if get("cond3") > 0 then
                send("lp", "button1", 2)
            else
                send("lp", "button1", 3)
            end
        end
    else
        send("lp", "button1", 4)
    end
end)
hopefully no one will want anything that complex - or maybe i need to add in support for optional brackets

<< Back to Post and find Controller MappingsReply

Copyright 2012-2023
DJRANKINGS.ORG n.g.o.
Chuo-ku, Osaka, Japan

Created by Ajaxel CMS

Terms & Privacy