本文整理汇总了Python中EEGsynth类的典型用法代码示例。如果您正苦于以下问题:Python EEGsynth类的具体用法?Python EEGsynth怎么用?Python EEGsynth使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了EEGsynth类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: forward_handler
def forward_handler(addr, tags, data, source):
global prefix
global scake
global offset
if debug > 1:
print("---")
print("source %s" % OSC.getUrlStr(source))
print("addr %s" % addr)
print("tags %s" % tags)
print("data %s" % data)
if addr[0] != '/':
# ensure it starts with a slash
addr = '/' + addr
if tags == 'f' or tags == 'i':
# it is a single value
key = prefix + addr.replace('/', '.')
val = EEGsynth.rescale(data[0], slope=scale, offset=offset)
patch.setvalue(key, val)
else:
for i in range(len(data)):
# it is a list, send it as multiple scalar control values
# append the index to the key, this starts with 0
key = prefix + addr.replace('/', '.') + '.%i' % i
val = EEGsynth.rescale(data[i], slope=scale, offset=offset)
patch.setvalue(key, val)
示例2: run
def run(self):
pubsub = r.pubsub()
pubsub.subscribe('OUTPUTMIDI_UNBLOCK') # this message unblocks the redis listen command
pubsub.subscribe(self.redischannel) # this message contains the note
while self.running:
for item in pubsub.listen():
if not self.running or not item['type'] == 'message':
break
if item['channel']==self.redischannel:
if debug>1:
print(item['channel'], '=', item['data'])
# map the Redis values to MIDI values
val = item['data']
val = EEGsynth.rescale(val, slope=input_scale, offset=input_offset)
val = EEGsynth.limit(val, 0, 127)
val = int(val)
sendMidi(self.name, self.code, val)
示例3: run
def run(self):
pubsub = r.pubsub()
pubsub.subscribe('VOLCAKEYS_UNBLOCK') # this message unblocks the redis listen command
pubsub.subscribe(self.redischannel) # this message contains the note
while self.running:
for item in pubsub.listen():
if not self.running or not item['type'] == 'message':
break
if item['channel']==self.redischannel:
# map the Redis values to MIDI values
val = EEGsynth.rescale(item['data'], slope=scale, offset=offset)
val = EEGsynth.limit(val, 0, 127)
val = int(val)
if debug>1:
print item['channel'], "=", val
msg = mido.Message('note_on', note=self.note, velocity=val, channel=midichannel)
lock.acquire()
outputport.send(msg)
lock.release()
示例4: run
def run(self):
pubsub = r.pubsub()
# this message unblocks the Redis listen command
pubsub.subscribe('OUTPUTCVGATE_UNBLOCK')
# this message triggers the event
pubsub.subscribe(self.redischannel)
while self.running:
for item in pubsub.listen():
if not self.running or not item['type'] == 'message':
break
if item['channel'] == self.redischannel:
# switch to the value specified in the event, it can be 0 or 1
val = float(item['data']) > 0
SetGate(self.gate, val)
if self.duration != None:
# schedule a timer to switch it off after the specified duration
duration = patch.getfloat('duration', self.duration)
duration = EEGsynth.rescale(duration, slope=duration_scale, offset=duration_offset)
# some minimal time is needed for the delay
duration = EEGsynth.limit(duration, 0.05, float('Inf'))
t = threading.Timer(duration, SetGate, args=[self.gate, False])
t.start()
示例5: run
def run(self):
pubsub = r.pubsub()
pubsub.subscribe('RECORDTRIGGER_UNBLOCK') # this message unblocks the Redis listen command
pubsub.subscribe(self.redischannel) # this message triggers the event
while self.running:
for item in pubsub.listen():
timestamp = datetime.datetime.now().isoformat()
if not self.running or not item['type'] == 'message':
break
if item['channel']==self.redischannel:
# the trigger value should also be saved
val = item['data']
val = EEGsynth.rescale(val, slope=input_scale, offset=input_offset)
if not f.closed:
lock.acquire()
f.write("%s\t%g\t%s\n" % (self.redischannel, val, timestamp))
lock.release()
if debug>0:
print("%s\t%g\t%s" % (self.redischannel, val, timestamp))
示例6: run
def run(self):
pubsub = r.pubsub()
pubsub.subscribe('SEQUENCER_UNBLOCK') # this message unblocks the redis listen command
pubsub.subscribe(self.redischannel) # this message contains the note
while self.running:
for item in pubsub.listen():
if not self.running or not item['type'] == 'message':
break
if item['channel'] == self.redischannel:
now = time.time()
if self.prevtime != None:
self.steptime = now - self.prevtime
self.prevtime = now
if len(self.sequence) > 0:
# the sequence can consist of a list of values or a list of Redis channels
val = self.sequence[self.step % len(self.sequence)]
try:
# convert the string from the ini to floating point
val = float(val)
except:
# get the value from Redis
val = r.get(val)
if val == None:
val = 0.
else:
# convert the string from Redis to floating point
val = float(val)
# apply the scaling, offset and transpose the note
val = EEGsynth.rescale(val, slope=scale_note, offset=offset_note)
val += self.transpose
# send it as sequencer.note with the note as value
patch.setvalue(self.key, val, duration=self.duration*self.steptime)
if val>=1.:
# send it also as sequencer.noteXXX with value 1.0
key = '%s%03d' % (self.key, val)
patch.setvalue(key, 1., duration=self.duration*self.steptime)
if debug>0:
print "step %2d :" % (self.step + 1), self.key, "=", val
# increment to the next step
self.step = (self.step + 1) % len(self.sequence)
示例7: update
def update():
global specmax_curr, specmin_curr, specmax_hist, specmin_hist, fft_prev, fft_hist, redfreq, redwidth, bluefreq, bluewidth, counter, history
# get last data
last_index = ft_input.getHeader().nSamples
begsample = (last_index - window)
endsample = (last_index - 1)
data = ft_input.getData([begsample, endsample])
if debug>0:
print("reading from sample %d to %d" % (begsample, endsample))
# demean and detrend data before filtering to reduce edge artefacts and center timecourse
data = detrend(data, axis=0)
# taper data
taper = np.hanning(len(data))
data = data * taper[:, np.newaxis]
# shift data to next sample
history = np.roll(history, 1, axis=2)
for ichan in range(numchannel):
channr = int(chanarray[ichan])
# estimate FFT at current moment, apply some temporal smoothing
fft_temp = abs(fft(data[:, channr]))
fft_curr[ichan] = fft_temp * lrate + fft_prev[ichan] * (1 - lrate)
fft_prev[ichan] = fft_curr[ichan]
# update FFT history with current estimate
history[ichan, :, numhistory - 1] = fft_temp
fft_hist = np.nanmean(history, axis=2)
# user-selected frequency band
arguments_freqrange = patch.getfloat('arguments', 'freqrange', multiple=True)
freqrange = np.greater(freqaxis, arguments_freqrange[0]) & np.less_equal(freqaxis, arguments_freqrange[1])
# update panels
spect_curr[ichan].setData(freqaxis[freqrange], fft_curr[ichan][freqrange])
spect_hist[ichan].setData(freqaxis[freqrange], fft_hist[ichan][freqrange])
# adapt the vertical scale to the running mean of min/max
specmax_curr[ichan] = float(specmax_curr[ichan]) * (1 - lrate) + lrate * max(fft_curr[ichan][freqrange])
specmin_curr[ichan] = float(specmin_curr[ichan]) * (1 - lrate) + lrate * min(fft_curr[ichan][freqrange])
specmax_hist[ichan] = float(specmax_hist[ichan]) * (1 - lrate) + lrate * max(fft_hist[ichan][freqrange])
specmin_hist[ichan] = float(specmin_hist[ichan]) * (1 - lrate) + lrate * min(fft_hist[ichan][freqrange])
freqplot_curr[ichan].setXRange(arguments_freqrange[0], arguments_freqrange[1])
freqplot_hist[ichan].setXRange(arguments_freqrange[0], arguments_freqrange[1])
freqplot_curr[ichan].setYRange(specmin_curr[ichan], specmax_curr[ichan])
freqplot_hist[ichan].setYRange(specmin_hist[ichan], specmax_hist[ichan])
# update plotted lines
redfreq = patch.getfloat('input', 'redfreq', default=10. / arguments_freqrange[1])
redfreq = EEGsynth.rescale(redfreq, slope=scale_red, offset=offset_red) * arguments_freqrange[1]
redwidth = patch.getfloat('input', 'redwidth', default=1. / arguments_freqrange[1])
redwidth = EEGsynth.rescale(redwidth, slope=scale_red, offset=offset_red) * arguments_freqrange[1]
bluefreq = patch.getfloat('input', 'bluefreq', default=20. / arguments_freqrange[1])
bluefreq = EEGsynth.rescale(bluefreq, slope=scale_blue, offset=offset_blue) * arguments_freqrange[1]
bluewidth = patch.getfloat('input', 'bluewidth', default=4. / arguments_freqrange[1])
bluewidth = EEGsynth.rescale(bluewidth, slope=scale_blue, offset=offset_blue) * arguments_freqrange[1]
if showred:
redleft_curr[ichan].setData(x=[redfreq - redwidth, redfreq - redwidth], y=[specmin_curr[ichan], specmax_curr[ichan]])
redright_curr[ichan].setData(x=[redfreq + redwidth, redfreq + redwidth], y=[specmin_curr[ichan], specmax_curr[ichan]])
if showblue:
blueleft_curr[ichan].setData(x=[bluefreq - bluewidth, bluefreq - bluewidth], y=[specmin_curr[ichan], specmax_curr[ichan]])
blueright_curr[ichan].setData(x=[bluefreq + bluewidth, bluefreq + bluewidth], y=[specmin_curr[ichan], specmax_curr[ichan]])
if showred:
redleft_hist[ichan].setData(x=[redfreq - redwidth, redfreq - redwidth], y=[specmin_hist[ichan], specmax_hist[ichan]])
redright_hist[ichan].setData(x=[redfreq + redwidth, redfreq + redwidth], y=[specmin_hist[ichan], specmax_hist[ichan]])
if showblue:
blueleft_hist[ichan].setData(x=[bluefreq - bluewidth, bluefreq - bluewidth], y=[specmin_hist[ichan], specmax_hist[ichan]])
blueright_hist[ichan].setData(x=[bluefreq + bluewidth, bluefreq + bluewidth], y=[specmin_hist[ichan], specmax_hist[ichan]])
# update labels at plotted lines
if showred:
text_redleft.setText('%0.1f' % (redfreq - redwidth))
text_redleft.setPos(redfreq - redwidth, specmax_curr[0])
text_redright.setText('%0.1f' % (redfreq + redwidth))
text_redright.setPos(redfreq + redwidth, specmax_curr[0])
else:
text_redleft.setText("")
text_redright.setText("")
if showblue:
text_blueleft.setText('%0.1f' % (bluefreq - bluewidth))
text_blueleft.setPos(bluefreq - bluewidth, specmax_curr[0])
text_blueright.setText('%0.1f' % (bluefreq + bluewidth))
text_blueright.setPos(bluefreq + bluewidth, specmax_curr[0])
else:
text_blueleft.setText("")
text_blueright.setText("")
if showred:
text_redleft_hist.setText('%0.1f' % (redfreq - redwidth))
text_redleft_hist.setPos(redfreq - redwidth, specmax_hist[0])
text_redright_hist.setText('%0.1f' % (redfreq + redwidth))
text_redright_hist.setPos(redfreq + redwidth, specmax_hist[0])
else:
#.........这里部分代码省略.........
示例8: exit
parser = argparse.ArgumentParser()
parser.add_argument("-i", "--inifile", default=os.path.join(installed_folder, os.path.splitext(os.path.basename(__file__))[0] + '.ini'), help="optional name of the configuration file")
args = parser.parse_args()
config = ConfigParser.ConfigParser()
config.read(args.inifile)
try:
r = redis.StrictRedis(host=config.get('redis','hostname'), port=config.getint('redis','port'), db=0)
response = r.client_list()
except redis.ConnectionError:
print "Error: cannot connect to redis server"
exit()
# combine the patching from the configuration file and Redis
patch = EEGsynth.patch(config, r)
# this determines how much debugging information gets printed
debug = patch.getint('general','debug')
# the list of MIDI commands is the only aspect that is specific to the Volca Keys
# see http://media.aadl.org/files/catalog_guides/1444140_chart.pdf
control_name = ['portamento', 'expression', 'voice', 'octave', 'detune', 'vco_eg_int', 'vcf_cutoff', 'vcf_eg_int', 'lfo_rate', 'lfo_pitch_int', 'lfo_cutoff_int', 'eg_attack', 'eg_decay_release', 'eg_sustain', 'delay_time', 'delay_feedback']
control_code = [5, 11, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53]
note_name = ['C0', 'Db0', 'D0', 'Eb0', 'E0', 'F0', 'Gb0', 'G0', 'Ab0', 'A0', 'Bb0', 'B0', 'C1', 'Db1', 'D1', 'Eb1', 'E1', 'F1', 'Gb1', 'G1', 'Ab1', 'A1', 'Bb1', 'B1', 'C2', 'Db2', 'D2', 'Eb2', 'E2', 'F2', 'Gb2', 'G2', 'Ab2', 'A2', 'Bb2', 'B2', 'C3', 'Db3', 'D3', 'Eb3', 'E3', 'F3', 'Gb3', 'G3', 'Ab3', 'A3', 'Bb3', 'B3', 'C4', 'Db4', 'D4', 'Eb4', 'E4', 'F4', 'Gb4', 'G4', 'Ab4', 'A4', 'Bb4', 'B4', 'C5', 'Db5', 'D5', 'Eb5', 'E5', 'F5', 'Gb5', 'G5', 'Ab5', 'A5', 'Bb5', 'B5', 'C6', 'Db6', 'D6', 'Eb6', 'E6', 'F6', 'Gb6', 'G6', 'Ab6', 'A6', 'Bb6', 'B6', 'C7', 'Db7', 'D7', 'Eb7', 'E7', 'F7', 'Gb7', 'G7', 'Ab7', 'A7', 'Bb7', 'B7', 'C8', 'Db8', 'D8', 'Eb8', 'E8', 'F8', 'Gb8', 'G8', 'Ab8', 'A8', 'Bb8', 'B8', 'C9', 'Db9', 'D9', 'Eb9', 'E9', 'F9', 'Gb9', 'G9', 'Ab9', 'A9', 'Bb9', 'B9', 'C10', 'Db10', 'D10', 'Eb10', 'E10', 'F10', 'Gb10', 'G10', 'Ab10', 'A10', 'Bb10', 'B10']
note_code = [12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143]
midichannel = patch.getint('midi', 'channel')-1 # channel 1-16 get mapped to 0-15
outputport = EEGsynth.midiwrapper(config)
outputport.open_output()
示例9: exit
parser = argparse.ArgumentParser()
parser.add_argument("-i", "--inifile", default=os.path.join(installed_folder, os.path.splitext(os.path.basename(__file__))[0] + '.ini'), help="optional name of the configuration file")
args = parser.parse_args()
config = ConfigParser.ConfigParser()
config.read(args.inifile)
try:
r = redis.StrictRedis(host=config.get('redis', 'hostname'), port=config.getint('redis', 'port'), db=0)
response = r.client_list()
except redis.ConnectionError:
print "Error: cannot connect to redis server"
exit()
# combine the patching from the configuration file and Redis
patch = EEGsynth.patch(config, r)
# this determines how much debugging information gets printed
debug = patch.getint('general', 'debug')
outputport = EEGsynth.midiwrapper(config)
outputport.open_output()
# this is to prevent two messages from being sent at the same time
lock = threading.Lock()
class TriggerThread(threading.Thread):
def __init__(self, redischannel, midichannel):
threading.Thread.__init__(self)
self.redischannel = redischannel
self.midichannel = midichannel
示例10: run
def run(self):
while self.running:
################################################################################
# these are to map the Redis values to MIDI values
################################################################################
scale_vco_pitch = patch.getfloat('scale', 'vco_pitch')
offset_vco_pitch = patch.getfloat('offset', 'vco_pitch')
################################################################################
# VCO
################################################################################
vco_pitch = patch.getfloat('control', 'vco_pitch', default=60)
vco_sin = patch.getfloat('control', 'vco_sin', default=0.75)
vco_tri = patch.getfloat('control', 'vco_tri', default=0.00)
vco_saw = patch.getfloat('control', 'vco_saw', default=0.25)
vco_sqr = patch.getfloat('control', 'vco_sqr', default=0.00)
# map the Redis values to MIDI values
vco_pitch = EEGsynth.rescale(vco_pitch, scale_vco_pitch, offset_vco_pitch)
vco_total = vco_sin + vco_tri + vco_saw + vco_sqr
if vco_total > 0:
# these are all scaled relatively to each other
vco_sin = vco_sin / vco_total
vco_tri = vco_tri / vco_total
vco_saw = vco_saw / vco_total
vco_sqr = vco_sqr / vco_total
################################################################################
# LFO
################################################################################
lfo_frequency = patch.getfloat('control', 'lfo_frequency', default=2)
lfo_depth = patch.getfloat('control', 'lfo_depth', default=0.5)
################################################################################
# ADSR
################################################################################
adsr_attack = patch.getfloat('control', 'adsr_attack', default=0.25)
adsr_decay = patch.getfloat('control', 'adsr_decay', default=0.25)
adsr_sustain = patch.getfloat('control', 'adsr_sustain', default=0.5)
adsr_release = patch.getfloat('control', 'adsr_release', default=0.25)
# convert from value between 0 and 1 into time in samples
adsr_attack *= float(rate)
adsr_decay *= float(rate)
adsr_sustain *= float(rate)
adsr_release *= float(rate)
################################################################################
# VCA
################################################################################
vca_envelope = patch.getfloat('control', 'vca_envelope', default=0.5)
################################################################################
# store the control values in the local object
################################################################################
lock.acquire()
self.vco_pitch = vco_pitch
self.vco_sin = vco_sin
self.vco_tri = vco_tri
self.vco_saw = vco_saw
self.vco_sqr = vco_sqr
self.lfo_depth = lfo_depth
self.lfo_frequency = lfo_frequency
self.adsr_attack = adsr_attack
self.adsr_decay = adsr_decay
self.adsr_sustain = adsr_sustain
self.adsr_release = adsr_release
self.vca_envelope = vca_envelope
lock.release()
if debug > 2:
print('----------------------------------')
print('vco_pitch =', vco_pitch)
print('vco_sin =', vco_sin)
print('vco_tri =', vco_tri)
print('vco_saw =', vco_saw)
print('vco_sqr =', vco_sqr)
print('lfo_depth =', lfo_depth)
print('lfo_frequency =', lfo_frequency)
print('adsr_attack =', adsr_attack)
print('adsr_decay =', adsr_decay)
print('adsr_sustain =', adsr_sustain)
print('adsr_release =', adsr_release)
print('vca_envelope =', vca_envelope)
示例11: exit
parser = argparse.ArgumentParser()
parser.add_argument("-i", "--inifile", default=os.path.join(installed_folder, os.path.splitext(os.path.basename(__file__))[0] + '.ini'), help="optional name of the configuration file")
args = parser.parse_args()
config = ConfigParser.ConfigParser()
config.read(args.inifile)
try:
r = redis.StrictRedis(host=config.get('redis','hostname'), port=config.getint('redis','port'), db=0)
response = r.client_list()
except redis.ConnectionError:
print "Error: cannot connect to redis server"
exit()
# combine the patching from the configuration file and Redis
patch = EEGsynth.patch(config, r)
del config
# this determines how much debugging information gets printed
debug = patch.getint('general','debug')
try:
ftc_host = patch.getstring('fieldtrip','hostname')
ftc_port = patch.getint('fieldtrip','port')
if debug>0:
print 'Trying to connect to buffer on %s:%i ...' % (ftc_host, ftc_port)
ft_output = FieldTrip.Client()
ft_output.connect(ftc_host, ftc_port)
if debug>0:
print "Connected to output FieldTrip buffer"
except:
示例12: exit
parser = argparse.ArgumentParser()
parser.add_argument("-i", "--inifile", default=os.path.join(installed_folder, os.path.splitext(os.path.basename(__file__))[0] + '.ini'), help="optional name of the configuration file")
args = parser.parse_args()
config = ConfigParser.ConfigParser()
config.read(args.inifile)
try:
r = redis.StrictRedis(host=config.get('redis','hostname'), port=config.getint('redis','port'), db=0)
response = r.client_list()
except redis.ConnectionError:
print "Error: cannot connect to redis server"
exit()
# combine the patching from the configuration file and Redis
patch = EEGsynth.patch(config, r)
del config
# this determines how much debugging information gets printed
debug = patch.getint('general','debug')
# this is the timeout for the FieldTrip buffer
timeout = patch.getfloat('fieldtrip','timeout')
try:
ftc_host = patch.getstring('fieldtrip', 'hostname')
ftc_port = patch.getint('fieldtrip', 'port')
if debug > 0:
print 'Trying to connect to buffer on %s:%i ...' % (ftc_host, ftc_port)
ft_input = FieldTrip.Client()
ft_input.connect(ftc_host, ftc_port)
示例13: print
parser = argparse.ArgumentParser()
parser.add_argument("-i", "--inifile", default=os.path.join(installed_folder, os.path.splitext(os.path.basename(__file__))[0] + '.ini'), help="optional name of the configuration file")
args = parser.parse_args()
config = configparser.ConfigParser(inline_comment_prefixes=('#', ';'))
config.read(args.inifile)
try:
r = redis.StrictRedis(host=config.get('redis','hostname'), port=config.getint('redis','port'), db=0)
response = r.client_list()
except redis.ConnectionError:
print("Error: cannot connect to redis server")
exit()
# combine the patching from the configuration file and Redis
patch = EEGsynth.patch(config, r)
# this determines how much debugging information gets printed
debug = patch.getint('general', 'debug')
# these are for mapping the Redis values to internal values
scale_rate = patch.getfloat('scale', 'rate')
offset_rate = patch.getfloat('offset', 'rate')
scale_shift = patch.getfloat('scale', 'shift')
offset_shift = patch.getfloat('offset', 'shift')
scale_ppqn = patch.getfloat('scale', 'ppqn')
offset_ppqn = patch.getfloat('offset', 'ppqn')
# this can be used to selectively show parameters that have changed
def show_change(key, val):
示例14: exit
parser = argparse.ArgumentParser()
parser.add_argument("-i", "--inifile", default=os.path.join(installed_folder, os.path.splitext(os.path.basename(__file__))[0] + '.ini'), help="optional name of the configuration file")
args = parser.parse_args()
config = ConfigParser.ConfigParser()
config.read(args.inifile)
try:
r = redis.StrictRedis(host=config.get('redis','hostname'), port=config.getint('redis','port'), db=0)
response = r.client_list()
except redis.ConnectionError:
print "Error: cannot connect to redis server"
exit()
# combine the patching from the configuration file and Redis
patch = EEGsynth.patch(config, r)
# this determines how much debugging information gets printed
debug = patch.getint('general','debug')
try:
s = serial.Serial()
s.port=patch.getstring('serial','device')
s.baudrate=patch.getstring('serial','baudrate')
s.bytesize=8
s.parity='N'
s.stopbits=2
s.timeout=3.0
# xonxoff=0
# rtscts=0
s.open()
示例15: exit
parser = argparse.ArgumentParser()
parser.add_argument("-i", "--inifile", default=os.path.join(installed_folder, os.path.splitext(os.path.basename(__file__))[0] + '.ini'), help="optional name of the configuration file")
args = parser.parse_args()
config = ConfigParser.ConfigParser()
config.read(args.inifile)
try:
r = redis.StrictRedis(host=config.get('redis','hostname'), port=config.getint('redis','port'), db=0)
response = r.client_list()
except redis.ConnectionError:
print "Error: cannot connect to redis server"
exit()
# combine the patching from the configuration file and Redis
patch = EEGsynth.patch(config, r)
debug = patch.getint('general', 'debug') # this determines how much debugging information gets printed
timeout = patch.getfloat('input_fieldtrip', 'timeout') # this is the timeout for the FieldTrip buffer
sample_rate = patch.getfloat('sonification', 'sample_rate')
f_shift = patch.getstring('sonification', 'f_shift')
f_offset = patch.getfloat('sonification', 'f_offset')
f_order = patch.getint('sonification', 'f_order', default=15)
window = patch.getfloat('sonification', 'window')
sideband = patch.getstring('sonification', 'sideband')
left = patch.getint('sonification', 'left', multiple=True)
right = patch.getint('sonification', 'right', multiple=True)
# these are for multiplying/attenuating the output signal
scaling = patch.getfloat('sonification', 'scaling')
scaling_method = patch.getstring('sonification', 'scaling_method')