About

N.Léveillé (b. 1977, France) programs real-time audiovisual and business software, manages projects, coaches programmers, plays and composes electronic music, and occasionally writes about his experiences.

Read more...

nicolas @ uucidl

What's up since October 2010?

April 9 by nicolas

Hello everyone,

Since last post, I have been invited in november 2010 to do visuals for Windy Hill Mill in Paris at the Gare Aux Gorilles. This was a great opportunity for me to update my live visual code to load arbitrary videos. QuickTime made it possible, on a very short schedule, to integrate full motion videos in my normal OpenGL setup. Unfortunately the place was not ideal for projections, and I ended up projecting onto the ceiling!

Later in January 2011, I also played with my friends of Windy Hill Mill in Brooklyn, NY at the Invisible Dog gallery, bringing some parisian flavour to the show. My setup there was a monome 64 and the MLR sample manipulation program. You should check the photos!

Also worth noting, I did the soundtrack for a short movie by Eva Pervolovici called “Danger de Mort.” A short clashing dreamlike photography with a facetious narration.

Coaching programmers and would-be programmers has also been a very rewarding experience. I’ve been teaching some basics about audio/game programming in C, some methodology, and also been working to demystify the harmful abstractions used in the JSF2/J2EE world. Enterprise programmers’ typical schedule is hindering their progress: Integration, configuration, reading documentation may comprise as much as 70% of their time. Combined with harmful abstractions, this leads to cases of impostor syndrome.

Til next time!

uu:rbrch

October 16, 2010 by nicolas, filed under works

Rbrch is a contemplative piece with an aquatic theme.

Downloads

Each is about 1.5MB big and written in C. Both audio and visuals are generated.

Just contact me if it does not appear to run properly.

Requirements: SSE2, accelerated OpenGL graphics, an audio card.

Video

Although you really should download and run the executable.

Rationale

Rbrch was originally made as a gift for someone’s birthday. A demo meant as a sort of relaxing bubble, away from the urban greyness.

Care was taken in making it work on most basic computers, hence the absence of shaders and an attempt at detecting how fast the machine runs the particle system during the initial blank screen.

Acknowledgements

  • Uses the code base I cowrote for LN2’s.
  • PortAudio provides the audio interface
  • GLUT,GLEW provides the display interface
  • stb_image for image loading

Hope you liked it!

Habitat, l'étagère indisponible

June 24, 2010 by nicolas, tagged stories and french

L’autre jour je voulait acheter une étagère. Chromée, bien brillante, sur roulettes, longue¹. Je vais a Habitat-Montparnasse, accoste un vendeur qui me dirige vers son bureau, et là on me déclare que je ne peux point l’obtenir.

  • n’en avez vous plus en stock?
  • si, mais suite aux travaux nous n’avons plus accès a notre entrepot.

Alors moi, pas une pas deux, car j’avais la ferme intention d’avoir mon étagère le jour même (c’était le samedi suivant mes vacances et j’étais dans de bonnes dispositions) je leur dit qu’il n’est pas la peine de la reserver, quitte le magasin et me dirige vers la bouche de métro la plus proche pour aller a Habitat boulevard des Capucines.

Là-bas je trouve l’étagère tant recherchée. La vendeuse m’interpelle lors de mon passage dans le magasin, puis me dirige fatalament vers le bureau approprié. Le vendeur en face me dit oui oui pas de probleme attendez nous allons la monter ici, télephonant a son collègue en sous sol.

Ce collègue lui répond alors, dans un dialogue de sourd qu’il n’en voit aucune en stock, alors que le vendeur, en haut, en voit bien une sur son ordinateur.

Bilan, Ikea, ils sont pas mal quand même :)

¹ A noter que je me suis fait interpeler par un vendeur la première fois que je l’ai repérée, quand j’ai commis le grave crime de sortir mon appareil photo pour la capter pour plus tard.

post-LSV notes, Frank Bolero and Knos

April 26, 2010 by nicolas, tagged live visuals, music and tpolm, filed under works

Frank Bolero and Knos, LSV 7010-04-25

The TPOLM Lazy Sunday Video was an absolute blast, with lots of nice live performances and visual works.

Esem’ music for instance felt satisfying on so many levels. Machinedrum’s was full of vigor. Sense’s and Frank Bolero’s were full of romanticism.

Magic happened amongst the technical difficulties in the visual department. I was particularly curious about Nebogeo’s live coding with his programming language, fluxus. Magic also happened with the video signal manipulation devices that Jdigittl had built for the occasion.

