Introduction

I'll hand a report about the actually MIDI jitter in later. Here I argued why it's quixotic to ignore some issues for some suggestions, how to work with Linux for a mix of natural instruments, internal MIDI instruments and external MIDI instruments. Alternatively I recommend to take care about and feature some functions for Linux MIDI sequencers.

Hi, folks :)

so far we solved that JACK doesn't disconnect clients any more, the most probable reason for this seems to be the change from JACK1 to JACK2.

The next important thing for me, is to decrease jitter for external MIDI equipment, doing this might spare the need to urgently solve some or maybe all other issues I'm not fine with.

Here's the report of what I did at last and also I argue some aspects of MIDI and historical MIDI equipment. I guess some people like the sound of a Stradivari more than the sound of a modern violin made of wood that's still wet, for synth it's comparable to that. I hope you understand this analogy. Sometimes I read that e.g. Hexter sounds equal to a DX7, then I often was near to ask for the serial number of the used DX7, some people even wrote that the Bristol DX7 sounds like a DX7, reading this I tend to ask from which planet and company the DX7 they are talking about is. Some synth like the DX7, Prophet 5 etc. came with really different revisions. Just imagine a virtual synth that sounds like a Minimoog, hopefully it sounds like a Minimoog with a stable tuning, the tuning of some Minimoogs strongly colour their outputs ;).

1.

I soldered a MIDI cable that fit to my TERRATEC EWX 24/96 PCI sound card. I guess it's possible that sync is better when using this interface instead of the USB one. In the first place I would like to have both interfaces, to enable the usage of the whole MIDI equipment I've got. There are 3 reasons to have more than one interface.

The first reason even can be satisfied with additional interfaces having bad sync or simply one interface by adding a switch for the sources. I need to have several MIDI inputs, for different sources, but mostly I use one master keyboard, while most other sources just need the possibility to dump SysEx, without the need to do that in rt.

The second reason is that some equipment only receives in omni mode or isn't able to be fine with 'running status', so that I have to use an independent output or to rummage about my Commodore 64 and an Assembler routine I wrote around 17 years ago, to filter and pass one channel. By the way, this program I wrote and a MIDI-thru-box I build don't cause serious jitter or delay, but each MIDI-thru causes delay and for the rhythm group this can become a serious problem, when it won't be compensated, that's one of the reasons why every sequencer should feature an offset option for tracks or at least for the elements on the tracks (clips, parts, segments or what ever 'your' sequencer's manual call them). I only know a sequencer post Commodore 64 and pre Linux, Mac OS, Windows supporting to turn 'running status' on or off, an Atari sequencers pre the latest Atari Cubase version. This is good because of the slow interface, but sometimes requires more than one MIDI output. For cases with less MIDI data traffic, it would be nice to have every sequencer supporting to turn 'running status' on or off. For Linux I guess ALSA MIDI and JACK MIDI internally are working with all bytes, while for the output to external equipment 'running status' is active and cancelling status bytes. I hope there's a flag that can be set by sequencers, so that ALSA MIDI and JACK MIDI enable or disable 'running status' for the output to external equipment when needed.

The third reason is that 16 MIDI channels aren't enough, resp. one interface can be to slow to handle all the data. Imagine that you might use 16 instruments, but with 16 FX that need separate channels or imagine you're using just 8 instruments, but you control filters by SysEx in rt for some instruments and of course you some day might need 17 instruments and no channel can be used in a way to control 2 instruments (often it might be possible to split the range of notes and e.g. to use modulation wheel for one and after touch for the other synth, or two synth are played in unison only).

2.

-------- Original Message --------
Subject:     Re: PS: Qtractor wishlist
Date:     Mon, 1 Jun 2009 11:50:25 +0100 (WEST)
From:     Rui Nuno Capela <[email protected]>
if your primary audio interface is the "usb" one, try to put it ahead of
the "snd" in the priority sequence--see your rtirq.conf, like this

  # IRQ thread service names
  # (space separated list, from higher to lower priority).
  RTIRQ_NAME_LIST="rtc snd usb i8042"

change that to:

  RTIRQ_NAME_LIST="rtc usb snd i8042"

and restart.
-------- Original Message --------
Subject: Re: Qtractor and/ or trouble because of Linux audio is prpblematic
Date:     Mon, 15 Jun 2009 10:43:35 +0100 (WEST)
From:     Rui Nuno Capela <[email protected]>
Ralf Mardorf wrote:
No, my primary sound device is an Envy24 based PCI card. The USB device
is for MIDI only. I guess once upon a time I got better sync and/ or
less jitter when not using RTC or what clock ever, but sync to PCM
output or what it is called for Rosegarden's sequencer clock.


ok, try using "usb3" instead of just "usb" in that rtirq.conf line. that
will make your particular usb midi device ahead of the usb crowd. just
remember that will probably change depending on which usb host port the
device is plugged.

getting back to midi timing. rtc was indeed problematic before, moreover
on a rt-preemptive kernel (which still is highly experimental atm). to
make things worse the vanilla system timer is bad as easy, mostly due to
lousy default resolution (250hz). for quite some time, having the midi
timer dependable on the pcm device timing was the reasonable choice but
then it made jitter a function of the audio period/buffer size. not good
and open for too many ymmv issues.

that's why one could only go with 1000hz kernel timers. newer kernels (alsa)
have this default high-resolution timers option which might be a blessing.

you see, linux audio/midi is and has been a moving target, with too many
ups and downs, and still a swamp of good and bad software solutions and
hardware combinations.

in many ways, it is far, too far yet, from a complete or finished
business. i wonder if it will ever be ;)

Instead of searching USB 01 I verified if the MIDI device still is connected to slot 03.

   r...@64studio:~# hwinfo --usb
   01: [snip]
     Driver Modules: "usbcore"
     [snip]
   02: [snip]
     Driver Modules: "usbcore"
     [snip]
   03: [snip]
     Driver: "snd-usb-audio"
     Driver Modules: "snd_usb_audio"
     [snip]

Then I run '# gedit /etc/default/rtirq', edited the file, see the attached 'rtirq'.conf and restarted the computer, resp. shut down the computer, did something else and will turn it on later, so that the configuration could be used by /etc/init.d/rtirq I guess. I think that for other distros I need to search were the configuration file is, e.g. in /etc/sysconfig.

Cheers,
Ralf

--
http://www.dailywav.com/1002/beginning.wav

#!/bin/bash
#
# Copyright (c) 2004-2007 rncbc aka Rui Nuno Capela.
#
# /etc/default/rtirq
#
# Configuration for IRQ thread tunning,
# for realtime-preempt enabled kernels.
#
# This program is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 or later.
#

# IRQ thread service names
# (space separated list, from higher to lower priority).
# DEFAULT:
# RTIRQ_NAME_LIST="rtc snd usb i8042"
# EDITED TO:
RTIRQ_NAME_LIST="rtc snd usb3 i8042"

# Highest priority.
RTIRQ_PRIO_HIGH=90

# Priority decrease step.
RTIRQ_PRIO_DECR=5

# Whether to reset all IRQ threads to SCHED_OTHER.
RTIRQ_RESET_ALL=0

# On kernel configurations that support it,
# which services should be NOT threaded 
# (space separated list).
RTIRQ_NON_THREADED="rtc snd"

# Process names which will be forced to the
# highest realtime priority range (99-91)
# (space separated list, from highest to lower priority).
# RTIRQ_HIGH_LIST="softirq-timer"



_______________________________________________
64studio-users mailing list
[email protected]
http://lists.64studio.com/mailman/listinfo/64studio-users

Reply via email to