Re: [LAD] LV2 Pitch bend control port (and function)

From: Phil CM <philcm@email-addr-hidden>
Date: Thu Oct 02 2014 - 21:02:29 EEST

On 02/10/2014 16:42, Harry van Haaren wrote:
> 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@email-addr-hidden again.
>
> On Thu, Oct 2, 2014 at 4:13 PM, Phil CM <philcm@email-addr-hidden> wrote:
>> On 02/10/2014 14:13, Harry van Haaren wrote:
>>> On Thu, Oct 2, 2014 at 1:14 PM, Phil CM <philcm@email-addr-hidden> 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.
Then how do you make it sound? I'm curious.
Your proposition is precious, Harry. Thank you very much for your help.
>
> 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 )
Funny, I was just reading your blog post
<http://harryhaaren.blogspot.com/2012/07/writing-lv2-guis-making-it-look-snazzy.html>
about it :)

But I cannot get it to build because of a gtkmm error:

Waf: Entering directory `/home/px/.kituu/bin/src/lv2/build'
[37/44] cxx: plugins/eg-sinsynth.lv2/widget.cpp ->
build/plugins/eg-sinsynth.lv2/widget.cpp.4.o
[38/44] cxx: plugins/eg-sinsynth.lv2/sinsynth_gui.cpp ->
build/plugins/eg-sinsynth.lv2/sinsynth_gui.cpp.4.o
[42/44] cshlib: build/plugins/eg-amp.lv2/amp.c.3.o ->
build/plugins/eg-amp.lv2/eg-amp.lv2/amp.so
[43/44] subst: lv2.pc.in -> build/lv2.pc
In file included from ../plugins/eg-sinsynth.lv2/widget.cpp:4:0:
../plugins/eg-sinsynth.lv2/widget.h:9:31: fatal error:
gtkmm/drawingarea.h: No such file or directory
  #include <gtkmm/drawingarea.h>
                                ^
compilation terminated.
../plugins/eg-sinsynth.lv2/sinsynth_gui.cpp:9:19: fatal error: gtkmm.h:
No such file or directory
  #include <gtkmm.h>
                    ^
compilation terminated.
Waf: Leaving directory `/home/px/.kituu/bin/src/lv2/build'
Build failed
  -> task in 'sinsynth_gui' failed (exit status 1):
         {task 3066761580L: cxx widget.cpp -> widget.cpp.4.o}
['/usr/bin/g++', '-I/home/px/.kituu/bin/src/lv2', '-DNDEBUG',
'-fshow-column', '-I/home/px/.kituu/bin/src/lv2/build',
'-I/home/px/.kituu/bin/src/lv2', '-I/home/px/.kituu/bin/src/lv2/build',
'-DHAVE_SNDFILE=1', '-DHAVE_GTK2=1',
'../plugins/eg-sinsynth.lv2/widget.cpp', '-c', '-o',
'plugins/eg-sinsynth.lv2/widget.cpp.4.o']
  -> task in 'sinsynth_gui' failed (exit status 1):
         {task 3066761772L: cxx sinsynth_gui.cpp -> sinsynth_gui.cpp.4.o}
['/usr/bin/g++', '-I/home/px/.kituu/bin/src/lv2', '-DNDEBUG',
'-fshow-column', '-I/home/px/.kituu/bin/src/lv2/build',
'-I/home/px/.kituu/bin/src/lv2', '-I/home/px/.kituu/bin/src/lv2/build',
'-DHAVE_SNDFILE=1', '-DHAVE_GTK2=1',
'../plugins/eg-sinsynth.lv2/sinsynth_gui.cpp', '-c', '-o',
'plugins/eg-sinsynth.lv2/sinsynth_gui.cpp.4.o']

Although I do have both

libgtkmm-2.4-dev: /usr/include/gtkmm-2.4/gtkmm.h
libgtkmm-3.0-dev: /usr/include/gtkmm-3.0/gtkmm.h

installed... I too find NTK really nice and lightweight, BTW. I know it
because it's used by Fabla, Sorcer, NSM etc. A simple sine-generating
synth plugin with a NTK GUI would be a cool place to start, I must say.

About this pitch-bend thing, I discovered So-404 and it does exactly
what I want in a way I had not though about :

"If two notes are played together the pitch will slide according to the
portamento time" I guess that's exactly what I want. Plus an attack time
setting ;)

>
>> 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
>
>
>

_______________________________________________
Linux-audio-dev mailing list
Linux-audio-dev@email-addr-hidden
http://lists.linuxaudio.org/listinfo/linux-audio-dev
Received on Fri Oct 3 00:15:01 2014

This archive was generated by hypermail 2.1.8 : Fri Oct 03 2014 - 00:15:02 EEST