Hi,
I'm trying to add a threaded timer to kluppes looperdata.c
looperdata_calc_sample_stereo function so that I can add a delayed
restart to the loop process.
Can anyone tell me why the "while" statement in the following code locks
up the audio stream for the loop it is being run on? I end up with a
buzz throughout the delay period instead of a nice quiet delay period.
#include <stdlib.h>
#include <signal.h>
#include <stdio.h>
/* This flag controls termination of the main loop. */
volatile sig_atomic_t isdelay_countdown = 1;
/* The signal handler just clears the flag and re-enables itself. */
void catch_alarm (int sig){
isdelay_countdown = 0;
signal (sig, catch_alarm);
}
vol = data->vol;
if(data->playbackdelay > 0){
/* Establish a handler for SIGALRM signals. */
signal (SIGALRM, catch_alarm);
isdelay_countdown = 1;
/* Call alarm to countdown length of
playbackdelay */
alarm ((int)data->playbackdelay);
/* Check the flag once in a while to see when to
quit. */
while(isdelay_countdown){
looperdata_set_vol(data,0);
data->isplaying = 0;
}
}
/* return to start of loop */
looperdata_set_vol(data,vol);
data->isplaying = 1;
data->playindex += data->loopstart - data->loopend;
--
Patrick Shirkey
Boost Hardware Ltd
Rubber Band Library v1.5.0 is now available.
http://breakfastquay.com/rubberband/
This release adds a key-frame mapping facility for managing variable
stretch ratios within a single offline time-stretch pass, plus a more
reliable transient detection mode for soft instruments and
band-limited transient detectors to improve performance with
compressed or lower-quality material. It is source and binary
backward compatible with v1.4, though code written for v1.5.0 may not
work with v1.4 (the new release adds one new function and one new
enum).
Chris
Apologies for cross-posting...
Dear Colleagues and fellow computer music enthusiasts,
On May 30th 1pm-7pm EST @ NYC Resistor L2Ork will hold a one-day workshop on building Linux-based laptop orchestra and unique opportunities such an ensemble brings about.
Synopsis:
L2Ork is an ultra-affordable tool for handling administrative logistics associated with starting a new Linux-based laptop orchestra using exclusively free software and cost-efficient hardware. The workshop will cover general issues in regards to starting a Linux-based laptop orchestra, as well as provide an opportunity for the workshop participants to engage in writing for L2Ork. The workshop will also cover L2Ork's latest initiative to bridge STEM (Science, Technology, Engineering and Math) and Arts in K-12 education and funding opportunities such a project may bring about.
Participants will learn about:
* administrative and logistical prerequisites for starting a Linux-based laptop orchestra
* design considerations in designing and building adequate infrastructure (speakers, soundcard, system configuration and optimization)
* streamlining Linux platform
* optimizing Pure-Data software for GUI-based networked performances
* ensuing creative opportunities of a networked laptop orchestra
* design strategies and standards developed for writing pieces for the L2Ork ensemble
* education-based opportunities attained through L2Ork's ultra-affordable infrastructure
* logistical considerations in building GUIs for a diverse group of performers with widely varying amount of musical training and experience
* wiimote strategies for an ensemble-oriented performance
* strategies for incorporating soloists into the L2Ork ensemble
Participants will be given access to:
* all L2Ork's resources, including custom code and Pure-Data abstractions designed specifically for the orchestra and its input devices
* customized Pure-Data software platform with performance, editor, and GUI enhancements
* access to software repository containing optimized Linux kernel and supporting software as well as turnkey Linux setup containing an entire hard-drive image of the L2Ork Linux system
* detailed list of parts necessary to build L2Ork-compatible ~$250 hemispherical speakers and a ~$750/seat turnkey setup including a laptop, external soundcard, wiimote & nunchuk, headset, cables and accessories, and a custom hemispherical speaker.
All participants will be also given an opportunity to interact with L2Ork members (performers and researchers alike) as well as submit their own works for programming consideration by the L2Ork ensemble.
For a more detailed overview and registration info please visit:
http://icmc-workshop-l2ork.eventbrite.com/
NB: please note that the times listed on the aforesaid site are in Pacific Time.
For additional info on L2Ork, please visit http://l2ork.music.vt.edu.
Should you happen to have any questions, suggestions or concerns, please do not hesitate to contact me.
Ivica Ico Bukvic, D.M.A.
Composition, Music Technology
Director, DISIS Interactive Sound & Intermedia Studio
Director, L2Ork Linux Laptop Orchestra
Assistant Co-Director, CCTAD
CHCI, CS, and Art (by courtesy)
Virginia Tech
Dept. of Music - 0240
Blacksburg, VA 24061
(540) 231-6139
(540) 231-5034 (fax)
ico(a)vt.edu
http://www.music.vt.edu/faculty/bukvic/
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Hi all,
For all those who could not make it to Utrecht: LAC2010 is just about to
start here.
Live A/V streams are already online - thanks to Joern -at
http://streamer.stackingdwarves.net/
Remote participants are invited to join #lac2010 on irc.freenode.net, to
be able to take part in the discussions, ask questions, and get
technical assistance in case of stream problems...
The Conference Schedule in online at:
http://lac.linuxaudio.org/2010/?page=program
ciao,
robin
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
iEYEARECAAYFAkvb2a4ACgkQeVUk8U+VK0JDcACaArfwzRM34VgBpEAqK/DjY/S8
oRYAoIu2HfLRoVAibfkw97/wn0j1Ukui
=qDnY
-----END PGP SIGNATURE-----
Hello,
I'm still trying to develop my boxy-sequencer idea. Basically, I've tried
out a couple of algorithms for window-manager-like box placement within a
grid and run into big problems.
Because I need help/advice/ideas, I'm posting here as it has some
relevance, and I've also posted to
http://stackoverflow.com/questions/2746590/fast-block-placement-algorithm-a…
A quick run down of what's happened so far, the two algorithms:
The first I directly based on Fluxbox's Row Smart placement algorithm.
Testing only the data structures, (and with gcc -O0) jack kicked out my
client after around 200 boxes were placed in a 128x128 grid. I then
counted how many times the algorithm looped through the entire list of
boxes and discovered (not in RT for this) that the 256th box placement
required around 14000 scans through the list of 255 previously placed
boxes (i've decided 256 boxes will be the worst-case-scenario).
The second algorithm consists of a freebox data structure which represents
a rectangular area of free unused space. It also forms a node in a doubly
linked list, as well as four directional links to other freeboxes touching
it (with a maximum of one freebox touching each side of a freebox)...
turns out rather complex to implement fully: 700+ loc for a partial
implementation of row-smart left-to-right top-to-bottom placement - theres
also col-smart, r-to-l, b-to-t and all combinations.
Through stackoverflow, I've come across spatial hashing.
I wondered if anyone here uses this technique for the display of data
(would scrollable window views use such a thing?). worth it for a 128x128
grid etc?
I'm just after any general thoughts/insights you might have as to what
might or might not work. Anything worth pursuing.
I'm afraid there's all sorts of little things to be considered so if you
do have something to suggest, please read the stackoverflow post first.
Cheers for any help, if possible,
James.