[Clam-devel] GSoC, patch and questions...
Natanael Olaiz
nolaiz at gmail.com
Wed Apr 23 08:59:54 PDT 2008
El 04/23/2008 12:01 PM, Pau Arumí escribió:
> El dt 22 de 04 del 2008 a les 19:43 -0300, en/na Natanael Olaiz va
> escriure:
>
>> Hi!
>> To start learning the CLAM platform, Pau gave me this advice:
>>
>> If you want to take a small useful
>> task, here goes one: "add Source/Sink by right clicking to a out/in
>> audio port ". It shouldn't be very hard since taking the add-monitors as
>> example. You can start with tentative code, that you can send as patches
>> and we'll comment.
>>
>>
>> I did it partially (copying and pasting...), in a half way: to connect
>> the objects outputs to the AudioSink (I attached the patch file). But it
>> have a problem: it allows ALL TYPES output signals to connect to the
>> AudioSink.
>> I copied the monitor implementations, which search the monitors with the
>> same type than the output, doing: "factory.GetKeys("port_monitor_type",
>> outportTypeId(_processings[i]->model(),portindex))".
>> But I didn't found any similar descriptor (than "port_monitor_type") for
>> the input/output audio slots, so I used: "keys =
>> factory.GetKeys("description","AudioSink")" to search the AudioSink(s)
>> object(s), but without taking care to match the data types...
>>
>
> Hi Natanael,
>
> i'm very happy to receive this early patch :-)
> Let's keep working on it:
>
> The onAddOutput() method is ok, just rename it to onAddSink()
>
>
Is correct to still using a call for "addPortMonitorProcessing(...)"
whithin there?
>> Then my questions are:
>> - Using GetKeys("description","AudioSink") is a good way to match
>> those objects?
>>
>
> No, this is not necessary -- and neither the iteration on keys. As
> simple as adding the action with a given description
> menu->addAction( "Link with Audio
> Sink",this,SLOT(onAddOutput()))->setData(translatedPos);
>
Ok.
>> - There is a descriptor similar to "port_monitor_type" for
>> input/output audio slots? If yes, where I can found it?
>> - What is the better way to check the data types? (I think the
>> actual patch with a conditional could works..)
>>
>
> Ok, filtering by type is the tricky part. Look at the tip 8 lines above
> your code:
>
> Keys keys = factory.GetKeys("port_monitor_type",
> outportTypeId(_processings[i]->model(),portindex));
>
> This returns all the processing factory keys that have an attribute
> "port_monitor_type" with value SomeType. Where SomeType is the clicked
> port type.
>
> So this is what you need to call:
> outportTypeId(_processings[i]->model(),portindex))
> this returns and string. Experiment (for example printing it out) to
> find which is the string corresponding to an Audio type. With that
> you'll be able to add the needed "if".
>
Great, and simple! :) I was just wondering how to match it with a key,
but if make the direct connection I only need to test the output type
and allow (or not) to do it....
> If you add icons (even VERY draft ones) and the Source part, this will
> be a wonderful patch to contribute.
>
> Pau
>
Ok, now I'm going to the University. When I'll return I'll try your
suggestions and make an icon. Do you like a speaker for it?
Thank you very much,
Natanael.
More information about the clam-devel
mailing list