Here is how to make historic offline playbacks:

I made adoptions to the offline processing script for the case running historic offline playback and realtime playback in parallel, which was required for not interfering with Jans MT playback at the SCUG. So I used another messaging system running on port 4805 instead of 4803 and created symlink so the modules are named xxx_4805 to make it easier to identify them. I also created a new spread.conf supporting port 4805.

Here is the historic_offline_playback sh. I am sure that our IT-guys have probably many improvements to the script, but it worked for me.

#!/bin/bash

if [ "$#" -lt 4 ]; then
    echo "Usage: $0 [jump] [speed] [mseed-volume] [xml]"
    exit 0
fi

DBFLAG="-d mysql://sysop:sysop@localhost/seiscomp3"
STORAGE=$DBFLAG
CONFIGFLAGS="--console=1 --verbosity=1"
CONNECTION="-H localhost:4805"
FLAGS="$STORAGE $CONNECTION"


killall spread_4805 scmaster_4805 scautopick_4805 scautoloc_4805 scmag_4805 scevent_4805 sceplog_4805

echo "Starting spread..."
spread_4805 -n localhost -c "/home/sysop/seiscomp3/trunk/etc/spread_4805.conf" &
echo "Starting scmaster..."
scmaster_4805 -H localhost:4805 &
echo "Starting autoloc..."
scautoloc_4805 -u al $FLAGS --playback &
echo "Starting magtool..."
scmag_4805 -u mag $FLAGS &
echo "Starting eventtool..."
scevent_4805 -u event $FLAGS &
echo "Starting sceplog"
sceplog_4805 -u eplog $CONNECTION > $4.xml &
echo "Starting playback and autopick..."
msrtsimul_historic -j $1 -s $2 $3 | scautopick_4805 -u pick $FLAGS -I - --debug

In addition I adopted the msrtsimul.py in the way that I commented line 95 ("rec.begin_time += time_diff") in msrtsimul.py and changed the name to msrtsimul_historic.py. I did the same for the wrapper. Here is the code snippet you have to change:

for rec in input:
    if time_diff is None:
        time_diff = datetime.datetime.utcnow() - rec.begin_time - \
            datetime.timedelta(microseconds = 1000000.0 * (rec.nsamp / rec.fsamp))

#    rec.begin_time += time_diff

    if verbosity:
        sys.stderr.write("%s_%s %7.2f %s\n" % (rec.net, rec.sta, (time.time()-stime), str(rec.begin_time)))

    if not test:
        rec.write(sys.stdout,9)
        sys.stdout.flush()

In that way it is possible to also speed up by giving the -s parameter.

I hope it works also for you.

Bernd