2010-04-26, 2010-05-02: the lazy sunday radio (audio only, so) actually kept playing for a week, each TPOLM DJ handing the station over to the next one in a different time zone. The sunday never really ended.

I participated in the form of visuals for the swedish musician Frank Bolero:

It was an honor and a great pleasure to do visuals on such a moody soundtrack.

You will soon be able to get all of these performances at http://lsr.tpolm.org

During the afterparty, I also did a 2h long live visuals improvisation on a dj set by alkama:

Continue reading...

Upcoming event: Lazy Sunday Video (7010-04-25)

April 24, 2010 by nicolas, tagged live visuals, music and tpolm

This sunday 25/04 I’ll be doing the visuals for the first Lazy Sunday Video in 3 years.

You are all invited to listen to the mixes, which will last a great deal of the day. Some quite exceptional live music and visuals is to be played there.

Visually, there’ll be everything from analog synths to live coding to demo-style visuals and live photoshop.

Line up, details and streams at:

http://lsr.tpolm.org/?p=296
http://tpolm.com/

Audio/Video streaming will be done courtesy of http://ustream.tv

Image

motivation-hacking (activity tracking)

February 14, 2010 by nicolas, tagged motivation and activity, filed under projects

An experiment in motivation-hacking

In the spirit of:

http://lifehacker.com/281626/jerry-sein … ity-secret

One night I was in the club where Seinfeld was working, and before he went on stage, I saw my chance. I had to ask Seinfeld if he had any tips for a young comic. (…)

He said the way to be a better comic was to create better jokes and the way to create better jokes was to write every day. (…)

He told me to get a big wall calendar that has a whole year on one page and hang it on a prominent wall. The next step was to get a big red magic marker.

He said for each day that I do my task of writing, I get to put a big red X over that day. "After a few days you’ll have a chain. Just keep at it and the chain will grow longer every day. You’ll like seeing that chain, especially when you get a few weeks under your belt. Your only job next is to not break the chain."

"Don’t break the chain," he said again for emphasis.

And so this daily tracking page was born. It shows the overall activity of our code trees. Each day a commit has been performed, the day will be darkened. As the number of updated files grows, so does the darkness of each square.

Do something every day and you will progress. Do it for a long time and you will become an expert.

Sean Barret's Judy vs Hashtable Performance Comparison

October 4, 2009 by nicolas, tagged programming

http://uucidl.com/git/?p=hashperf.git;a=summary

$ git clone http://uucidl.com/git/hashperf.git

Requirements: GNU Make; cc; gnuplot.

Introduction

A couple of years ago, I stumbled upon the programming works of Sean Barrett. Both he and Molly Rocket partner Casey Muratori exhibit a refreshingly pragmatic approach to programming, a will to fight the useless complexity that too often plagues our field. Checking out their forums is also well recommended¹.

You might have read before about Judy, an associative array implementation by Doug Baskins, with peculiar performance claims.

Sean Barrett submitted Judy to his inquisitive eye, and produced an enlightening article "A Performance Comparison of Judy to Hash Tables"

A very interesting aspect of the comparison is that performance alone is not the sole focus: the article contrasts the Judy’s 200k lines of code with the 200 lines of code of a simple hash table implementation.

¹ As well as checking out Sean Barrett’s excellent pure C libraries: stb_truetype, stb_image, stb_vorbis and stb.

So what about it?

Well I just took a couple of hours to convert Sean Barrett’s original windows based test suite to POSIX platforms.

Just do:

$ git clone http://uucidl.com/git/hashperf.git

A Makefile (for GNU Make) to build the program, launch the (lengthy) tests and create the graphs, that’s about it.

To reproduce Sean Barrett’s results, just type:

$ make tests
$ make plot

Adding new implementations to the tests

You can easily add new implementations to the test suite by opening aatest.c:

Add your datastructure’s API to the top of the file:

// add your new datastructure code here

void *stlhashCreate(int size);
void stlhashFree(void* hash);
uint32 *stlhashFind(void *hash, uint32 key);
uint32 *stlhashInsert(void *hash, uint32 key);
int stlhashDelete(void *hash, uint32 key);
int stlhashCount(void *hash);

(...)

