Re: [LAD] Conciderations of Design
David: Thanks for such insight in-depth response. The points you've made are being taking into concideration at the moment. Polling is indeed probably the term I was looking for, but didn't come to mind. I suppose I should have shed light on the use-case a touch more in my initial question: Its for a live program where all processing is done in blocks. So no need for sample accuracy or any of that, polling is the winner :D Re: Connection logic... I've not yet decided how to approach this. Currently state is handled in each class, but this provides bigger problems: every parameter change needs to be passed to that class, and the way I have that implemented currently means about 6 function calls, and lots of array access... hogs up JACK cpu time and is inefficient. Thorsten: Intresting read, I don't think FRP is a route I'm going to take at the moment, as it would null all work I have done so far... but it did get me thinking in different ways :) Jeff: Nice balance between performance flexibility. As prev noted, its a block-processing app, so I won't implement the audio rate controls. Never the less, thanks for the tip! ___ Linux-audio-dev mailing list Linux-audio-dev@lists.linuxaudio.org http://lists.linuxaudio.org/listinfo/linux-audio-dev
Re: [LAD] [ANN] ALPHA: jiss - Jack Interactice Sequencing Software
On 11/14/2011 04:21 AM, Florian Paul Schmidt wrote: http://shirkhan.dyndns.org/~tapas/stella.ogg sorry for clipping in recording :( turn your speakers down.. ___ Linux-audio-dev mailing list Linux-audio-dev@lists.linuxaudio.org http://lists.linuxaudio.org/listinfo/linux-audio-dev
Re: [LAD] [ANN] ALPHA: jiss - Jack Interactice Sequencing Software
On Sunday, November 13, 2011 10:46:57 PM Florian Paul Schmidt did opine: Played with the pclos default .ogg player. http://shirkhan.dyndns.org/~tapas/stella.ogg Nice clean sounding synth, but as an old BC engineer, it sounds like there is a DBX-165 compressor that is badly adjusted in the output path. The whole thing is breathing about 30db with the kicker drum, and gain recovery is about half the drum period. If you wanted that effect, you got it in spades, but to these ears the compression is way overdone and I think you will find it generates ear fatigue in the average listener quickly. I don't enjoy raining on anybodies parade that obviously has a lot of work in creating a creative tool like this is intended to be, so please take this as constructively as possible. (wicked.lua code here with some omission of some chords at the start and some remarks in comments added): -- some stuff :D require jiss require jissing -- create engine in stopped state e = jiss.engine() -- setup some state that the sequences later use -- e:run can only be used when the engine is stopped.. -- as this is executed in non-RT context it's ok to -- create some variables and tables here.. e:run([[ bar = 0; min = 20; max = 80; stella = { range(min, 80, min7b5(E(4))), range(min, 80, min7b5(E(4))), -- cut away quite a bit here (see wicked.lua in git clone) :D range(min, 80, maj7s11(B(4)-1)), range(min, 80, maj7s11(B(4)-1)) } ]]) -- this sequence can control the others since it's processed before -- the others in the engine -- events string is newline sensitive. in this case the events -- on consecutive lines are spaced 1 second apart.. -- also: loop back to 0 at time t = 8 sec tune = seq(e, tune, loop_events(8, events_string(1, [[ drums1:relocate(0.0); drums1:start_(); notes:relocate(0.0); notes:start_() drums1:stop_(); ]]))) -- manually start this sequence and add to the engine tune:start() -- note that a copy is appended to the engine e:append(tune) -- a sequence that controls the global variable bar to advance through the song play(e, seq(e, control, loop_events(1, events_string(1, [[ bar = bar + 1; bar = (bar % #stella); ]] -- events at fixed times. loop at t = 0.75 sec play(e, seq(e, notes, loop_events(0.75, { { 0.125, [[ for i = 1,4 do note_on(0, 24 + stella[bar][math.random(#stella[bar])], 30 + math.random()*64) end ]]}, { 0.5, [[ for i = 1,2 do note_on(0, 24 + stella[bar][math.random(#stella[bar])], 10 + math.random()*34) end ]] } }))) -- a drum pattern drums = [[ note_on(1, 64, 127); note_on(2, 64, 127) note_on(2, 64, 127) note_on(2, 64, math.random(127)) note_on(2, 64, math.random(127)) note_on(2, 42, 110) note_on(2, 64, 127) note_on(2, 64, math.random(127)) note_on(1, 64, 127); note_on(2, 64, 127) note_on(2, 64, math.random(127)) ]] play(e, seq(e, drums1, loop_events(1, events_string(0.125/2, drums -- connect all sequence outputs to jass:in connect(e,jass:in) -- run the whole thing e:start() -- wait for the user to press enter io.stdin:read'*l' Have fun, Flo ___ Linux-audio-dev mailing list Linux-audio-dev@lists.linuxaudio.org http://lists.linuxaudio.org/listinfo/linux-audio-dev Cheers, Gene -- There are four boxes to be used in defense of liberty: soap, ballot, jury, and ammo. Please use in that order. -Ed Howdershelt (Author) My web page: http://coyoteden.dyndns-free.com:85/gene Someday somebody has got to decide whether the typewriter is the machine, or the person who operates it. ___ Linux-audio-dev mailing list Linux-audio-dev@lists.linuxaudio.org http://lists.linuxaudio.org/listinfo/linux-audio-dev
Re: [LAD] [ANN] ALPHA: jiss - Jack Interactice Sequencing Software
On 11/14/2011 05:01 AM, gene heskett wrote: On Sunday, November 13, 2011 10:46:57 PM Florian Paul Schmidt did opine: Played with the pclos default .ogg player. http://shirkhan.dyndns.org/~tapas/stella.ogg Nice clean sounding synth, but as an old BC engineer, it sounds like there is a DBX-165 compressor that is badly adjusted in the output path. The whole thing is breathing about 30db with the kicker drum, and gain recovery is about half the drum period. If you wanted that effect, you got it in spades, but to these ears the compression is way overdone and I think you will find it generates ear fatigue in the average listener quickly. I don't enjoy raining on anybodies parade that obviously has a lot of work in creating a creative tool like this is intended to be, so please take this as constructively as possible. Yeah, the compressor is added 'cause I happen to like that 30db breathing sound ;D The wicked.lua jiss-script itself only sends the midi notes out (in my case to jass which then goes through jack-rack with reverb and compressor) It's maybe not the best example to demonstrate jiss, cause it might put many listeners off (especially with the clipping, too ;D). I'll upload a cleaner rendition sometime tomorrow.. Thanks for the comment.. Flo (wicked.lua code here with some omission of some chords at the start and some remarks in comments added): -- some stuff :D require jiss require jissing -- create engine in stopped state e = jiss.engine() -- setup some state that the sequences later use -- e:run can only be used when the engine is stopped.. -- as this is executed in non-RT context it's ok to -- create some variables and tables here.. e:run([[ bar = 0; min = 20; max = 80; stella = { range(min, 80, min7b5(E(4))), range(min, 80, min7b5(E(4))), -- cut away quite a bit here (see wicked.lua in git clone) :D range(min, 80, maj7s11(B(4)-1)), range(min, 80, maj7s11(B(4)-1)) } ]]) -- this sequence can control the others since it's processed before -- the others in the engine -- events string is newline sensitive. in this case the events -- on consecutive lines are spaced 1 second apart.. -- also: loop back to 0 at time t = 8 sec tune = seq(e, tune, loop_events(8, events_string(1, [[ drums1:relocate(0.0); drums1:start_(); notes:relocate(0.0); notes:start_() drums1:stop_(); ]]))) -- manually start this sequence and add to the engine tune:start() -- note that a copy is appended to the engine e:append(tune) -- a sequence that controls the global variable bar to advance through the song play(e, seq(e, control, loop_events(1, events_string(1, [[ bar = bar + 1; bar = (bar % #stella); ]] -- events at fixed times. loop at t = 0.75 sec play(e, seq(e, notes, loop_events(0.75, { { 0.125, [[ for i = 1,4 do note_on(0, 24 + stella[bar][math.random(#stella[bar])], 30 + math.random()*64) end ]]}, { 0.5, [[ for i = 1,2 do note_on(0, 24 + stella[bar][math.random(#stella[bar])], 10 + math.random()*34) end ]] } }))) -- a drum pattern drums = [[ note_on(1, 64, 127); note_on(2, 64, 127) note_on(2, 64, 127) note_on(2, 64, math.random(127)) note_on(2, 64, math.random(127)) note_on(2, 42, 110) note_on(2, 64, 127) note_on(2, 64, math.random(127)) note_on(1, 64, 127); note_on(2, 64, 127) note_on(2, 64, math.random(127)) ]] play(e, seq(e, drums1, loop_events(1, events_string(0.125/2, drums -- connect all sequence outputs to jass:in connect(e,jass:in) -- run the whole thing e:start() -- wait for the user to press enter io.stdin:read'*l' Have fun, Flo ___ Linux-audio-dev mailing list Linux-audio-dev@lists.linuxaudio.org http://lists.linuxaudio.org/listinfo/linux-audio-dev Cheers, Gene ___ Linux-audio-dev mailing list Linux-audio-dev@lists.linuxaudio.org http://lists.linuxaudio.org/listinfo/linux-audio-dev
[LAD] platform choices, jack for sequencing?
Thanks everyone for all the help on my architecture questions. It seems like a lot of the best practise functionality has tools/components for it already in Jack. I *was* planning on using rtaudio in order to be cross platform, but if it's a lot easier to get things done in Jack, i could live with being limited to linux and OS X. Just wondered if I could poll opinions, for a real time step sequencer meant to do super tight timing and by syncable with other apps, is Jack going to be a lot easier to work with? Should I just lay into the jack tutorials? And is it straightforward to use the perry cook stk in a jack app? thanks everyone iain ___ Linux-audio-dev mailing list Linux-audio-dev@lists.linuxaudio.org http://lists.linuxaudio.org/listinfo/linux-audio-dev
Re: [LAD] platform choices, jack for sequencing?
btw, the tools/components I was referring to are the jack ring buffer and jack clock functions mentioned by some folks here. The project is meant for live shows, so stable timing, low latency, and no glitching out is essential. More essential than anything really. =) thanks Iain ___ Linux-audio-dev mailing list Linux-audio-dev@lists.linuxaudio.org http://lists.linuxaudio.org/listinfo/linux-audio-dev
Re: [LAD] platform choices, jack for sequencing?
On Sun, 2011-11-13 at 20:07 -0800, Iain Duncan wrote: Thanks everyone for all the help on my architecture questions. It seems like a lot of the best practise functionality has tools/components for it already in Jack. I *was* planning on using rtaudio in order to be cross platform, but if it's a lot easier to get things done in Jack, i could live with being limited to linux and OS X. Jack MIDI should (at least in theory) be portable to any platform where Jack runs. Just wondered if I could poll opinions, for a real time step sequencer meant to do super tight timing and by syncable with other apps, is Jack going to be a lot easier to work with? Should I just lay into the jack tutorials? Definitely yes. Dramatically easier, and (AFAIK) the *only* API that will give you jitter-free sample accurate MIDI between applications. -dr ___ Linux-audio-dev mailing list Linux-audio-dev@lists.linuxaudio.org http://lists.linuxaudio.org/listinfo/linux-audio-dev
Re: [LAD] platform choices, jack for sequencing?
Thanks everyone for all the help on my architecture questions. It seems like a lot of the best practise functionality has tools/components for it already in Jack. I *was* planning on using rtaudio in order to be cross platform, but if it's a lot easier to get things done in Jack, i could live with being limited to linux and OS X. Jack2 runs on windows too. Just that it hasn't seen as much adoption as most of us round here refuse to work with MS tech unless paid a lot of money to do so. Some of us just refuse outright. But Stephan and his team have put in a lot of effort to make it work on MS platforms. Just wondered if I could poll opinions, for a real time step sequencer meant to do super tight timing and by syncable with other apps, is Jack going to be a lot easier to work with? Should I just lay into the jack tutorials? It doesn't take long to get a jack app up and running. Its the front end that will consume the vast majority of your time. And is it straightforward to use the perry cook stk in a jack app? https://ccrma.stanford.edu/software/stk/usage.html Several options can be supplied to the configure script to customize the build behavior: --disable-realtime to only compile generic non-realtime classes --enable-debug to enable various debug output --with-alsa to choose native ALSA API support (default, linux only) --with-oss to choose native OSS audio API support (linux only, no native OSS MIDI support) --with-jack to choose native JACK API support (linux and Macintosh OS-X) --with-core to choose Core Audio API support (Macintosh OS-X) thanks everyone iain ___ Linux-audio-dev mailing list Linux-audio-dev@lists.linuxaudio.org http://lists.linuxaudio.org/listinfo/linux-audio-dev -- Patrick Shirkey Boost Hardware Ltd ___ Linux-audio-dev mailing list Linux-audio-dev@lists.linuxaudio.org http://lists.linuxaudio.org/listinfo/linux-audio-dev
Re: [LAD] platform choices, jack for sequencing?
Thanks for the opinions! iain On Sun, Nov 13, 2011 at 8:20 PM, Patrick Shirkey pshir...@boosthardware.com wrote: Thanks everyone for all the help on my architecture questions. It seems like a lot of the best practise functionality has tools/components for it already in Jack. I *was* planning on using rtaudio in order to be cross platform, but if it's a lot easier to get things done in Jack, i could live with being limited to linux and OS X. Jack2 runs on windows too. Just that it hasn't seen as much adoption as most of us round here refuse to work with MS tech unless paid a lot of money to do so. Some of us just refuse outright. But Stephan and his team have put in a lot of effort to make it work on MS platforms. Just wondered if I could poll opinions, for a real time step sequencer meant to do super tight timing and by syncable with other apps, is Jack going to be a lot easier to work with? Should I just lay into the jack tutorials? It doesn't take long to get a jack app up and running. Its the front end that will consume the vast majority of your time. And is it straightforward to use the perry cook stk in a jack app? https://ccrma.stanford.edu/software/stk/usage.html Several options can be supplied to the configure script to customize the build behavior: --disable-realtime to only compile generic non-realtime classes --enable-debug to enable various debug output --with-alsa to choose native ALSA API support (default, linux only) --with-oss to choose native OSS audio API support (linux only, no native OSS MIDI support) --with-jack to choose native JACK API support (linux and Macintosh OS-X) --with-core to choose Core Audio API support (Macintosh OS-X) thanks everyone iain ___ Linux-audio-dev mailing list Linux-audio-dev@lists.linuxaudio.org http://lists.linuxaudio.org/listinfo/linux-audio-dev -- Patrick Shirkey Boost Hardware Ltd ___ Linux-audio-dev mailing list Linux-audio-dev@lists.linuxaudio.org http://lists.linuxaudio.org/listinfo/linux-audio-dev
Re: [LAD] [ANN] ALPHA: jiss - Jack Interactice Sequencing Software
On Sunday, November 13, 2011 11:11:06 PM Florian Paul Schmidt did opine: On 11/14/2011 05:01 AM, gene heskett wrote: On Sunday, November 13, 2011 10:46:57 PM Florian Paul Schmidt did opine: Played with the pclos default .ogg player. http://shirkhan.dyndns.org/~tapas/stella.ogg Nice clean sounding synth, but as an old BC engineer, it sounds like there is a DBX-165 compressor that is badly adjusted in the output path. The whole thing is breathing about 30db with the kicker drum, and gain recovery is about half the drum period. If you wanted that effect, you got it in spades, but to these ears the compression is way overdone and I think you will find it generates ear fatigue in the average listener quickly. I don't enjoy raining on anybodies parade that obviously has a lot of work in creating a creative tool like this is intended to be, so please take this as constructively as possible. Yeah, the compressor is added 'cause I happen to like that 30db breathing sound ;D The wicked.lua jiss-script itself only sends the midi notes out (in my case to jass which then goes through jack-rack with reverb and compressor) It's maybe not the best example to demonstrate jiss, cause it might put many listeners off (especially with the clipping, too ;D). I'll upload a cleaner rendition sometime tomorrow.. Thanks for the comment.. I almost didn't send that, but the sound reminded me of the sound I inherited when I became the CE at WDTV-5, back in '84, here in West Virginia. That put me off so much I told the GM I hadn't heard so much heavy breathing since shortly after lights out last night, when I asked for permission to replace a brand new piece of gear with something I knew would do the job and be essentially transparent to the listeners, an old CBS Labs AudiMax, followed by, on the other end of the studio-transmitter microwave path, an equally ancient CBS Labs FM Volumax. They worked, but it was extremely rare and took a trained ear, to detect that they were working. As a C.E.T., I had fun keeping them running, first replacing all the small electrolytics used for coupling capacitors with paper/mylar, which put a stop to the twice annual rebuild by shotgunning all the caps, then eventually the gain controlling tetrode nuvistor vacuum tube faded away (they are made of pure unobtainium now) and I had to adapt a dual gate Mosfet transistor to handle that. But those 2 processors made it to about 50 years old by the time we switched to all digital in mid 2008. Now I'm going to wander off topic, sort of. Frankly, broadcasters sorely need such a characteristic device in the digital path right now, and if some enterprising coder were to write that code to interface with the usual EIA digital audio format, and build it into a black box with the usual connectors on it, he/she would find themselves busier than that famous cat on the equally famous tin roof until they had filled up the market, which is, here in the states, 1500 to 2000 tv stations. Multiply that by the number of channels the digital broadcaster is using today, which for us is 4, and you'll have to hire help building them for 2 or 3 years. I don't know if there is all that much info out on the net on how the Audimax worked, but surely any patents have long since expired. In the maintenance manual there was a rather complex test method to determine if it was working correctly, but its only controls were input and output gain T-pads so one could establish the correct internal levels for optimum operation. The Volumax is much easier to explain as it was designed to prevent HF over modulation only, caused by the 17db of pre-emphasis the 75 microsecond boost caused, allowing full mid-range levels, but rolling off the high end to prevent the HF stuff from exceeding the allowed occupied bandwidth, +-75khz for FM's and +-25khz for tv. Its gain control response was sub millisecond, both ways. But in digital, no such control is needed, but we surely, sorely need the equ of the Audimax. In fact, that is one of the reasons I have remained subscribed to this list. If somebody does this, I will be in the GM's office asking for a P.O. for 4 of them tomorrow morning. So please somebody do it before I fall over. Now 77 YO diabetic, retired (insert laugh track here, they never really let you) for 9 years, I still appear to have that sort of clout on the 2nd floor. Thanks Flo. [...] Cheers, Gene -- There are four boxes to be used in defense of liberty: soap, ballot, jury, and ammo. Please use in that order. -Ed Howdershelt (Author) My web page: http://coyoteden.dyndns-free.com:85/gene Everyone has a purpose in life. Perhaps yours is watching television. - David Letterman ___ Linux-audio-dev mailing list Linux-audio-dev@lists.linuxaudio.org http://lists.linuxaudio.org/listinfo/linux-audio-dev
[LAD] tutorial or example for using jack ring buffer between threads?
Can anyone point me at what they consider the best thing to look at for an introduction to communication between threads in a jack app using the ringbuffer? I found some, but as docs appear a bit scattered, wondered if there was a known best-first-reference type thing. thanks iain ___ Linux-audio-dev mailing list Linux-audio-dev@lists.linuxaudio.org http://lists.linuxaudio.org/listinfo/linux-audio-dev
[LAD] RAUL?
I found it on Dave's site, but other than that, couldn't find find much mention of it. Do many people use it? Would it be wise to dig into RAUL for writing a real time jack app? Dave, any comments on it? http://drobilla.net/software/raul/ thanks iain ___ Linux-audio-dev mailing list Linux-audio-dev@lists.linuxaudio.org http://lists.linuxaudio.org/listinfo/linux-audio-dev