Lets say we have a synth and a sequencer connected via jack.
The sequencer spits out a command timed at position 4 (i'm deliberately keeping
the numbers generic), and the synth then knows that on the 4th sample it has to
do whatever the command says - again, I know it's a bit more 'interesting' than
that. All fine and dandy, the synth bundles up it's data an chucks the buffer
full of audio to jack.
But, what happens if the synth was registered with jack before the sequencer?
Presumably it is now going to get it's MIDI data *after* it has already
processed that callback.
Say now, I have this brilliant counter melody idea - well, it could happen :)
However, I don't have a keyboard with me. Still I can just fire up jack
keyboard and link it to the sequencer. Only now. the sequencer is pushing out
its MIDI data before it gets anything from the keyboard.
I know this sounds contrived but I have frequently done exactly this, using
alsa MIDI, and I confess I've no idea what actually happens in that situation
either!
--
Will J Godfrey
http://www.musically.me.uk
Say you have a poem and I have a tune.
Exchange them and we can both have a poem, a tune, and a song.
Hi Linux Audio Developers,
TL;DR; Discussing experience driven design for linux audio.
I'd like to discuss the "age of experiences". Allow me 10 minutes of
your time, to watch a video by Aral Balkan talk about development of
technology, FLOSS, design, and the future.
To start, please watch the following clip: I've skipped into the video
to get the section I think is most interesting to discuss on this
list:
https://www.youtube.com/watch?feature=player_detailpage&v=ldhHkVjLe7A#t=1625
To bring this discussion to a productive start, I'd like to concider
the tools we have available as the linux-audio community: they
certainly have features, and empower the user to own thier tools, and
the data used with those tools.
Should we improve experience for users?
Should we design "experience driven open" software?
Should we forward the UX of Linux Audio to the "age of experiences"?
What do users know, that developers might not?
What is it that needs to change? Are there even issues here?
If so, how do we (the community as a whole) try to solve this?
I hope this is a productive and inclusive discussion, and politely
request remaining on topic ;)
To a fruitful discussion, -Harry
--
www.openavproductions.com
Hi,
When replying, please be careful to reply to the list, as well as the
person: otherwise 1/2 a conversation gets lost ;) I've included
linux-audio-dev(a)lists.linuxaudio.org again.
On Thu, Oct 2, 2014 at 4:13 PM, Phil CM <philcm(a)gnu.org> wrote:
>
> On 02/10/2014 14:13, Harry van Haaren wrote:
>>
>> On Thu, Oct 2, 2014 at 1:14 PM, Phil CM <philcm(a)gnu.org> wrote:
>>>
>>> I need a synth with a pitch control. A synth that can be controlled to
>>> produce all tones between one note and another, say from a2 to c3 in an
>>> anti-aliased way, like what you would get in pd by altering the pitch of
>>> a
>>> sine wave.
>>
>> Hi Phil,
>>
>> To start, welcome to LV2 programming: audio plugins are fun and complex
>> area!
>
> Thanks :)
>>
>>
>> If you haven't already, I suggest you checkout the "plugins" directory
>> in the lv2 repository. It provides the best example code you'll find,
>> and accompanying http://lv2plug.in/book/ provides detailed
>> explainations and best-practices.
>
> This is my bedside reading for the next days to come ; Too bad the examples
> do not include a simple synth :(
That's what I thought too, so I wrote a sin-generator a few years ago:
it apparently hasn't been included in the lv2 source yet. I'll CC
David Robillard, and see if that's an option :)
https://github.com/harryhaaren/lv2/tree/master/plugins/eg-sinsynth.lv2
I remember now that it doesn't accept MIDI input yet: which means it
doesn't handle notes, or pitch bend. These can be added quite
trivially, and is something that I'd be willing to collaborate on?
You'd learn how to "manually" use MIDI, and we'd have a better
resource.
Please note that the GUI code is NOT something to learn from: its not
advised to use GTK for plugin UI's.
That said, the code is pretty short, and does actually work: perhaps
learn from it, and then use a more lightweight UI framework ( NTK
being my / OpenAV's favorite: http://non.tuxfamily.org/wiki/NTK )
> OK, so I'm going to get back once I managed to make a basic synth to get to
> this pitch bending special case.
Sure, good plan.
>> I do strongly advise to checkout the plugins: they are a brilliant
>> reference to make LV2 plugins.
>
> Again, it's really a shame that there is no sound synthesis plugin
> demonstrated... I'm going to study them all anyway.
>>
>> Ok, that's quite a lot of info already I think!
>>
>> LV2 specific development:
>> #lv2 on irc.freenode.net (I'm "HarryHaaren", say Hi if/when you're on)
>> Mailing list (low-traffic):
>> http://lists.lv2plug.in/listinfo.cgi/devel-lv2plug.in
>>
>> Cheers, -Harry
>>
> Thanks a bunch, Harry
You're welcome. I like LV2, its the way forward: if I can help out
somewhat (apart from developing stuff myself) its also a pleasure, I
know LV2 can be a touch daunting, and a helping hand does make it a
lot easier there!
Cheers, -Harry
--
http://www.openavproductions.com
The Guitarix developers proudly present
Guitarix release 0.31.0
For the uninitiated, Guitarix is a tube amplifier simulation for
jack (Linux), with an additional mono and a stereo effect rack.
Guitarix includes a large list of plugins[*] and support LADSPA / LV2
plugs as well.
The guitarix engine is designed for LIVE usage, and feature ultra fast,
glitch and click free, preset switching, full Midi and/or remote
controllable (Web UI not included in the distributed tar ball).
Here is the " Ultimate Guide to Getting Started With Guitarix
<http://libremusicproduction.com/articles/ultimate-guide-getting-started-gui…>"
This release fix a bug in the preset naming schema ( vowel mutation in
preset names will crash guitarix) and introduce some new LV2 plugs:
* GxRoomSimulator
* GxDigitalDelay
* GxLiveLooper
Please refer to our project page for more information:
http://guitarix.sourceforge.net/
Download Site:
http://sourceforge.net/projects/guitarix/
Forum:
http://guitarix.sourceforge.net/forum/
Please consider visiting our forum or leaving a message on
guitarix-developer(a)lists.sourceforge.net
<mailto:guitarix-developer@lists.sourceforge.net>
The Guitarix project never accepted Donations, and still wouldn't do.
But, if you ever wished to donate the project, I would kindly ask you to
back the MOD Kickstarter campaign here:
https://www.kickstarter.com/projects/modduo/mod-duo-the-limitless-multi-eff…
to reach this Goal:
>
> If the campaign reaches U$100.000 the MOD Duo will offer an Audio
> Interface from it's USB connection. This means that when you plug the
> MOD Duo to your computer you will be presented with a 4 input audio
> device (two pre-processed + two post-processed) that can be used for
> recording the MOD's audio directly to your favorite software.
>
> Add this to the quality of our analog circuit and you'll have, as a
> free bonus, a professional grade audio interface that if bought alone
> would cost the price of a MOD Duo.
>
[*]Here is a list of all included plugs:
Guitarix tube emulations
========================
12ax7
12AU7
12AT7
6DJ8
6C16
6V6
12ax7 feedback
12AU7 feedback
12AT7 feedback
6DJ8 feedback
pre 12ax7/ master 6V6
pre 12AU7/ master 6V6
pre 12AT7/ master 6V6
pre 6DJ8/ master 6V6
pre 12ax7/ push-pull 6V6
pre 12AU7/ push-pull 6V6
pre 12AT7/ push pull 6V6
pre 6DJ8/ push-pull 6V6
noamp
Guitarix Tonestacks
===================
default
bassman
twin
princeton
jcm800
jcm2000
mlead
m2199
ac30
soldano
mesa
jtm45
ac15
peavey
ibanez
roland
ampeg
ampeg_rev
sovtek
bogner
groove
crunch
fender_blues
fender_default
fender_deville
gibsen
engl
Guitarix Cabinets
===================
4x12
2x12
1x12
4x10
2x10
HighGain
Twin
Bassman
Marshall
AC-30
Princeton
A2
1x15
Mesa Boogie
Briliant
Vitalize
Charisma
Guitarix internal mono plugins
===============================
Mono : Distortion : JCM 800 Preamp
Mono : Distortion : MultiBand Distortion
Mono : Distortion : Multi Band Distortion
Mono : Distortion : Overdrive
Mono : Distortion : Tube Screamer
Mono : Echo / Delay : Delay
Mono : Echo / Delay : Digital Delay
Mono : Echo / Delay : Dubber
Mono : Echo / Delay : Duck Delay
Mono : Echo / Delay : Echo
Mono : Echo / Delay : MultiBand Delay
Mono : Echo / Delay : MultiBand Echo
Mono : Echo / Delay : ReverseDelay
Mono : Guitar Effects : Compressor
Mono : Guitar Effects : Crybaby
Mono : Guitar Effects : Expander
Mono : Guitar Effects : GCB 95
Mono : Guitar Effects : Multi Band Compressor
Mono : Misc : abGate
Mono : Misc : Detune
Mono : Misc : Oscilloscope
Mono : Misc : Recorder
Mono : Modulation : Chorus Mono
Mono : Modulation : Flanger GX
Mono : Modulation : Flanger Mono
Mono : Modulation : MultiBand Chorus
Mono : Modulation : Parametric pitch shifter
Mono : Modulation : Phaser Mono
Mono : Modulation : Ring Modulator Mono
Mono : Modulation : Tremolo
Mono : Modulation : Vibe Mono
Mono : Reverb : Convolver
Mono : Reverb : Freeverb
Mono : Tone control : Amp impulse
Mono : Tone control : Baxandall
Mono : Tone control : BiQuad Filter
Mono : Tone control : Cabinet
Mono : Tone control : Feedback
Mono : Tone control : Fender 6G7
Mono : Tone control : Graphic EQ
Mono : Tone control : ImpulseResponse
Mono : Tone control : low high pass
Mono : Tone control : moonlight
Mono : Tone control : Peak EQ
Mono : Tone control : Scaleable EQ
Mono : Tone control : Tonestack
Mono : Tone control : Treble boost
Mono : Tone control : Volume
Guitarix internal stereo plugins
=================================
Stereo : Distortion : Postamp
Stereo : Echo / Delay : Digital Stereo Delay
Stereo : Echo / Delay : Duck Delay St
Stereo : Echo / Delay : Stereo Delay
Stereo : Echo / Delay : Stereo Echo
Stereo : Guitar Effects : Multi Band Compressor stereo
Stereo : Misc : Bass Enhancer
Stereo : Misc : Panoram enhancer
Stereo : Misc : Stereo Recorder
Stereo : Modulation : Chorus
Stereo : Modulation : Flanger
Stereo : Modulation : Phaser
Stereo : Modulation : Ring Modulator
Stereo : Modulation : Vibe
Stereo : Reverb : Convolver
Stereo : Reverb : Plate reverb
Stereo : Reverb : Stereo Verb
Stereo : Reverb : Zita Rev1
Stereo : Tone control : 3 Band EQ
Stereo : Tone control : Moog Filter
Guitarix LV 2 plugins
======================
GxAmplifier-X
GxAmplifier-Stereo-X
GxBarkGraphicEQ
GxChorus-Stereo
GxCompressor
GxDelay-Stereo
Gxdetune
Gxdigital_delay
Gxdigital_delay_st
Gxduck_delay
Gxduck_delay_st
GxEcho-Stereo
GxExpander
GxFlanger
GxFuzz
GxGraphicEQ
Gxlivelooper
GxMultiBandCompressor
GxMultiBandDelay
GxMultiBandDistortion
GxMultiBandEcho
GxPhaser
GxRedeye Big Chump
GxRedeye Chump
GxRedeye Vibro Chump
GxReverb-Stereo
Gxroom_simulator
Gxshimmizita
Gxstereoecho
Gx Alembic Mono
Gx Studio Preamp Stereo
Gxswitched_tremolo
GxTremolo
Gxvocoder
GxZita_rev1-Stereo
GxAutoWah
GxWah
GxBooster
GxEchoCat
GxMetalAmp
GxMetalHead
GxTiltTone
GxTubeScreamer
GxTubeDelay
GxTubeTremelo
GxTubeVibrato
GxTuner
Dear list,
I need a synth with a pitch control. A synth that can be controlled to
produce all tones between one note and another, say from a2 to c3 in an
anti-aliased way, like what you would get in pd by altering the pitch of
a sine wave. Touwiiiii.
I followed the great "complete idiot" tutorial
<http://www.nongnu.org/ll-plugins/lv2pftci/#A_synth> and was really
astonished by the concise and powerful code it presented.
The results are here
<https://bitbucket.org/xaccrocheur/ksi/src/0ffef787ca04?at=master>, I
just removed the delay.
This is my first steps in C++, or in audio programming altogether (but
I've been coding in PHP, Lisp and sh for years, and wrote two music
players in JS and HTML, oh and a wrote an ultrabasic sample-based drum
machine java applet ages ago) so I'm reading a lot about it currently.
Please bear with me if I say something really dumb.
In order to understand how I can achieve what I want, I'd like to
implement a pitch bend function. You know, the classic, two tone down
and up of the physical MIDI keyboards, that all LV2 synth plugins I
tried have.
For that I guess I need 1-a control port (but no widget, since I would
only be controlling it physically) and 2-a function that acts upon the
pitch (most probably in the Beep class).
I'd also like to change the waveform type from square to sine (and
ideally experiment with other waveforms).
Can somebody please point me towards the info that would allow me to
understand how to do this?
I downloaded and built the complete LV2 specifications, and am currently
reading the docbook, and the API doc <http://lv2plug.in/ns/lv2core/>,
but I fail to see how I can use this object
<http://lv2plug.in/ns/lv2core/#PitchPlugin> to alter the pitch, or for
example, change the waveform type (that may well be outside the scope of
the LV2 framework, of for that matter the LV2::Synth template) or even
create other lv2:ControlPort than sliders.
Thank you for your patience.
--
Phil CM
Hiho,
tonight is the next edition of the Creative Music Coding lab:
We welcome again all creative music coders at STEIM for an evening of
exchanging current work, problems and solutions - and music together.
More information:
http://steim.org/event/creative-music-coding-lab-14/
Entrance is free.
And let us know if you plan to join (just to get an idea of how many
seats, and how much coffee and tea we should prepare)!
sincerely,
Marije
Focusrite's RedNet series of interfaces uses Dante as the transport
protocol. Going to the Dante home page I find that an audio driver
(mac/win) is available for $30 or so (there is apparently a linux version
available from another party). Yet Focusrite sells a RedNet PCIe
card for around $800... one hopes it has more on it than an ethernet port
:) That looks like a sound card to the computer. This card does not look
like it has a special plug on it (like the locking ones some of the
snake/mixing boxes have). I am wondering what other processing might be
happening on this card to make it worth Focusrite's effort to produce.
Routing to be sure, but the Interface boxes all have that anyway. DSP?
Effects? maybe, but not useful on a Linux box I am sure.
I realize a big part of the cost is scale (lack of scale in this case),
but can't help but think that the money would be better spent on a better
mother board. For example moving from an i5/7 to a Xeon based board.
Reading more about the RedNet PCIe card. It is 4 lane, but the recomend
installing in an 8 lane slot. They also recomend using a GB switch to
which both the PCIe audio card as well as the MB native Ethernet port is
connected. They are suggesting that all the audio will go through PCIe AI
card and that control will go through the native enet port. This all may
be to do with 128 channels at 192khz at 3ms. The native enet port has the
dante driver on it too.
I am not suggesting that the Linux world embrace Dante as a protocol so
much as learning from its implementation. I am not sure that building for
192k is the way to go though.
Some numbers... if they are talking 192k with a 32sample buffer (like jack
with 16/2?) it would seem there is a lot of extra latency built in as at
48k and 16/2 the raw latency from card to jack is only .6ms and at 192k it
would be less than .2ms... .3ish for return trip. So the network and ADC
together take a lot longer. Considering my USB IF at 48k has an ADC time
of ~.5ms, most of that is network.
I am looking forward to testing Fons' n2jbridge jack backend. I will not
be using 192k however. I generally use 48k, but may try 96k to test
differences in latency. My own low level protocol is way down the road, if
it ever happens.
--
Len Ovens
www.ovenwerks.net
Does someone know about writing WAV using libsndfile?
My file becomes 174M big as using sf_writef_short() within 8s
please take a look at
http://ags.sf.net
Hey everybody,
I've got this audio app I'm writing which uses message passing to
communicate between threads (similar to the actor model). A message
channel consists of a ring-buffer for the actual message storage, and
then an eventfd so that a thread can block on its channel (or,
importantly, several).
At the moment, when the audio thread (the JACK callback) needs to send a
message over a channel to another thread, it follows the common codepath
of appending the message to the channel's ring-buffer and then
write()ing to the eventfd. I suspect this is not real-time safe, but is
it something I should lose sleep over?
-w
Hi,
QMidiArp 0.5.2 has just seen the light of the day. It brings mainly
two improvements. One is a comeback, that of tempo changes on the fly,
and that now includes also tempo changes of a potential Jack Transport
master. Also the Jack Transport starting position is finally taken into
account, so that QMidiArp should be in sync also when starting the
transport master not at zero.
The second one is Non Session Manager support, mainly thanks to the work done by Roy Vegard Ovesen!
Note that for compiling in NSM support you will now need liblo as dependency.
Enjoy, and enjoy LAC in Graz this year
Frank
________________________________
QMidiArp is an advanced MIDI arpeggiator, programmable step sequencer and LFO.
Everything is on
http://qmidiarp.sourceforge.net
qmidiarp-0.5.2 (2013-05-09)
New Features
o Tempo changes are again possible while running, both manually or by
a Jack Transport Master
o Jack Transport position is now taken into account when starting,
QMidiArp used to start always at zero
o Muting and sequencer parameter changes can be deferred to pattern
end using a new toolbutton
o Modules in the Global Storage window have mute/defer buttons
o Global Storage location switches can be set to affect only the pattern
o Non Session Manager support with "switch" capability (thanks to
Roy Vegard Ovesen)
General Changes
o NSM support requires liblo development headers (liblo-dev package)