void reset(void)
{
    (...)
    if (stlhash != NULL)
	stlhashFree(stlhash);
    stlhash = stlhashCreate(1);
    (...)

Describe (AArray) the new hashtable to the test suite:

AArray stlhash_desc = { "stlhash", stlInsert, stlDelete, stlGet, stlCount, stlMem };

Add it to the command line:

int main(int argc, char **argv)
{
    (...)
    if (!stricmp("judy", argv[i])) a = &judy_desc;
    else if (!stricmp("hash", argv[i])) a = &hash_desc;
    else if (!stricmp("bhash", argv[i])) a = &bhash_desc;
    else if (!stricmp("stlhash", argv[i])) a = &stlhash_desc;
    (...)
}

You also have to produce the datasets in the Makefile

First add a new testing function, and add it to "both". Don’t forget to change both the parameter and the name of the output file.

## testing functions

stlhash=./$(TEST) stlhash $(1) $(2) $(3) $(4) $(5) $(6) $(7) $(8) $(9) > $(OUTPUT)/stlhash$(1)$(2)$(3)$(4)$(5)$(6)$(7)$(8)$(9).txt
bhash=./$(TEST) bhash $(1) $(2) $(3) $(4) $(5) $(6) $(7) $(8) $(9) > $(OUTPUT)/bhash$(1)$(2)$(3)$(4)$(5)$(6)$(7)$(8)$(9).txt
(...)
both=\
    $(call judy,$(1),$(2),$(3),$(4),$(5),$(6),$(7),$(8),$(9)) ; \
    $(call hash,$(1),$(2),$(3),$(4),$(5),$(6),$(7),$(8),$(9)) ; \
    $(call stlhash,$(1),$(2),$(3),$(4),$(5),$(6),$(7),$(8),$(9)) ; \
    $(call bhash,$(1),$(2),$(3),$(4),$(5),$(6),$(7),$(8),$(9))

Plotting the results: then you have to also manually add the new datastructure to the plotting scripts: buildraw.gp, proberaw.gp

Openframeworks: C++ for artists

August 29, 2009 by nicolas, tagged programming and art_and_code, filed under commentary

Three enthusiastic iconoclasts talk about Openframeworks, or OF.

OF is a software development package with ready-made tools to write interactive, audio-visual programs in the C++ language.

Why C++? The enduring success of this industrial language has provided a great deal of much desired libraries to it. Its success as a system language has also ensured a good baseline performance. The OF project was started to let more people take profit of this situation.

Installations and standalone programs are written in parallel with OF. In its current pre-release state, getting feedback from projects helps defining its core and improving it.

As general philosophy, users are encouraged to improve OF and make it evolve.

Teaching C++ to artists? Are you insane?

C++ made easier could be the unofficial slogan for OF. The tools it offers ‒ APIs ‒ avoid using fancy C++ concepts, and generally try to look like their counterparts in the successful JAVA-based package, Processing.

The authors themselves started with Flash (Fun), Lingo (Poetic) then Java (Learning by decompiling) and ACU, an earlier C++ based library written used internally at the MIT.

And returns on the first OF-based projects say those without a programming background have managed to learn and make use of it.

The main role OF is playing here is to provide wrappers for existing C/C++ libraries. OF hides their guts behind an easier and consistent facade.

OF is organized into two area:

  • OF Core
  • OF Addons

The OF Core represents the stable part of the wrapper, and OF Addons are libraries supported by third-parties and often quite experimental.

At the time of the talk it can be used in Mac, Windows, Linux and the iphone.¹

Similarities with Processing are numerous: The idea of not focusing on one single type of application, and rather trying to support various types such as installations, standalone programs, mobile phone programs, even print-based projects². The role as a meeting point for a community of creators. The label / brand it carries with it. And also the challenge that its founder face as they integrate a selection of libraries.

A great number of demonstrations is given then during the talk, and we especially like the last few minutes of the talk which concentrated on the community aspects.

The framework in its pre-release state is breathing through its internal forum. This gives the OF team and their users visibility of each other’s projects and encourage collaboration. The question is how to preserve this once OF has been released more widely? The team’s answer has been to organize events, workshops, coding parties in order to build and extend a tradition of collaboration around the OF project.

¹ No word was said on what often happens with multi-platform libraries. The tools offered through its API look the same yet when they are implemented by different libraries on different systems or device, then of course the output cannot be guaranteed to be the same. The supported inputs ‒ for example file formats supported for video content ‒ will also vary, for example.

² As with the examples given in the processing session, there is a strong fascination with giving a concrete manifestation to programs, to let them escape from the computer displays, or even to let the computer disappear. Is it because computers are too profane? Is it because while displays nowadays can be huge and high resolution, they are a limitation of their own?

Hans-Christoph Steiner: Pure Data and its community

August 22, 2009 by nicolas, tagged programming and art_and_code, filed under commentary

Hans-Christoph Steiner is yet again presenting a visual programming environment historically related to MAX/MSP: Pure Data.

Compared to his two counterparts (S.Oschatz, L.Dubois) H.C. Steiner shows a great deal of enthusiasm especially in the first half of his presentation.

His live examples are more sophisticated and give a better sense of the usage of PD.

What he communicates on the community itself is different from his counterparts: Sharing programs and distributing them seems more common within the Pure Data community than the VVVV and MAX community. This may be solely due to PD itself being Free Software¹.

One interesting piece of his presentation was a praise and critic of the Free Software concept itself, praising its concept for the right it gives to users and criticising its implementations in that the complexity of software systems and languages nowadays builds a high barrier of entry to any user willing to contribute.

After he’s seen examples such as netpd, a server to share pd patches over the network entirely built in PD itself, his opinion seems to be that visual languages can, on their own be legitimately used to create applications. And that their ease of access let them answer the question of improving software literacy (everybody read and write software) asked in Golan Levin’s introduction.

¹ MAX, VVVV and PD may be almost alike, their users have developed different traditions, and there lies different goals and practices. Analyzing a programming language or environment needs to take into account both its objective qualities and also the traditions of its user base.

Sebastian Oschatz on VVVV

August 14, 2009 by nicolas, tagged programming and art_and_code, filed under commentary

Another talk about a MAX related project, this time we have VVVV from Meso. The talk goes into more details about the inner workings and the advantages of such a visual language.

http://vvvv.org/tiki-index.php ― more information.

Vvvv is an application and visual programming language published by MESO, a company cofounded by Sebastian Oschatz. Its creation is justified by Sebastian Oschatz as a reaction to the bland and numerous visualization projects which were thriving at the time in the media art community.

MESO’s business model — since it is a company — requires vvvv’s source code to be proprietary. Although the program is free to download and play with, it must be licensed once set up in a commercial context.

MESO’s three developers choose to make vvvv run solely on windows and directx, ensuring the best and most efficient support for such a small team.

Historical roots: MAX/MSP & Pure Data

The user interacts with a constantly running "patch" of nodes connected together with wires. Each wire define the flow of data between operations (nodes) which have inputs (inlets) and outputs (outlets.)

Programs are defined spatially, and syntax errors are never encountered. A program is reinterpreted as soon as it is changed, and runs constantly, always producing content.

VVVV's specifics

The heart of vvvv is a single processing loop, designed to service realtime video processing. Each nodes stands for a particular state — a complex value — in contrast to the original model used by MAX of nodes as message transformation devices. Mentally, the computation model is not that of "pushing messages to children", rather it is about "querying ascendant nodes about their current state".

Networked patches are also supported from scratch (does MAX do it nowadays?)

Sebastian Oschwatz’ presentation style is didactic and slightly detached, and I clearly dozed off in the middle of his presentation, especially as he plod through the following list of topics he covered:

  1. (5:25) program while the program is running — instant feedback is provided. It makes program building enjoyable and almost playful, and very immediate.
  2. (12:00) inputs at the top, outputs at the bottom — a general downward flow. The types of layout based rules are common in the MAX family yet sometimes a bit hidden. Pure Data for example has horizontal layout rules.
  3. (16:37) naming is optional — naming things scares non-programmers. We would rather say that naming values and operations is hard, not scary.
  4. (17:55) states and not events — states can be queried and are mutable, enabling optimizations such as not recomputing any descendants if state has not changed.
  5. (20:06) spreads — only one data type is moved between nodes, the 1d array. Meso show its tendency to rename/rebrand concepts.
  6. (22:45) no errors — no syntax errors in particular. All nodes are made resilient to input data: numbers or array are not constrained to any domain or size and operations are made then via wrapping (modulo arithmetics)
  7. (29:06) boygrouping — synchronization of multiple computers and screens. What a strange name again.
  8. (36:30) directx / shading languages — modern 3d hardware is supported, and well.

In a very striking part at the end he presents integration with shading languages, which are interpreted by the graphic card. It is striking because we could not feel but slightly uncomfortable as he proceeded to praise a textual language, manipulated with a plain old decrepit text editor. Especially after having praised a visual language for about 30 minutes.

Why doesn’t vvvv provide a graphical manipulation of HLSL shaders? Why lose the — no error, no syntax to learn — benefits he presented earlier? At least
the sense of immediacy is preserved: a shading program is edited and in an instant automatically uploaded to the graphic card.

At this point we are reminded of Field (OpenEndedGroup) a runtime environment which embraces the textual representation of programs and merges it in a rich graphical environment. It seems that vvvv could logically bridge the two, starting from the other direction.