[LV2] LV2: Communicate from the DSP to the UI

Michael Fisher mfisher31 at gmail.com
Mon Oct 28 13:30:09 PDT 2013


On Mon, Oct 28, 2013 at 11:58 AM, Michael Fisher <mfisher31 at gmail.com>wrote:

> On Mon, Oct 28, 2013 at 10:24 AM, Aurélien Leblond <blablack at gmail.com>wrote:
>
>> > The map object is 'just there' for when you need it, like creating new
>> > forges ;)  I've always wondered if it made more sense  to provide a
>> accessor
>> > method to it for clarity   Plugin::get_urid_map() const   or something
>> like
>> > that.
>> >
>> > That looks right for creating a forge, AtomForge's  ctor will call
>> > lv2_atom_forge_init
>> > when the map is passed in (just like you do above)
>> >
>> >>
>> >>    void Scope::run(uint32_t nframes)
>> >>    {
>> >>        // you're sending things in an atom sequence so get the size
>> >> information
>> >>        // from the port buffer
>> >>
>> >>       LV2_Atom_Sequence* aseq = (LV2_Atom_Sequence*) p (p_notify);
>> >>       m_forge->set_buffer ((uint8_t*) aseq, aseq->atom.size);
>> >>
>> >>        m_forge->sequence_head(m_notify_frame, 0);
>> >>
>> >>        // sequences need a timestamp for each event added
>> >>        m_forge->frame_time(0);
>> >>
>> >>        m_forge->write_float(1604);
>> >>    }
>> >>
>> >
>> > Still nothing happening on the GUI end ay?  Could I just have a link to
>> the
>> > full source code?  I'm better debugging hands on.  Sorry, I can't
>> recall the
>> > git address to your plugin set.
>> >
>> > Forging atoms (in a way that actually works) isn't by any means a
>> straight
>> > forward process.
>>
>> Thanks for checking, I really have the feeling I'm missing something
>> small here :)
>>
>
> Yep, missing something small seems to happen to me frequently.  I'm
> jumping over to my Linux machine and will give it a go.
>
>
>>
>> The SVN is here:
>> svn checkout svn://svn.code.sf.net/p/avwlv2/code/trunk avw.lv2
>>
>> (Ingen is the host I use to test them)
>>
>
>
First things first.  Your plugin, after modifying ttl files, works fine in
Jalv.   For ingen support, your best bet might be to add a Trac ticket on
drobilla.net.

Ok, so I figured out the problem...   the GUI ttl file should look
something like this (with a portNotification setting)

<http://avwlv2.sourceforge.net/plugins/avw/scope/gui>

        a guiext:GtkUI ;

        guiext:binary <scope_gui.so> ;

        guiext:portNotification [

            guiext:plugin <http://avwlv2.sourceforge.net/plugins/avw/scope> ;

            lv2:symbol "notify" ;

            guiext:notifyType atom:Float

        ] .



the Port definition in the plugin's turtle :

          ... [

                a lv2:OutputPort, atom:AtomPort ;

		atom:bufferType atom:Sequence ;

                atom:supports atom:Float ;   # <<<<<< NEED THIS (i think)

		lv2:index 1 ;

		lv2:symbol "notify" ;

		lv2:name "Notify" ;

              ] .



I also added more debug output to the GUI...  all relevant changes
were committed in a git mirror on Github (its just easier for me to do
that)  The only files I modified were  scope*.*  files


You'll want to look at the GUI code, because I also show you how to
'un-package' the atom in the port_event method.


https://github.com/axetota/avwlv2/tree/devel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.lv2plug.in/pipermail/devel-lv2plug.in/attachments/20131028/a8cf5040/attachment-0002.htm>


More information about the Devel mailing list