Having trouble accessing multiple analog channels on my soundcard
Hi, another newbie question here.
I have an RME soundcard at my disposal with 6 analog channels (it also has other types but I cant use those)
like this:
When I try to set up 3 output devices like this
I get the error message
separate audio device choice not supported; using sequential devices.
So my mixer ends up looking like this:
Which I guess corresponds to the "sequential devices'. Ofcourse I want AN 1/2 , 3/4 and 5/6. (7/8 is actually just headphones, but just to show how its acting weird)
I CAN however select Speakers (RME Fireface UCX) together with Analog (3+4) and (5+6) and then I get this
which is already a step in the right direction, but I really need all 6 channels.
I googled the error message and came upon this thread from 2003 http://lists.puredata.info/pipermail/pd-list/2003-10/014460.html but that just confused me more. I tried using these commands in the PD console but it's just giving me invalid command name errors.
I'm trying to achieve something along these lines (extremely simplified example)
I tried using ASIO but I can't select multiple devices like on the screenshots above and on top of that the audio it outputs is completely distorted. Very odd. (using MMIO now)
Any help is much appreciated.
.MOV/.MP4 glitcher
Hi,
I have built a pd abstraction that glitches .MOV/.MP4 files. This is the result of a long process that involved the study and understanding of the way .MOV files work and their atom structure. Having learned a lot while developping my jpeg and mp3 glitchers, I have been willing to transpose this knowledge to the video realm. To make a long story short, my abstraction locates the mdat atom of the file, reads its length and glitches it in a user-controlable way, while leaving the rest of the filestructure untouched, allowing various degrees of glitchiness with very few unreadable files.
Of course, the bigger the files, he longer the processing time. I have able to glitch a 250 meg MP4 (40 minutes of video) in a bout 1 minute on a macbook pro running under OS 10.10 with the latest stable version of PD extended. On slower computers, processing may take up to 5/6 minutes. Also note that results will vary according to the codec used for compression. I have been able to get good results with H264, but they should all work. As usual with glitch, results will also vary according to the player you use. I personnaly prefer VLC . Some files may appear broken on some players and play just fine on others... Usually, if a file breaks in the process, just tweak the settings a bit to get less glitched file, it should work eventually. This is particulary thrue with small files.
Here's a bunch of stills I took from one processed video:
Here's the pd extend abstraction:
mp4glitcher.pd
It's a graph on parent abstraction, so the idea is to open it like an object in a blank canvas.
And here's the standalone version for mac:
https://1drv.ms/u/s!AjNgShvVLV0XikkivHwWok_tpbYQ
Your comments are welcome!
"Morphine" - fx-morphing engine
for some reason, the list of error messages became even longer......
mix.switch.nice 101
... couldn't create
init.post.dollarg
... couldn't create
flow.receive
... couldn't create
flow.send
... couldn't create
list.split 1
... couldn't create
flow.send
... couldn't create
flow.send
... couldn't create
flow.receive
... couldn't create
[makesymbol] part of zexy-2.2.3 (compiled: Feb 25 2009)
Copyright (l) 1999-2008 IOhannes m zmölnig, forum::für::umläute & IEM
flow.@parse
... couldn't create
flow.receive
... couldn't create
init.dollar.zero.top
... couldn't create
flow.receive
... couldn't create
flow.receive
... couldn't create
list.build
... couldn't create
[demultiplex] part of zexy-2.2.3 (compiled: Feb 25 2009)
Copyright (l) 1999-2008 IOhannes m zmölnig, forum::für::umläute & IEM
init.make.unique
... couldn't create
flow.receive
... couldn't create
flow.receive
... couldn't create
flow.send
... couldn't create
list.split 1
... couldn't create
list.split 1
... couldn't create
list.length
... couldn't create
flow.send
... couldn't create
flow.send
... couldn't create
wahwah~: an audio wahwah, version 0.1 (ydegoyon@free.fr)
expr, expr~, fexpr~ version 0.4 under GNU General Public License
mix.switch.nice 101
... couldn't create
init.post.dollarg
... couldn't create
flow.receive
... couldn't create
flow.send
... couldn't create
list.split 1
... couldn't create
flow.send
... couldn't create
flow.send
... couldn't create
flow.receive
... couldn't create
flow.@parse
... couldn't create
flow.receive
... couldn't create
init.dollar.zero.top
... couldn't create
flow.receive
... couldn't create
flow.receive
... couldn't create
list.build
... couldn't create
init.make.unique
... couldn't create
flow.receive
... couldn't create
flow.receive
... couldn't create
flow.send
... couldn't create
list.split 1
... couldn't create
list.split 1
... couldn't create
list.length
... couldn't create
flow.send
... couldn't create
flow.send
... couldn't create
mix.switch.nice 101
... couldn't create
init.post.dollarg
... couldn't create
flow.receive
... couldn't create
flow.send
... couldn't create
list.split 1
... couldn't create
flow.send
... couldn't create
flow.send
... couldn't create
flow.receive
... couldn't create
flow.@parse
... couldn't create
flow.receive
... couldn't create
init.dollar.zero.top
... couldn't create
flow.receive
... couldn't create
flow.receive
... couldn't create
list.build
... couldn't create
init.make.unique
... couldn't create
flow.receive
... couldn't create
flow.receive
... couldn't create
flow.send
... couldn't create
list.split 1
... couldn't create
list.split 1
... couldn't create
list.length
... couldn't create
flow.send
... couldn't create
flow.send
... couldn't create
mix.switch.nice 101
... couldn't create
init.post.dollarg
... couldn't create
flow.receive
... couldn't create
flow.send
... couldn't create
list.split 1
... couldn't create
flow.send
... couldn't create
flow.send
... couldn't create
flow.receive
... couldn't create
flow.@parse
... couldn't create
flow.receive
... couldn't create
init.dollar.zero.top
... couldn't create
flow.receive
... couldn't create
flow.receive
... couldn't create
list.build
... couldn't create
init.make.unique
... couldn't create
flow.receive
... couldn't create
flow.receive
... couldn't create
flow.send
... couldn't create
list.split 1
... couldn't create
list.split 1
... couldn't create
list.length
... couldn't create
flow.send
... couldn't create
flow.send
... couldn't create
error: inlet: expected '' but got 'symbol'
... you might be able to track this down from the Find menu.
error: inlet: expected '' but got 'symbol'
error: inlet: expected '' but got 'symbol'
error: inlet: expected '' but got 'list'
error: inlet: expected '' but got 'symbol'
error: inlet: expected '' but got 'symbol'
error: inlet: expected '' but got 'list'
error: inlet: expected '' but got 'symbol'
error: inlet: expected '' but got 'symbol'
error: inlet: expected '' but got 'symbol'
error: inlet: expected '' but got 'list'
error: inlet: expected '' but got 'symbol'
error: inlet: expected '' but got 'symbol'
error: inlet: expected '' but got 'list'
error: inlet: expected '' but got 'symbol'
error: inlet: expected '' but got 'symbol'
error: inlet: expected '' but got 'symbol'
error: inlet: expected '' but got 'list'
error: inlet: expected '' but got 'symbol'
error: inlet: expected '' but got 'symbol'
error: inlet: expected '' but got 'list'
error: inlet: expected '' but got 'symbol'
error: inlet: expected '' but got 'symbol'
error: inlet: expected '' but got 'symbol'
error: inlet: expected '' but got 'list'
error: inlet: expected '' but got 'symbol'
error: inlet: expected '' but got 'symbol'
error: inlet: expected '' but got 'list'
i'd really love to check out, what you have build there!
Synthesis metal bars sound
HI,
i'm working on an installation based on this apllication made in java
i communique with pd via OSC
for each collision pd receive a bang with two parameters
height tube
position tube
i'm looking for synthesis metal bars sounds to transform this "thing" into a musical instrument
there is samples here
http://obiwannabe.co.uk/html/sound-design/sound-design-audio.html
http://obiwannabe.co.uk/sounds/effect-clonk-002-bar.mp3
http://obiwannabe.co.uk/sounds/effect-clonk-002-bar.mp3
http://obiwannabe.co.uk/sounds/effect-clonk-004-iron.mp3
http://obiwannabe.co.uk/sounds/effect-clonk-006-bar.mp3
What kind of simple patch should i have to make for this goal?
au revoir
Denis
ALSA
below you'll find my lsmod info. echomixer, the alsa-toolkit utility for echo audio products did work after doing [ # alsaconf ] however, I tried to test my config simply by doing this;
# aplay -vv *
ALSA lib confmisc.c:670:(snd_func_card_driver) cannot find card '0'
ALSA lib conf.c:3500:(_snd_config_evaluate) function snd_func_card_driver returned error: No such device
ALSA lib confmisc.c:391:(snd_func_concat) error evaluating strings
ALSA lib conf.c:3500:(_snd_config_evaluate) function snd_func_concat returned error: No such device
ALSA lib confmisc.c:1070:(snd_func_refer) error evaluating name
ALSA lib conf.c:3500:(_snd_config_evaluate) function snd_func_refer returned error: No such device
ALSA lib conf.c:3968:(snd_config_expand) Evaluate error: No such device
ALSA lib pcm.c:2143:(snd_pcm_open_noupdate) Unknown PCM default
aplay: main:550: audio open error: No such device
So therer is still a missing piece.
Module Size Used by
snd_layla24 36356 0
snd_seq_oss 40084 0
snd_seq_midi 9792 0
snd_seq_midi_event 8160 2 snd_seq_oss,snd_seq_midi
snd_seq 60456 5 snd_seq_oss,snd_seq_midi,snd_seq_midi_event
snd_rawmidi 28992 2 snd_layla24,snd_seq_midi
snd_seq_device 9708 4 snd_seq_oss,snd_seq_midi,snd_seq,snd_rawmidi
firmware_class 11744 1 snd_layla24
snd_pcm_oss 52032 0
snd_mixer_oss 20704 1 snd_pcm_oss
snd_pcm 91396 2 snd_layla24,snd_pcm_oss
snd_timer 26500 2 snd_seq,snd_pcm
snd 65908 9 snd_layla24,snd_seq_oss,snd_seq,snd_rawmidi,snd_seq_device,snd_pcm_oss,snd_mixer_oss,snd_pcm,snd_timer
soundcore 11204 1 snd
snd_page_alloc 11304 2 snd_layla24,snd_pcm
ALSA
Dunno what snd_pcm is returning there, but you should see a separate driver for the Layla24
like this
$ lsmod
snd-seq-midi 5152 0 (unused)
snd-virmidi 2080 0
snd-seq-virmidi 5128 0 [snd-virmidi]
snd-seq-midi-event 6240 0 [snd-seq-midi snd-seq-virmidi]
snd-seq 48784 0 [snd-seq-midi snd-seq-virmidi snd-seq-midi-event]
snd-layla24 149732 3 <--------*here*
snd-pcm 85860 2 [snd-layla24] <---and pcm is using it
You don't have to recompile kernel or anything, find a driver and use insmod
Apparently there's a utils package at Alsa Project website for the Echo Layla24 that sets up everything. Have you tried that one?
also, there's an ALSA Wiki up now that may help you
Timbre conversion
@daisy said:
I have read some where that "if a voice is at same pitch and same loudness and still if one recognize that two voices are different , it is becuase of TIMBRE (tone quality)". (I agree there are other features as well who need to consider).
Timbre is another word for spectrum. The spectrum of a sound is the combination of basic sine waves that are mixed together to make it. Every sound (except a sine wave) is a mixture of sine waves. You can make any sound by adding the right sine waves together. This is called synthesis.
@daisy said:
First Question:
So how we can calculate the TIMBRE of voice? as fiddle~ object is used to determine the pitch of voice? what object is used for TIMBRE calculation?.
[fft~] object splits up the spectrum of a sound. Think of it like a prism acting on a ray of light. Sound which is a mixture of sines, like white light, goes in. A rainbow of different colours comes out. Now you can see how much red, blue, yellow or green light was in the input. That's called analysis.
So the calculation that gives the spectrum doesn't return a single number. Timbre is a vector, or list of numbers which give the frequencies and amplitudes of the sine waves in the mixture. We sometimes call these "partials".
If you use sine wave oscillators to make a bunch of new sine waves and add them together according to this recipe you get the original sound back! That's called resynthesis.
@daisy said:
Second Question:
And how one can change TIMBRE? as pitch shifting technique is used for pitch? what about timbre change?Thanks.
Many things change timbre. The simplest is a filter. A high pass filter removes all the low bits of the spectrum, a bandpass only lets through some of the sine waves in the middle, and so on...
Another way to change timbre is to do analysis with [fft~] and then shift some of the partials or remove some, and then resynthesise the sound.
@daisy said:
I have a kind of general idea (vcoder). but how to implement it? and how to change formant?.
A vocoder is a bank of filters and an analysis unit. Each partial that appears in the analysis affects the amplitude of a filter. The filter itself operates on another sound (often in real time). We can take the timbre of one sound by analysing it and get it to shape another sound that is fed through the filters. The second sound takes on some of the character of the first sound. This is called cross-synthesis.
/doc/4.fft.examples/05.sheepgoat.pd
Help -> 7.Stuff -> Sound file tools -> 6.Vocoder
Midi in on linux
@Gimmeapill said:
do you have the alsa module snd-seq loaded ?
lsmod|grep snd_seq
snd_seq_dummy 4996 2
snd_seq_oss 36480 5
snd_seq_midi 9984 2
snd_rawmidi 27264 3 snd_usb_lib,snd_mpu401_uart,snd_seq_midi
snd_seq_midi_event 8960 2 snd_seq_oss,snd_seq_midi
snd_seq 59120 6 snd_seq_dummy,snd_seq_oss,snd_seq_midi,snd_seq_midi_event
snd_timer 25348 3 snd_rtctimer,snd_pcm,snd_seq
snd_seq_device 9868 5 snd_seq_dummy,snd_seq_oss,snd_seq_midi,snd_rawmidi,snd_seq
snd 58372 16 snd_usb_audio,snd_hwdep,snd_mpu401,snd_mpu401_uart,snd_seq_oss,snd_intel8x0,snd_ac97_codec,snd_rawmidi,snd_pcm_oss,snd_mixer_oss,snd_pcm,snd_seq,snd_timer,snd_seq_device
Thanks, Gimmeapill, but it has been loaded all along and of course I am not getting midi.
Frozen reverb
"Frozen reverb" is a misnomer. It belongs in the Chindogu section along with real-time timestretching, inflatable dartboards, waterproof sponges and ashtrays for motorbikes. Why? Because reverb is by definition a time variant process, or a convolution of two signals one of which is the impulse response and one is the signal. Both change in time. What you kind of want is a spectral snapshot.
-
Claudes suggestion above, a large recirculating delay network running at 99.99999999% feedback.
Advantages: Sounds really good, its a real reverb with a complex evolution that's just very long.
Problems: It can go unstable and melt down the warp core. Claudes trick of zeroing teh feedback is foolproof, but it does require you to have an apropriate control level signal. Not good if you're feeding it from an audio only source.
Note: the final spectrum is the sum of all spectra the sound passes through, which might be a bit too heavy. The more sound you add to it, with a longer more changing sound, the closer it eventually gets to noise. -
A circular scanning window of the kind used in a timestretch algorithm
Advantages: It's indefinitely stable, and you can slowly wobble the window to get a "frozen but still moving" sound
Problems: Sounds crap because some periodicity from the windowing is always there.
Note: The Eventide has this in its infiniverb patch. The final spectrum is controllable, it's just some point in the input sound "frozen" by stopping the window from scanning forwards (usually when the input decays below a threshold). Take the B.14 Rockafella sampler and write your input to the table. Use an [env~]-[delta] pair to find when the
input starts to decay and then set the "precession percent" value to zero, the sound will freeze at that point. -
Resynthesised spectral snapshot
Advantages: Best technical solution, it sounds good and is indefinitely stable.
Problems: It's a monster that will eat your CPUs liver with some fava beans and a nice Chianti.
Note: 11.PianoReverb patch is included in the FFT examples. The description is something like "It punches in new partials when theres a peak that masks what's already there". You can only do this in the frequency domain. The final spectrum will be the maxima of the unique components in the last input sound that weren't in the previous sound. Just take the 11.PianoReverb patch in the FFT examples and turn the reverb time up to lots.
Install gridflow on linux
I've tried to install under root session but it still doesn't work!...
the full output for 'make install' is (sorry this is very very very long!!!):
ruby -w base/source_filter.rb base/grid.h base/grid.h.fcs
ruby -w base/source_filter.rb base/grid.c base/grid.c.fcs
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
g++ -fPIC -g -O2 -I/Applications/Pd.app/Contents/Resources/include -I/sw/include -I/usr/local/include -I/include -xc++ -fno-operator-names -fno-omit-frame-point er -I/usr/X11R6/include -I /usr/local/lib/ruby/1.8/i686-linux -mcpu=pentium -mar ch=pentium -Wall -Wno-unused -O3 -funroll-loops -fno-omit-frame-pointer -g -fPIC -I. -I/home/bastien/Desktop/gridflow-0.8.0 -I -I. -c base/grid.c.fcs -o base/grid.o
ruby -w base/source_filter.rb base/main.c base/main.c.fcs
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
g++ -fPIC -g -O2 -I/Applications/Pd.app/Contents/Resources/include -I/sw/include -I/usr/local/include -I/include -xc++ -fno-operator-names -fno-omit-frame-point er -I/usr/X11R6/include -I /usr/local/lib/ruby/1.8/i686-linux -mcpu=pentium -mar ch=pentium -Wall -Wno-unused -O3 -funroll-loops -fno-omit-frame-pointer -g -fPIC -I. -I/home/bastien/Desktop/gridflow-0.8.0 -I -I. -c base/main.c.fcs -o base/main.o
ruby -w base/source_filter.rb base/number.c base/number.c.fcs
g++ -fPIC -g -O2 -I/Applications/Pd.app/Contents/Resources/include -I/sw/include -I/usr/local/include -I/include -xc++ -fno-operator-names -fno-omit-frame-point er -I/usr/X11R6/include -I /usr/local/lib/ruby/1.8/i686-linux -mcpu=pentium -mar ch=pentium -Wall -Wno-unused -O3 -funroll-loops -fno-omit-frame-pointer -g -fPIC -I. -I/home/bastien/Desktop/gridflow-0.8.0 -I -I. -DPASS1
-c base/num ber.c.fcs -o base/number.1.o
base/number.c.fcs: In static member function `static bool Op<T>::is_neutral(T, L eftRight)':
base/number.c.fcs:47: attention : « return » manquant dans une fonction devant r etourner une valeur
base/number.c.fcs: In static member function `static bool Op<T>::is_absorbent(T, LeftRight)':
base/number.c.fcs:48: attention : « return » manquant dans une fonction devant r etourner une valeur
base/number.c.fcs: In static member function `static bool Ymulshr8<T>::is_neutra l(T, LeftRight) [with T = uint8]':
base/number.c.fcs:266: instantiated from here
base/number.c.fcs:200: attention : comparaison est toujours fausse en raison d'u ne gamme limitée de type de données
g++ -fPIC -g -O2 -I/Applications/Pd.app/Contents/Resources/include -I/sw/include -I/usr/local/include -I/include -xc++ -fno-operator-names -fno-omit-frame-point er -I/usr/X11R6/include -I /usr/local/lib/ruby/1.8/i686-linux -mcpu=pentium -mar ch=pentium -Wall -Wno-unused -O3 -funroll-loops -fno-omit-frame-pointer -g -fPIC -I. -I/home/bastien/Desktop/gridflow-0.8.0 -I -I. -DPASS2 -c base/num ber.c.fcs -o base/number.2.o
base/number.c.fcs: In static member function `static bool Op<T>::is_neutral(T, L eftRight)':
base/number.c.fcs:47: attention : « return » manquant dans une fonction devant r etourner une valeur
base/number.c.fcs: In static member function `static bool Op<T>::is_absorbent(T, LeftRight)':
base/number.c.fcs:48: attention : « return » manquant dans une fonction devant r etourner une valeur
g++ -fPIC -g -O2 -I/Applications/Pd.app/Contents/Resources/include -I/sw/include -I/usr/local/include -I/include -xc++ -fno-operator-names -fno-omit-frame-point er -I/usr/X11R6/include -I /usr/local/lib/ruby/1.8/i686-linux -mcpu=pentium -mar ch=pentium -Wall -Wno-unused -O3 -funroll-loops -fno-omit-frame-pointer -g -fPIC -I. -I/home/bastien/Desktop/gridflow-0.8.0 -I -I. -DPASS3 -c base/num ber.c.fcs -o base/number.3.o
base/number.c.fcs: In static member function `static bool Op<T>::is_neutral(T, L eftRight)':
base/number.c.fcs:47: attention : « return » manquant dans une fonction devant r etourner une valeur
base/number.c.fcs: In static member function `static bool Op<T>::is_absorbent(T, LeftRight)':
base/number.c.fcs:48: attention : « return » manquant dans une fonction devant r etourner une valeur
ruby -w base/source_filter.rb base/bitpacking.c base/bitpacking.c.fcs
g++ -fPIC -g -O2 -I/Applications/Pd.app/Contents/Resources/include -I/sw/include -I/usr/local/include -I/include -xc++ -fno-operator-names -fno-omit-frame-point er -I/usr/X11R6/include -I /usr/local/lib/ruby/1.8/i686-linux -mcpu=pentium -mar ch=pentium -Wall -Wno-unused -O3 -funroll-loops -fno-omit-frame-pointer -g -fPIC -I. -I/home/bastien/Desktop/gridflow-0.8.0 -I -I. -c base/bitpacking. c.fcs -o base/bitpacking.o
ruby -w base/source_filter.rb base/flow_objects.c base/flow_objects.c.fcs
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
base/source_filter.rb:38: warning: regexp has invalid interval
bas