> > "Shared data plus locking" is a pretty crap model in general, really.
> > When people talk about all the complications that threads introduce,
> > they're really talking about this. Shared mutable state is the
> cancer of multi-threaded programming.
This should be tattooed on every newbie. ;)
Visualize your GUI running on a 64-bit iPad in Madrid, and your DSP running
on 32-bit Ubuntu in Seattle. Design your API accordingly.....
Best Regards,
Jeff
>> Hello,
>>
>> I have been coding the porting of the AMS internal modules to LV2
>> plugins using the Lv2-C++-Tools.
>>
>> The more I'm progressing, the more I am wondering if there are any
>> limitations involved in using this library, especially these days
>> where a lot of new features are being added to the Lv2 Extensions.
>
> Maybe this isn't really a technical argument, but I really don't like
> these libraries as they are because the pkg-config names are really
> generic and impossible to find, and make them seem like some kind of
> official "LV2 plugin library" or something.
>
> They really need a proper, somewhat unique, name.
>
>> For example, I am coding a plugin that output the position of the
>> mouse cursor as two control ports (handy to develop a kind of theremin
>> synth).
>> Getting the cursor position from the X Library is an expensive
>> operation, and the new Worker Extension seems perfect for the job, but
>> I can't figure out if somehow it is compatible or not with the
>> Lv2-C++-Tools.
>
> Whoah now! The worker extension is a plugin-side thing, not UI, and
> there is an EXTREMELY small chance that you actually want to be doing
> multi-threaded things in your UI code. Trust me.
Although it involves the mouse, what I'm trying to achieve is not
exactly UI related.
The plugin I have has two output called X and Y.
When the mouse is at the bottom left corner of the screen, X and Y are
equal to 0.
When it's at the top right corner, X and Y are equal to 1.
The design I had in mind was to have a thread on the side that would
query the mouse position every 25ms, especially to avoid having it in
the method processing the sound itself (this create a lot of XRuns
when I do that).
(when it's used with a touchpad, it can be used a lot like the Korg
Kaossilator, by controlling the cutoff point of a filter for example)
@Fons: I phrased it wrong the first time :) by expensive, I meant that
my poor design was creating a lot of xruns :)
>> The most obvious pros of using Lv2-C++-Tools is its simplicity.
>> Porting an AMS module takes only 20 to 30 minutes with it, while doing
>> it without the help of the library takes much more time and is way
>> more tedious.
>> (I am much more confortable coding in C++ than C, but the question
>> deserves to be asked, am I doing something wrong here that I find it
>> way more difficult to code without the help of Lv2-C++-Tools?)
>
> Personally I think a good C++ wrapper header(s) would be a good thing to
> have, but I don't really get the point of the rest of it.
>
> Also not sure the kinda crazy template hackery is worth it...
The lv2peg tool makes the development a lot faster.
>From my own experience, there is duplication of work by setting up the
input/output/controls in the ttl files, then having to set them up
again in the code of the plugin itself.
lv2peg creates the headers automatically.
But that's my 2 cents!
(I became a software developer because I'm extremely lazy, and I like
computers to do the monkey work for me!)
> Cheers,
>
> -dr
>
Aurélien
>On Sat, Mar 24, 2012 at 12:52 PM, Fons Adriaensen <fons at linuxaudio.org> wrote:
>> On Sat, Mar 24, 2012 at 06:50:10PM +0000, Aurélien Leblond wrote:
>>
>>> @Fons: I phrased it wrong the first time :) by expensive, I meant that
>>> my poor design was creating a lot of xruns :)
>>
>> As Dave has already pointer out, a plugin - at least the DSP
>> part of it - is not the proper place to do anything X.
>>
>> It would probably fairly easy for the host to provide X,Y on
>> two control ports, just as it provides the Jack ports, MIDI
>> interfaces etc.
> Just trying to be the voice of reason here... There are plenty of
> tools out there to convert joystick/mouse/whatever position into
> sensible MIDI messages. I've even written a few myself:
>
> http://lsmi-all.sf.net
>
> IMHO, one should never need to deal with input devices in a plugin.
> And, yes, the host could also provide this information, but I don't
> think it's the hosts responsibility to be providing the plugin any
> information that the user didn't explicitly request be delivered to
> the plugin (e.g. by clicking on an XY Pad control and moving the
> cursor position).
>
> Anyway, if you ever want to be able to record and playback this
> theremin sound, MIDI is the way to go.
That actually makes a lot of sense.
I'll remove the mouse plugin from the AVW ones so.
Thanks for the help!
Aurélien
> Lignux systems only have write access to their home directories, which
> the system does not run software from by default.
So Malware can trash your personal documents and steal your identity.....but
the kernel is safe?
> Windows isn't a victim of its own popularity, it's a victim of being
> crap.
Yeah, While the average programmer makes 20 errors per 1000 lines-of-code.
Linux programmers, having being on a mission form god, NEVER make such
mistakes, therefore Linux is has no exploitable flaws.
;)
Seriously though, this is *SO* off topic.
Best Regards,
Jeff
> Message: 3
> Date: Fri, 23 Mar 2012 20:15:23 -0400
> From: David Robillard <d(a)drobilla.net>
> Subject: Re: [LAD] Linux Malware
> To: Louigi Verona <louigi.verona(a)gmail.com>
> Cc: Linux Audio Developers <linux-audio-dev(a)lists.linuxaudio.org>
> Message-ID: <1332548123.6586.15.camel(a)verne.drobilla.net>
> Content-Type: text/plain; charset="UTF-8"
>
> On Thu, 2012-03-22 at 18:17 +0300, Louigi Verona wrote:
> > Hey guys!
> >
> > This is an Offtopic question, really, but I wanted to ask people I
> > know and people who are developers - what are the reasons there are
> > (almost) no viruses on Linux?
> >
> > The typical argument is that there are not too much users.
>
> Maybe "typical" in Redmond... the typical sane argument is that users
> on
> Lignux systems only have write access to their home directories, which
> the system does not run software from by default.
>
> Windows, on the other hand, traditionally had users running with
> complete access to the system. Add to the mix notoriously flaky
> low-quality code, slow moving development, and a core system built from
> numerous layers of piled legacy crap, and it'd be shocking if exploits
> *didn't* run rampant.
>
> Anyone claiming that any system would have been as badly affected in
> Windows' situation has no idea what they're talking about. The system
> essentially didn't have any form of security whatsoever. The security
> model wasn't flawed, it *wasn't there*. You didn't have to exploit the
> system to get viruses and malware on it, you just had to get the user
> to
> run something.
>
> Windows isn't a victim of its own popularity, it's a victim of being
> crap.
>
> -dr
>
Hey guys!
This is an Offtopic question, really, but I wanted to ask people I know and
people who are developers - what are the reasons there are (almost) no
viruses on Linux?
The typical argument is that there are not too much users.
I generally do not agree with this argument and point to architectural
reasons, number of distros, community reasons and the openness of the
platform. Additionally, I even argue that the more users, the faster news
about a potential risk spreads.
However, several of my friends and colleagues at work who are long time
Linux users have argued that in the end it is still the number of users,
since no architecture is perfect and virus writers will find a way to
penetrate the system and target all known distros.
I am wondering if I am missing something. Does anyone on this list thinks
that number of users does play more than a minor role?
--
Louigi Verona
http://www.louigiverona.ru/
Hello,
I have been coding the porting of the AMS internal modules to LV2
plugins using the Lv2-C++-Tools.
The more I'm progressing, the more I am wondering if there are any
limitations involved in using this library, especially these days
where a lot of new features are being added to the Lv2 Extensions.
For example, I am coding a plugin that output the position of the
mouse cursor as two control ports (handy to develop a kind of theremin
synth).
Getting the cursor position from the X Library is an expensive
operation, and the new Worker Extension seems perfect for the job, but
I can't figure out if somehow it is compatible or not with the
Lv2-C++-Tools.
The most obvious pros of using Lv2-C++-Tools is its simplicity.
Porting an AMS module takes only 20 to 30 minutes with it, while doing
it without the help of the library takes much more time and is way
more tedious.
(I am much more confortable coding in C++ than C, but the question
deserves to be asked, am I doing something wrong here that I find it
way more difficult to code without the help of Lv2-C++-Tools?)
So I am putting the question to the community: what path you would you
advise to follow? With or Without Lv2-C++-Tools?
Hi all,
I would like to announce the release of aj-snapshot-0.9.6
aj-snapshot is a command line utility to store/restore
ALSA and/or JACK connections to/from an XML file.
The most important change in this release is that aj-snapshot
behaves differently in daemon mode. In the previous version
ALSA connections were restored continually, and JACK connections
whenever the connection graph had changed.
In this version, aj-snapshot will restore connections once when
it is started, and after that when new ports are registered in
ALSA or JACK. You can specify (in milliseconds) how often aj-snapshot
will poll for newly registered ports (-p --poll ms). The default is 1 second.
This means that you have a lot more freedom to change the connections
while the daemon is running, and gives you the opportunity to save
(and maybe reload) a new connection state.
Other changes include:
- added manual file
- rewrite of aj-snapshot.c to make it more readable and maintainable,
and to have less code repetition.
As always, there will be bugs, and I would be very
grateful if you would report them on the sourceforge site.
direct download:
http://sourceforge.net/projects/aj-snapshot/files/aj-snapshot-0.9.5.tar.bz2…
aj-snapshot website:
http://aj-snapshot.sourceforge.net/
bug tracker:
http://sourceforge.net/tracker/?group_id=311291&atid=1310488
feature requests:
http://sourceforge.net/tracker/?group_id=311291&atid=1310491
to clone the git repository:
git clone git://gitorious.org/aj-snapshot/aj-snapshot.git
Hope you enjoy,
lievenmoors
Guitarix release guitarix2-0.22beta1
The next shiny new Guitarix version! Guitarix is a tube amplifier
simulation for jack, with effect modules and an additional stereo
effect chain.
Download from http://sourceforge.net/projects/guitarix/
You can find some screenshots and explanations of the new version in
http://sourceforge.net/apps/mediawiki/guitarix/index.php?title=EnhancedUI
Many things changed in the user interface. Now you can move rack units
by drag and drop (reflecting the signal flow), store individual
settings for each rack unit and use preset banks with several settings
for the whole rack. It's easy to take our "factory presets" and make
your own customized bank, or make your own from scratch and share it
on the Guitarix forum.
There is a new "live play mode" with only the info you need on stage
(it's fullscreen, no other penguins around), and a preset picking mode
with a foot switch (midi or usb, or if you don't have one even the
space bar of your keyboard) and the strings of your guitar to switch
settings.
Rack units are now put into categories, and two new ones are a noise
gate for high noise levels and a univibe emulation. Thanks go to the
developer of abGate and Ryan Billing from Rakarrack who helped
porting his univibe code and made the inclusion of it possible.
This is already too long, please check it out and give feedback if you
find a problem, this version is still beta.
Please refer to our project page for more information:
http://guitarix.sourceforge.net/
download site:
http://sourceforge.net/projects/guitarix/
please report bugs and suggestions in our forum:
http://sourceforge.net/apps/phpbb/guitarix/
here you can find a couple of examples produced by guitarix users:
http://sourceforge.net/apps/phpbb/guitarix/viewtopic.php?f=11&t=83
have fun
_________________________________________________________________________
For extra Impulse Responses, guitarix uses the zita-convolver library,
and, for resampling we use zita-resampler, both written by Fons
Adriaensen.
http://kokkinizita.linuxaudio.org/linuxaudio/index.html
We use the marvellous faust compiler to build the amp and most effects
and will say thanks to
: Julius Smith
http://ccrma.stanford.edu/realsimple/faust/
: Albert Graef
http://q-lang.sourceforge.net/examples.html#Faust
: Yann Orlary
http://faust.grame.fr/
________________________________________________________________________
guitarix development team
Updates available now at
<http://kokkinizita.linuxaudio.org/linuxaudio/downloads>
zita-alsa-pcmi-0.2.0
* Now includes some dirty hacks (implemented via the debug
options parameter so they don't clutter the API) to support
the -L option of
zita-ajbridge-0.2.2
* Fixed the bug that made it fail with Jack period sizes
>= 1024 (filter coefficients going out of range).
* Added some hacks, activiated by the -L option, to make
it work with ALSA's loop devices.
The latter requires some clarification.
The two apps provided by zita-ajbridge were never intented to be
used with the ALSA loop devices. They were developed to provide
additional and full quality capture or playback channels to Jack,
using a real soundcard.
Yet most people trying the first release used them with the
loop devices, to provide a Jack interface to some misbehaving
apps such as flash player or skype. Using the loop device is
required since those apps refuse to work with ALSA's Jack
plugin. It's a dirty hack using an unwanted resampling step,
but it seems there is no working alternative.
The ALSA loop devices presents themselves as hw: devices, but
they don't behave like a real one:
* Timing of period wakeups is quantised to a much too high
value, and produces lots of jitter, worse than even the
most crappy USB interface. It also makes using the device
with small period sizes impossible, as wakeups occur when
it's almost too late. The next cycle will xrun in that case.
* The loop devices have 32 channels. They allow to be opened
with a different channel count at both ends, but then make
a mess of it. For example mplayer's two channels will be
spread out over the available 32, making it run at 16 times
normal speed.
To run zita-a2j or zita-j2a with the ALSA loop device:
* Use the -L option. This forces two things: the sample format
will be 16-bit, and the device is opened in 2-channel mode.
This makes it usable to apps at the other end which can't deal
with floats or more than 2 channels.
Note that just using -c 2 (which is also the default) still
opens the ALSA device with all its channels, as must be done
on a real hw: device, so that won't work.
* Use at least -p 256 -n 3, or -p 512 or higher (on the ALSA
device - Jack's parameters don't matter).
Ciao,
--
FA
A world of exhaustive, reliable metadata would be an utopia.
It's also a pipe-dream, founded on self-delusion, nerd hubris
and hysterically inflated market opportunities. (Cory Doctorow)