0

I am trying to read a Hercules DJControl Inpulse 200 Mk2 MIDI input codes from terminal.

This is what I get when I use aseqdump:

geppettvs@AORUS:~/ins/usolo$     aseqdump -l
 Port    Client name                      Port name
  0:0    System                           Timer
  0:1    System                           Announce
 14:0    Midi Through                     Midi Through Port-0
 24:0    DJControl Inpulse 200 Mk2        DJControl Inpulse 200 Mk2 MIDI 
geppettvs@AORUS:~/ins/usolo$ aseqdump -p 24:0
Waiting for data. Press Ctrl+C to end.
Source  Event                  Ch  Data
 24:0   Control change          1, controller 9, value 1
 24:0   Control change          1, controller 9, value 1
 24:0   Control change          1, controller 9, value 1
 24:0   Control change          1, controller 9, value 1
 24:0   Control change          1, controller 9, value 1
 24:0   Control change          1, controller 9, value 127
 24:0   Control change          1, controller 9, value 127
 24:0   Control change          1, controller 9, value 127
 24:0   Control change          1, controller 9, value 127
 24:0   Control change          1, controller 9, value 127

What I want is to get the midi codes (I don't know how it is called) in format "0x00" to implement the corresponding Javascript for the jogwheels, as per in this Mixxx controller setup:

// track playing: top of jog scratches
// track not playing: seek thru track (using same scratch ticks and gives more positive response) or seek faster through track when push button held down
//

DJTechCDJ101.jogtop = function(channel, control, value, status, group) { value -= 0x40; if (!engine.getValue(group, "play") && DJTechCDJ101.pushed) { DJTechCDJ101.beatjump(group, value); } else { engine.scratchTick(parseInt(group.substring(8,9)), value); } }

What's the best tool to get this in a xev style? In which xev shows the keystroke codes as here:

KeyPress event, serial 34, synthetic NO, window 0x3400001,
    root 0x282, subw 0x0, time 2977574, (774,1033), root:(1856,1063),
    state 0x40, keycode 50 (keysym 0xffe1, Shift_L), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

1 Answers1

1

You can try: amidi, to get raw bytes in hex to paste into JavaScript code for Mixxx. Shows exactly what the device is sending.

sudo apt update
sudo apt install alsa-utils

amidi -l #list available ports amidi -p hw:2,0,0 -d

hw:2,0,0 corresponds to the port seen in amidi -l. -d means "dump": it will show raw bytes like this:

90 3F 7F 90 3F 00 B0 40 65

Since Mixxx uses the 0x3F notation for JavaScript scripts, the example above would be:

0x90, 0x3F, 0x7F
kyodake
  • 18,075
  • I forgot to mention I also used amidi. And I guess what I really needed was to know how to correctly interpret the input/output codes the terminal was showing to me. Thanks for your explanation. Really useful. – Geppettvs D'Constanzo Aug 13 '25 at 16:45