Re: [LAD] Conciderations of Design

2011-11-13 Thread Harry van Haaren
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

2011-11-13 Thread Florian Paul Schmidt

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

2011-11-13 Thread gene heskett
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

2011-11-13 Thread Florian Paul Schmidt

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?

2011-11-13 Thread Iain Duncan
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?

2011-11-13 Thread Iain Duncan
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?

2011-11-13 Thread David Robillard
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?

2011-11-13 Thread Patrick Shirkey

 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?

2011-11-13 Thread Iain Duncan
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

2011-11-13 Thread gene heskett
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?

2011-11-13 Thread Iain Duncan
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?

2011-11-13 Thread Iain Duncan
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