[linux-audio-user] Re: FreeWheeling live looper prerelease

JP Mercury swirlee at stickist.com
Wed Jan 5 00:33:26 EST 2005


Folks,

Thank you, Philippe, Wolfgang, Spencer, for your kind words.

> it works great for me with my TB303. I find this soft amazing and 
> very intuitive, already adopted and will stand a big place in my 
> music toolset :)
> 
> Philippe

When you have a chance, send me some music. I like hearing what people make
with Linux.

> jp, the energy and thought you have put into this are truly 
> glamorous. Much in the same way that Fons Adriaensen's unique work 
> (http://users.skynet.be/solaris/linuxaudio) inspires gleeful things 
> you've added a beautiful instrument to the band. Oh, what am I 
> telling you, you know this.

Yes, I played pipe organ for my family on New Years with Fons' amazing Aeolus.
What an amazing instrument that is.
 
Another round of questions-

> > Not sure what you mean by trim loops. Do you mean how to sync up many
> > loops together?
> 
> Yes. I wondered if you could get rid of parts of a loop or change 
> start/end of a loop -- in order to sync up. I read the "loops with 
> different lengths can be captured and triggered at once" on your 
> website so I fiddled with "pulses" but got nowhere. 
> fweelin_core_dsp.cc says there is a metronome. How do you get to 
> hear it?

OK, here's the scoop. Record a loop. Press F1 and a new pulse is created based
on that loop. The timing and downbeat of the pulse, and all subsequently
recorded loops, will match the original loop. So you'll want to press F1 after
you record a loop that has an important beat. I often start with drifting
loops and then when the timing comes to me I create a pulse.

Now that you have a pulse, you should see a piegraph '1' on the upper right
part of the screen. If you record another loop, you'll see that the timing
fits into the pulse. Your record will start at the nearest downbeat and will
last for a whole number of pulses. Currently, you can't subdivide pulses, so
you'll have to record at multiple lengths of your original loop.

> fweelin_core_dsp.cc says there is a metronome. How do you get to 
> hear it?

It's currently undocumented and unconfigurable. Record a pulse and press F11.

> > There is no way to pan loops right now. Freewheeling currently runs
> > all loops mono. I recognize the limitation- it's a good idea for a
> > future release.
> 
> There's more to panning than balancing between 2 channels though. 
> There might be n jack channels to pan to.

Yup. Multi channel loops and outputs are on the table for an upcoming
release-- the framework is there but I'd like to collect more user feedback first.

> > > MEM: HiPri Thread 0
> > > fweelin: pthread_mutex_lock.c:78: __pthread_mutex_lock: Assertion
> > > `mutex->__data.__owner == 0' failed. Aborted
> 
> owner "0" would be root so maybe Spencer runs jackd as root and 
> fweelin can't connect being run with Spencer's user rights. If so he 
> would have to run fweelin as root too -- which is bad -- or go 
> 2.6/lsm or 
> 2.4/capabilities/jackstart respectively.
> 
> Wolfgang

Spencer writes-
> I'm running 2.6 with the realtime LSM module, with my user in the
> audio group. I'm running qjackconnect and fweelin both with my
> non-root user. If I remember my c++, an assertion intentionally
> causes an error in the program when a condition isn't met, right?
> So maybe the program thinks I should be root? Thanks for the response.
> 
> -spencer

That is baffling. It seems to be when initializing the memory allocation
thread mutex:

  pthread_mutex_init(&inst->mgr_thread_lock,0);
  pthread_cond_init(&inst->mgr_go,0);
  pthread_mutex_lock(&inst->mgr_thread_lock);

Though I confess that I usually run as root, I tested fweelin as non-root and
it worked on this machine.

Spencer, I know it's horrifying, but have you tried running as root?

One other thing you might try, go to fweelin_core.cc and find:

  // Memory manager
  mmg = new MemoryManager();

Add directly after:

  sleep(5);

It should pause noticeably when loading, but if this fixes the error, then my
guess is it's a threading issue- are you running an SMP machine?

Good luck!

--

Michal-
> ok, now I'm getting this:
> 
> OKIE DOKIE, KIDDO!
> VIDEO: SetVideoMode: Using 16-bit color
> Xlib: unexpected async reply (sequence 0x36)!
> 
> and nothing happens afterwards.  On a couple of tries am empty window
> actually poped up but that was it.
> 
> ./MiS

This seems to be a video threading issue, and I've already had some headaches
with threading in my startup and exit code. Here are some suggestions-- go to
src/fweelin_videoio.cc and find:

  videoflags = SDL_HWSURFACE;

replace with:
 
  videoflags = SDL_SWSURFACE;

Also in fweelin_videoio.cc, try replacing:

  inst->SetVideoMode(0);

with:

  sleep(1);
  inst->SetVideoMode(0);
  sleep(1);

Good luck!

Thanks for all your feedback,
-JP Mercury




More information about the Linux-audio-user mailing list