[PlanetCCRMA] xoscope for planetccrma?

Michael Tiemann tiemann@redhat.com
Thu Jun 15 11:25:03 2006


If somebody is looking to package a cool application for audio use, let
me recommend xoscope.  A software oscilloscope allows one to analyze
audio signals in real time, which is useful when trying to understand
how to make a synthesizer match some target waveform.

I downloaded a tgz file from here: http://xoscope.sourceforge.net/ .  I
also found that there were two bugs that kept me from my intended goal,
so I fixed them with these patches:

[tiemann@tiemann xoscope-1.12]$ diff -U 2 oscope.c.orig oscope.c
--- oscope.c.orig       2004-11-04 14:47:33.000000000 -0500
+++ oscope.c    2006-06-12 14:02:45.000000000 -0400
@@ -686,6 +686,9 @@
   parse_args(argc, argv);
   init_widgets();
+  /* Need to run clear before init_screen because command line options
+     activiate code via the same paths as the screen UI, and if we
+     don't clear, some variables will be uninitialized!  */
+  clear();
   init_screen();
-  /* clear(); */
 
   filename = FILENAME;
[tiemann@tiemann xoscope-1.12]$ diff -U 2 gr_gtk.c.orig gr_gtk.c
--- gr_gtk.c.orig       2003-06-30 01:55:15.000000000 -0400
+++ gr_gtk.c    2006-06-11 21:28:01.000000000 -0400
@@ -543,7 +543,7 @@
 
   if (c0 == 'T') {
-    change_trigger(scope.trigch, 256 - (c1 - 'a') * 8, scope.trige);
+    change_trigger(scope.trigch, 128 - (c1 - 'a') * 8, scope.trige);
   } else if (c0 == 't') {
-    change_trigger(scope.trigch, (c1 - 'a') * 8, scope.trige);
+    change_trigger(scope.trigch, (c1 - 'a') * 8 - 128, scope.trige);
   } else {
     ch[scope.select].pos = (((char *)data)[0] == '-' ? 1 : -1)
[tiemann@tiemann xoscope-1.12]$ 

However, I could not reach the maintainer using any of the email
addresses listed in the source code or via various google searches.

Currently xoscope just builds (for me) after doing a "yum install gtk+-
devel".  YMMV as I have a somewhat randomly selected list of FC5
packages.  But for anybody capable of creating an RPM package, I'm sure
you can figure out the true requirements of this package for yum's
purposes.

There is a second limitation which exceeds my trivial understanding of
Linux APIs: how to make it work with ALSA, Jack, or anything of the
sort.  Right now it tries to gain exclusive access to the soundcard
device, which means it's great for watching traces that come in via the
audio port, but useless when you fire up jack to manage softsynth
routing.  If somebody here is a jack cracker, that would make a good
1.13.

M