Hello
I managed to make my example plugin
<https://bitbucket.org/xaccrocheur/ksi> (based on the only LV2 synth
tutorial <http://www.nongnu.org/ll-plugins/lv2pftci/#A_synth> that I
could find) monophonic :)
Now the only think that is left is a portamento function, to go from one
note to another (/exactly/ like so-404
<http://d00m.org/%7Esomeone/so404/> does).
I guess it has to do with the
void on(unsigned char key, unsigned char velocity) {
m_key = key;
m_period = m_rate * 4.0 / LV2::key2hz(m_key);
m_envelope = velocity / 128.0;
}
void off(unsigned char velocity) {
m_key = LV2::INVALID_KEY;
}
functions, I need to store the "note out" value to go from that, to a
"note in"...
Does anyone know the algorithm to implement that? That would really help me.
Thanks
PS - Excuse my poor English, I'm working on it
--
Philippe Coatmeur
Having read the AES67 spec, and reading all the various takes on it... I
have seen this thought a few times:
"AES67 is a good start in that it provides for a common timing method to
rate-lock everything on the network, but it does not announce the streams
or provide a common control protocol." [1]
Dispite the quote above, it seems all IF makers do have an open control
protocol called HTML. That is all of them seem to have web control
interface as a method of control as well as any other network control.
This is not the same as interoperability, but it does mean one app could
control more than one device even though different protocols.
Discoverability is also less of an issue than it is made out to be because
of the multicast nature of thiings. The audio packets are reconizable both
by the addressing as well as content and with the html control open, the
session parameters are also a known factor.
I have also seen this thought from every manufacture or AoIP protocol
vendor:
We welcome an open standard and want to support it. Interoperability is
good for us. (my paraphrase)
I would suggest that no-one wants to be the maker whos stuff works with
other products, but requires extra attention to get set up. This means
extra support which costs money. The aes67 document does suggest some of
the discovery types available:
Bonjour
SAP
Axia Discovery Protocol
Wheatstone WheatnetIP Discovery Protocol
Of these 4 SAP seems to be the one not attached to someone. (it is quite
old as these things go) But all of them seem to be at least somewhat open.
That is, I suspect that these were the choices put up but there was no
agreement. It would not be hard to support all four, but I suspect one of
them will just get used and become standard. Any forum messages I have
read just suggest the dev use SAP as happens.
In any case the format of the session information is in the standard, so
once it is found it can be used.
As for control, the web interface may become more standard (if it isn't
already, these protocols seem to come with the firmware). Http does not
only mean human interface.
I think in the same way that these people got together for a common
protocol, a common control and announce standard will show up.
Anyway, it is probably worthwhile creating an AES67 driver for Linux as it
would obviously allow the use of the next batch of audio interfaces to
show up. Even if the user has to use a browser to set the inteface up and
enter the session parameters, this is still better than the control Linux
drivers have over some of the audio interfaces that are "supported" in
ALSA now. The use of the IF DSP power, mixing, eq, etc. may not effect the
the DAW use so much (though I think it will), but it may suggest new uses
for the interface.
[1]
http://www.c2meworld.com/creation/new-protocols-enhance-console-networking/
--
Len Ovens
www.ovenwerks.net
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