>> Try running only "amidi --dump -p virtual", and then connecting the
hardware sequencer port to the virtual on
It works fine when amidi connects to it. Shows 3 bytes for each key
on/key off.
>> When the sequencer converts the messages back to raw MIDI bytes, it
uses running status by default. This is not an error.
I'm aware of running status, but I don't think that's the problem. This
is what I get for a single key press if I log each byte I read:
90
4B
80
00
This is multiple presses and releases of the same key at different
velocities:
90
3C
80
00
90
3D
80
00
90
3C
80
00
90
43
80
00
90
01
80
00
As you can see, there's a key on, and then a second byte (which seems to
be the velocity), but no byte to indicate which key is being pressed!
I'm reading the data byte per byte, from a blocking port:
byte byteVal;
int err;
if ((err = snd_rawmidi_read(m_inHandle, &byteVal, sizeof(byteVal)))
< 0)
{
std::cout << "Can't read MIDI input: " << snd_strerror(err) <<
std::endl;
throw BadInput();
}
std::cout << charToHex(byteVal) << std::endl;
I'm at a loss to see what I'm doing wrong. There's nothing fancy going
on in my reading loop.
- Maxime
------------------------------------------------------------------------------
The ultimate all-in-one performance toolkit: Intel(R) Parallel Studio XE:
Pinpoint memory and threading errors before they happen.
Find and fix more than 250 security defects in the development cycle.
Locate bottlenecks in serial and parallel code that limit performance.
http://p.sf.net/sfu/intel-dev2devfeb
_______________________________________________
Alsa-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/alsa-user