Instant Gratification - mapping to my controller - Page 2
Page 2 of 4 FirstFirst 1234 LastLast
Results 11 to 20 of 37
  1. #11

    Default

    Arrgghhh! I can't find an older version. Anyone? I have a gig in 12 hours time

  2. #12
    DJTT Tankard fullenglishpint's Avatar
    Join Date
    Aug 2010
    Location
    St Albans, UK
    Posts
    7,097

    Default

    3rd thread on the midifighter forum...

    http://www.djtechtools.com/forum/showthread.php?t=24514
    TSP 2 | Serato DJ | Live 8 | MBP (SSD + HDD) | AIAIA TMA-1 Fool's Gold Edition | 1200 Mk2s | MidiFighter | KRK RP5
    Xone: DB4 | Pioneer CDJ-2000 Nexus
    DJTT FAQ | Read my guide to AUDIO CABLES

  3. #13

    Default

    That version is 1.0.2 - I was led to believe there was a version that didn't use 4 banks... I have mapped this one and it doesn't see to work on my controller

  4. #14
    DJTT Tankard fullenglishpint's Avatar
    Join Date
    Aug 2010
    Location
    St Albans, UK
    Posts
    7,097

    Default

    there's no version of the IG mapping that does not require 4 banks mode. You can either map only one deck page of it to your controller, or set up pages (banks) on your controller if it supports that feature.
    TSP 2 | Serato DJ | Live 8 | MBP (SSD + HDD) | AIAIA TMA-1 Fool's Gold Edition | 1200 Mk2s | MidiFighter | KRK RP5
    Xone: DB4 | Pioneer CDJ-2000 Nexus
    DJTT FAQ | Read my guide to AUDIO CABLES

  5. #15

    Default

    OK thanks. So I need to read through all the banks figuring out the midi messages for each of the buttons. I take Bank A, map those, make a new page, take Bank B and map those and so on.

    Does someone not have a list of the midi messages with corresponding buttons and banks? I presume it's already been done...

  6. #16
    DJTT Tankard fullenglishpint's Avatar
    Join Date
    Aug 2010
    Location
    St Albans, UK
    Posts
    7,097

    Default

    Quote Originally Posted by mishmashmole View Post
    Does someone not have a list of the midi messages with corresponding buttons and banks? I presume it's already been done...
    TSP 2 | Serato DJ | Live 8 | MBP (SSD + HDD) | AIAIA TMA-1 Fool's Gold Edition | 1200 Mk2s | MidiFighter | KRK RP5
    Xone: DB4 | Pioneer CDJ-2000 Nexus
    DJTT FAQ | Read my guide to AUDIO CABLES

  7. #17
    Tech Guru zestoi's Avatar
    Join Date
    Mar 2011
    Location
    UK, Ukraine, Romania
    Posts
    2,836

    Default

    Quote Originally Posted by derschaich View Post
    I'm working on a simulation of the midi-fighter firmware for GlovePIE as we speak (or whatever this medium of communitcation is called). to convert any 16-button controller into a midi-fighter!
    i'd be keen to see your glovepie script once done. today i've just written a lua script for my homebrew midimashing app to add a virtual midifighter to a page on my launchpad. it uses a 2extra midifighter virtual midi ports in loopMIDI so i can connect those to traktor while also using other output from the lp for other stuff etc.

    this is the mf normal mode not 4banks mode (which i'll have a play with in a bit). pasting here in case anyone else is doing something as mad as using lua or some other 'glue' to xlate between devices and/or in case the logic is any use. the 4banks mode shouldn't be much harder to do.

    still don't know what extra combo messages might get send by the mf though - or are all combos just from traktor modifiers etc?

    Code:
    any2mf_map = {
        ["0,0"] = "C3", ["1,0"] = "C#3", ["2,0"] = "D3", ["3,0"] = "D#3",
        ["0,1"] = "G#2", ["1,1"] = "A2", ["2,1"] = "A#2", ["3,1"] = "B2",
        ["0,2"] = "E2", ["1,2"] = "F2", ["2,2"] = "F#2", ["3,2"] = "G2",
        ["0,3"] = "C2", ["1,3"] = "C#2", ["2,3"] = "D2", ["3,3"] = "D#2"
    }
    
    mf2any_map = {}
    for k,v in pairs(any2mf_map) do mf2any_map[v] = k end
    
    function create_midifighter(rdev, rdevpage, vdev, off_color, on_color)
    
        for x=0,3 do
            for y=0,3 do
                btn = y..","..x
    
                -- init off color
    
                send_event(rdev, btn, off_color)
    
                -- map input to the virtual midifighter
    
                capture_event(rdev, btn, rdevpage, function(d, e, p, v)
                    if any2mf_map[e] ~= nil then
                        send_event(vdev, any2mf_map[e], v, 3)
                    end
                end)
    
                -- route mf input back to real surface
    
                capture_event(vdev, any2mf_map[btn], 0, function(d, e, p, v)
                    if mf2any_map[e] ~= nil then
                        if v == 0 then
                            send_event(rdev, mf2any_map[e], off_color)
                        else
                            send_event(rdev, mf2any_map[e], on_color)
                        end
                    end
                end)
            end
        end
    end
    
    create_midifighter("launchpad", 0, "midifighter", lp_lo_red, lp_hi_green)
    11mba / 13mbp / tsp2 / live9 / audio10 / 2x reloop rp7000gold / 2x xdj1000 / 2x d2
    maschine mk2 / x1 mk2 / z1 / f1 / midifighter / lpd8 / 2x launchpad / launchkontrol xl
    Quote Originally Posted by derschaich
    "wohoo, i'm touched, turn on the FX"

  8. #18
    Tech Guru zestoi's Avatar
    Join Date
    Mar 2011
    Location
    UK, Ukraine, Romania
    Posts
    2,836

    Default

    i've just got some code working that emulates the midifighter 4bank mode. the code might not be any use to anyone but the logic and note info in it might be.

    the function:

    Code:
    any2mf_4banks_map = {
    
        ["select"] = {
            ["0,0"] = { ["note"] = "C-1", ["bank"] = 1 },
            ["1,0"] = { ["note"] = "C#-1", ["bank"] = 2 },
            ["2,0"] = { ["note"] = "D-1", ["bank"] = 3 },
            ["3,0"] = { ["note"] = "D#-1", ["bank"] = 4 }
        },
    
        ["banks"] = {
            {
                ["0,1"] = "G#2", ["1,1"] = "A2", ["2,1"] = "A#2", ["3,1"] = "B2",
                ["0,2"] = "E2", ["1,2"] = "F2", ["2,2"] = "F#2", ["3,2"] = "G2",
                ["0,3"] = "C2", ["1,3"] = "C#2", ["2,3"] = "D2", ["3,3"] = "D#2"
            },
            {
                ["0,1"] = "G#3", ["1,1"] = "A3", ["2,1"] = "A#3", ["3,1"] = "B3",
                ["0,2"] = "E3", ["1,2"] = "F3", ["2,2"] = "F#3", ["3,2"] = "G3",
                ["0,3"] = "C3", ["1,3"] = "C#3", ["2,3"] = "D3", ["3,3"] = "D#3"
            },
            {
                ["0,1"] = "G#4", ["1,1"] = "A4", ["2,1"] = "A#4", ["3,1"] = "B4",
                ["0,2"] = "E4", ["1,2"] = "F4", ["2,2"] = "F#4", ["3,2"] = "G4",
                ["0,3"] = "C4", ["1,3"] = "C#4", ["2,3"] = "D4", ["3,3"] = "D#4"
            },
            {
                ["0,1"] = "G#5", ["1,1"] = "A5", ["2,1"] = "A#5", ["3,1"] = "B5",
                ["0,2"] = "E5", ["1,2"] = "F5", ["2,2"] = "F#5", ["3,2"] = "G5",
                ["0,3"] = "C5", ["1,3"] = "C#5", ["2,3"] = "D5", ["3,3"] = "D#5"
            }
        }
    }
    
    -- map mf notes back to our surface
    
    mf2any_4banks_map = {}
    
    for k,v in pairs(any2mf_4banks_map["select"]) do
        mf2any_4banks_map[v["note"]] = k
    
        for k2, v2 in ipairs(any2mf_4banks_map["banks"]) do
            for k3, v3 in pairs(any2mf_4banks_map["banks"][k2]) do
                mf2any_4banks_map[v3] = k3
            end
        end
    end
    
    mf_4banks_curr_bank = {}
    
    function create_midifighter_4banks(rdev, rdevpage, vdev, off_color, on_color)
    
        -- set our current bank to 1
    
        local mf_4banks_id = #mf_4banks_curr_bank + 1
        mf_4banks_curr_bank[mf_4banks_id] = 1
    
        for x=0,3 do
            for y=0,3 do
                btn = y..","..x
    
                -- init off color
    
                send_event(rdev, btn, off_color)
    
                -- map input to the virtual midifighter
    
                capture_event(rdev, btn, rdevpage, function(d, e, p, v)
    
                    local curr_bank = mf_4banks_curr_bank[mf_4banks_id];
    
                    if any2mf_4banks_map["select"][e] ~= nil then
    
                        -- save bank number and send message out to virtual mf
                        mf_4banks_curr_bank[mf_4banks_id] = any2mf_4banks_map["select"][e]["bank"]
                        send_event(vdev, any2mf_4banks_map["select"][e]["note"], v, 3)
    
                    elseif any2mf_4banks_map["banks"][curr_bank][e] ~= nil then
    
                        -- send the message out from a multi bank row (2,3,4)
                        send_event(vdev, any2mf_4banks_map["banks"][curr_bank][e], v, 3)
                    end
                end)
    
                -- route mf input back to real surface
    
                capture_event(vdev, any2mf_map[btn], 0, function(d, e, p, v)
                    if mf2any_4banks_map[e] ~= nil then
                        if v == 0 then
                            send_event(rdev, mf2any_4banks_map[e], off_color)
                        else
                            send_event(rdev, mf2any_4banks_map[e], on_color)
                        end
                    end
                end)
            end
        end
    end
    then i just use these lines to set it up using lo red for off and green for lit up leds:

    Code:
    open_midi_device("traktor", "traktor", "Traktor Output", "Traktor Input");
    open_midi_device("launchpad", "launchpad", "Launchpad", "Launchpad", 8)
    open_midi_device("midifighter", "midifighter", "MidiFighter Input", "MidiFighter Output")
    create_midifighter_4banks("launchpad", 0, "midifighter", lp_lo_red, lp_hi_green)
    seems to work ok - but it's going to take me a while to understand this midifighter IG mapping

    the plan is to add the ability to offset the virtual fighters and then have 2 normal mode MF'ers and two 4bank mode MF'ers on one launchpad page.

    edit: the code looks a bit complicated but 99% of it is run at startup time - only small snippets of code (the functions passed to capture_event()) actually get run when a button is pressed or traktor sends an event.
    Last edited by zestoi; 05-29-2011 at 09:23 AM.
    11mba / 13mbp / tsp2 / live9 / audio10 / 2x reloop rp7000gold / 2x xdj1000 / 2x d2
    maschine mk2 / x1 mk2 / z1 / f1 / midifighter / lpd8 / 2x launchpad / launchkontrol xl
    Quote Originally Posted by derschaich
    "wohoo, i'm touched, turn on the FX"

  9. #19

    Default

    Quote Originally Posted by fullenglishpint View Post
    http://www.djtechtools.com/forum/attachment.php?attachmentid=5475&stc=1&d=130666419 0
    THANK YOU!

    I will be posting a mapping for the Remote SL 25 in due course.

  10. #20
    Tech Guru zestoi's Avatar
    Join Date
    Mar 2011
    Location
    UK, Ukraine, Romania
    Posts
    2,836

    Default

    Quote Originally Posted by mishmashmole View Post
    THANK YOU!

    I will be posting a mapping for the Remote SL 25 in due course.
    you could always use bomes to do translation and then you can use the vanilla mf tsi's? also means ofc any new ones you can then use without any effort at all.

    that was my theory above anyway.

    fyi - that image posted by fullenglishpint does seem correct as i found that on the forum the other week and it's what i based my code on.
    11mba / 13mbp / tsp2 / live9 / audio10 / 2x reloop rp7000gold / 2x xdj1000 / 2x d2
    maschine mk2 / x1 mk2 / z1 / f1 / midifighter / lpd8 / 2x launchpad / launchkontrol xl
    Quote Originally Posted by derschaich
    "wohoo, i'm touched, turn on the FX"

Page 2 of 4 FirstFirst 1234 LastLast

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •