<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet title="XSL formatting" type="text/xsl" href="http://dev.opencorn.org/feed/rss2/xslt" ?><rss version="2.0"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:wfw="http://wellformedweb.org/CommentAPI/"
  xmlns:content="http://purl.org/rss/1.0/modules/content/"
  xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
  <title>OpenCorn DevBlog</title>
  <link>http://dev.opencorn.org/</link>
  <atom:link href="http://dev.opencorn.org/feed/rss2" rel="self" type="application/rss+xml"/>
  <description></description>
  <language>fr</language>
  <pubDate>Tue, 17 Feb 2009 15:19:15 +0100</pubDate>
  <copyright>Copyright © Polytech.Mons 2009</copyright>
  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
  <generator>Dotclear</generator>
  
    
  <item>
    <title>OC Kernel 0.3 Works Great</title>
    <link>http://dev.opencorn.org/post/2009/02/17/OC-Kernel-03-Works-Great</link>
    <guid isPermaLink="false">urn:md5:1c7c2bc9e538181aacc4e9ef1105d244</guid>
    <pubDate>Tue, 17 Feb 2009 16:10:00 +0100</pubDate>
    <dc:creator>Nicolas d'Alessandro</dc:creator>
            
    <description>    &lt;br /&gt;
OpenCorn Kernel (ocKernel) 0.3.0 is now mainly re-developed.&lt;br /&gt;
&lt;br /&gt;
Here are 3 really positive aspects of this version:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;the kernel is now highly stable;&lt;/li&gt;
&lt;li&gt;the CPU performances are outstanding: 15% of use with 16 slice/ola of
really short frames (32 samples), see the screenshot;&lt;/li&gt;
&lt;li&gt;the API is the most simple version ever, the slice and ola manipulations
are acheived with 4 or 5 intuitive OpenCorn functions, such as &amp;quot;get a corn&amp;quot;,
&amp;quot;extract field from corn&amp;quot;, &amp;quot;set value in the matrix&amp;quot;, &amp;quot;send corns&amp;quot;, etc.&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;img title=&quot;Screenshot of OC with high demands, Feb 2009&quot; style=&quot;margin: 0 auto; display: block;&quot; alt=&quot;&quot; src=&quot;http://dev.opencorn.org/public/./.oc_screenshot_m.jpg&quot; /&gt;</description>
    
    
    
          <comments>http://dev.opencorn.org/post/2009/02/17/OC-Kernel-03-Works-Great#comment-form</comments>
      <wfw:comment>http://dev.opencorn.org/post/2009/02/17/OC-Kernel-03-Works-Great#comment-form</wfw:comment>
      <wfw:commentRss>http://dev.opencorn.org/feed/atom/comments/328245</wfw:commentRss>
      </item>
    
  <item>
    <title>Developers Meeting 1 - Doodle for March</title>
    <link>http://dev.opencorn.org/post/2009/02/11/Developers-Meeting-1-Doodle-for-March</link>
    <guid isPermaLink="false">urn:md5:dc874a33cb64036902e17bab7795951f</guid>
    <pubDate>Wed, 11 Feb 2009 16:36:00 +0100</pubDate>
    <dc:creator>Nicolas d'Alessandro</dc:creator>
            
    <description>    &lt;p&gt;Here is the Doodle I setup in order to find a date in March for the first
developer meeting of this version of OpenCorn: &lt;a href=&quot;http://www.doodle.com/gy6vfv9ck67naqcc&quot;&gt;http://www.doodle.com/gy6vfv9ck67naqcc&lt;/a&gt;&lt;/p&gt;</description>
    
    
    
          <comments>http://dev.opencorn.org/post/2009/02/11/Developers-Meeting-1-Doodle-for-March#comment-form</comments>
      <wfw:comment>http://dev.opencorn.org/post/2009/02/11/Developers-Meeting-1-Doodle-for-March#comment-form</wfw:comment>
      <wfw:commentRss>http://dev.opencorn.org/feed/atom/comments/326080</wfw:commentRss>
      </item>
    
  <item>
    <title>OpenCorn 0.3 - Outlines</title>
    <link>http://dev.opencorn.org/post/2009/02/11/first</link>
    <guid isPermaLink="false">urn:md5:c67d0682484782f39006ea8c2470d89c</guid>
    <pubDate>Wed, 11 Feb 2009 11:41:00 +0000</pubDate>
    <dc:creator>Nicolas d'Alessandro</dc:creator>
            
    <description>    &lt;p style=&quot;text-align: justify&quot;&gt;Max or Pd stands as a really particular
plateform where people from engineering and art are talking together, even
indirectly. Indeed the fact that &amp;quot;objects&amp;quot; are written in C by some people
(interested by learning it for getting advanced knowledges of the software and
implementing or porting particular ideas) and then used by a larger community,
probably interested by the result and in a more user-centered approach. But
even considering advanced users, we see that Max or Pd object programming has
been made quite simple by packaging the functions of these objets as a
straightforward toolbox. Thus for the majority of Max/Pd objet contributors, it
just consists in being aware of some specific concepts, related to these APIs
and knowing where to embed their particular ideas as C functions. Only few
people has a full computer science vision.&lt;/p&gt;
&lt;p style=&quot;text-align: justify&quot;&gt;Thinking about extending Max or Pd (particularly
with frame-based functions) is an interesting and even helpful challenge at a
time where signal analysis and granulation are the tools for contemporary
electroacoustic music. But we have to notice that there is no implementation of
such a framework that is today interesting others than geeks.&lt;br /&gt;
&lt;br /&gt;
Knowing this, we can highlight some points that would make a new attempt of
such a extension more successful:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Max or Pd programmers would ideally not be too much disturbed by the
extension, compared to their usual work. It means that the framework has to
work as ponctual anchors in a usual Max/Pd C code and for sure not as a
complete rebuilding of the sofware API, as FTM or Flext propose.&lt;/li&gt;
&lt;li style=&quot;list-style: none&quot;&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;The focus has to be done on the few lines of C code that the Max/Pd
developer wants to test on incoming frames. Indeed the thing that pushs
somebody to go to programming is just related to the hacking of audio samples.
Thus the time devoted to &amp;quot;context programming&amp;quot; (allocate memory, prepare audio
buffers, remember reading positions, etc.) has to be minimal and really close
to current Max/Pd context programming (defining ins/outs, arguments, etc).&lt;/li&gt;
&lt;li style=&quot;list-style: none&quot;&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;Once more the functions that have to be learned by the user in order to
modifiy the incoming audio samples have to be really intuitive and close of a
high-level language, such as Matlab or even Max/Pd itself. For example,
creating a whole section of C functions devoted to be used inside the code of
the object and not related to the interface with frame-synchronous processing:
compute FFTs, means, scaling, resampling, etc.&lt;/li&gt;
&lt;li style=&quot;list-style: none&quot;&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;The performance and stability of such a framwork have to be comparable to
Max or Pd itself and not giving the feeling that something extra has been
plugged, creating odd connections with unstable and uncontrolable
entities.&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;text-align: justify&quot;&gt;The question is what are the easy and current
meeting points between the idea of a programmer and Max/Pd API:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The object structure with internal variables and a imposed header which
&amp;quot;makes things working&amp;quot;.&lt;/li&gt;
&lt;li style=&quot;list-style: none&quot;&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;The idea of adding messages for which the object is aware, even for
DSP.&lt;/li&gt;
&lt;li style=&quot;list-style: none&quot;&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;The basic Max/Pd data format, as an &amp;quot;array of Atoms&amp;quot; (list of
castable-on-the-fly datas).&lt;/li&gt;
&lt;li style=&quot;list-style: none&quot;&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;The constructor (new) and the destructor (free) of the object, as to
separate functions.&lt;/li&gt;
&lt;li style=&quot;list-style: none&quot;&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;The DSP function, as a place for creating audio inputs and outputs.&lt;/li&gt;
&lt;li style=&quot;list-style: none&quot;&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;The perform function as the place where the audio buffer is processing and
pushed out.&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;text-align: justify&quot;&gt;The idea that we propose will be inserted
smoothly into that body of habbits. It is called OpenCorn and based on these
differnet aspects. We propose that &amp;quot;frames&amp;quot; (or more generally Corns) are one
more type in the exsting Max/Pd API:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The basic capsule used to save and exchange informations is really close to
an Atom (or even array of Atoms), but it accepts much more datatypes than what
Max/Pd can do by default: audio grains, FFTs, etc.&lt;/li&gt;
&lt;li style=&quot;list-style: none&quot;&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;All the initialization/free functions of OpenCorn are &amp;quot;sticking&amp;quot; the MSP
procedure: just a few functions to add. For example, activating the OpenCorn
interface in an object stands in a ocNewObject() function, that has to be added
in the constructor, and the freeing procedures are in a ocFreeObject() function
in the destructor.&lt;/li&gt;
&lt;li style=&quot;list-style: none&quot;&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;The object scheduler of OpenCorn uses the MSP scheduler. It means that an
object containing formatted datas is sychronised within an audio buffer cycle,
with a relative value (in sample). The first implementation of OpenCorn would
works sample-precision (= sync factor is an integer). Further versions of
resynthesis object would support subsample-precision (= decimal sync factor) by
applying a frame interpolation.&lt;/li&gt;
&lt;li style=&quot;list-style: none&quot;&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;The OpenCorn &amp;quot;corns&amp;quot; (= synchronized data structures) are saved as extra
allocated memory within the existing Max/Pd dynamic memory space. Thus a
complex corn (e.g. an audio grain + FFT + pitch) corresponds to a simple
address value (integer) and frames are passed by reference (no copies without
explicit request -&amp;gt; frame cloning).&lt;/li&gt;
&lt;li style=&quot;list-style: none&quot;&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;The addresses of the corns (actually summarizing them) are transfered with
sample (or sub-sample) precision by stacking them and forcing a cast as t_float
values (32 bits) inside the MSP audio buffer. OpenCorn objects thus use
existing audio object ins/outs in order to exchange information. The only extra
functions to be used by the programmer are primitives for packing/unpacking
existing corns: ocAudioPack() and ocAudioUnpack().&lt;/li&gt;
&lt;li style=&quot;list-style: none&quot;&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;The OpenCorn distribution would initially provides slicing (audio -&amp;gt;
frames) and overlapping (frames -&amp;gt; audio) objects in order to help the
programmer to make tests of their codes. The rest of the body of functions
would progressively grow up thanks to the contribution of other users. It would
defines a bipolar development community (the same as Pd) where the OpenCorn
kernel is maintained by a small group of people and the API would be used by a
larger community of hackers in order to disseminate OpenCorn usage in various
contexts.&lt;/li&gt;
&lt;/ul&gt;
See you,&lt;br /&gt;
-Nicolas d'Alessandro&lt;br /&gt;</description>
    
    
    
          <comments>http://dev.opencorn.org/post/2009/02/11/first#comment-form</comments>
      <wfw:comment>http://dev.opencorn.org/post/2009/02/11/first#comment-form</wfw:comment>
      <wfw:commentRss>http://dev.opencorn.org/feed/atom/comments/325996</wfw:commentRss>
      </item>
    
</channel>
</rss>