[Clam-devel] Embedded Networks

Zach Welch zach-clam-devel at splitstring.com
Tue Apr 3 03:45:15 PDT 2007


Hi all,

I have begun working on adding "Embedded Networks" to CLAM at both the core 
processing level as well as in the NetworkEditor*.  I wanted to make this 
announcement to make everyone aware of this strategic goal.  At the moment, I 
am making strong headway on a rough working prototype, and I have attached a 
working initial patch and networks that demonstrate the concept.

Cheers,

Zach

* For those who are unclear, "embedding" a CLAM network into another will 
amount to dropping a EmbeddedNetwork processing component, configuring it with 
the file name of a .clamnetwork (much like an AudioFile source), and then 
connecting the various inputs and outputs that magically appear on the 
periphery of the new component.  Thus, the processing component encapsulates 
the functionality of a user-defined network, allowing decomposition of common 
network patterns into libraries of re-usable components.

Such re-usable networks would necessarily have been designed with "parameter" 
and "return value" components, which shuttle various types of data and control 
signals in and out of the network.  These would function much like existing 
Source/Sink components, but the EmbeddedNetwork processing component would 
use these exclusively to work its connection magic.  These extensions 
preserve all existing network semantics by introducing new components, rather 
than overloading behaviors in components that are already being used.

In the GUI, I am working to make the custom widget display an image of the 
sub-network inside of the processing component.  Ideally, this rendering 
should include added flow edges connecting the embedded parameter and return 
value components to their associated data (or control) inputs and outputs on 
the container component.  At present, the embedded network is editable, but 
that is probably not a desirable feature in the long term.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: embedded-networks.patch
Type: text/x-diff
Size: 22739 bytes
Desc: not available
URL: <http://lists.clam-project.org/pipermail/clam-devel-clam-project.org/attachments/20070403/4f768afb/attachment-0003.patch>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: test2.clamnetwork.pos
Type: application/octet-stream
Size: 58 bytes
Desc: not available
URL: <http://lists.clam-project.org/pipermail/clam-devel-clam-project.org/attachments/20070403/4f768afb/attachment-0006.obj>
-------------- next part --------------
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<network id="Unnamed">

  <processing id="EmbeddedNetwork_0" type="EmbeddedNetwork">
    <SourceFile>
      <URI>/home/zwelch/src/museick/clam/test.clamnetwork</URI>
    </SourceFile>
  </processing>

</network>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: test.clamnetwork.pos
Type: application/octet-stream
Size: 166 bytes
Desc: not available
URL: <http://lists.clam-project.org/pipermail/clam-devel-clam-project.org/attachments/20070403/4f768afb/attachment-0007.obj>
-------------- next part --------------
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<network id="Unnamed">

  <processing id="AudioSink_0" type="AudioSink"/>

  <processing id="AudioSink_1" type="AudioSink"/>

  <processing id="MultiChannelAudioFileReader_0" type="MultiChannelAudioFileReader">
    <SourceFile>
      <URI>/home/zwelch/billy.wav</URI>
      <Header>
        <SampleRate>44100</SampleRate>
        <Samples>1851495</Samples>
        <Channels>2</Channels>
        <Length>41984</Length>
        <Format>WAV</Format>
        <Encoding>signed 16-bit</Encoding>
        <Endianess>Format Default</Endianess>
      </Header>
      <TextualDescriptors/>
    </SourceFile>
  </processing>

  <port_connection>
    <out>MultiChannelAudioFileReader_0.Channel #0</out>
    <in>AudioSink_0.AudioIn</in>
  </port_connection>

  <port_connection>
    <out>MultiChannelAudioFileReader_0.Channel #1</out>
    <in>AudioSink_1.AudioIn</in>
  </port_connection>

</network>


More information about the clam-devel mailing list