wcnt logo & demo sound

wcnt - Wav Composer Not Toilet

wcnt is a command line not-real-time modular audio synthesis, sequencer, and sampler, written in C++ for Linux i386 based systems. wcnt reads plain text files written in wcnt's 'near english synth definition pseudo language' and may then produce audio as stereo WAV files.

NEWS: 2014/02/08 Saturday - wcnt is not dead yet

I've been working away on a new version of wcnt these past few months and am quite pleased with how it is going. Many of the items on the TODO list are slowly being ticked off. Half of which, five years back, the prospect of implementation would seem to require strong magick.

 Things to expect:

    optional inputs (done)

    * no need to specify inputs providing some esoteric
      function, they'll automatically be turned off.

    * or, the unspecified input will match the connection
      that it is paired with (ie ommitting in_right will
      connect it to same output as in_left).

    * or, the unspecified input will connect to an output
      provided by the module which contains it (ie echo
      module automatically connects out_wet_output to

    optional parameters (done)

    * no need to specify each and every parameter (though
      some are mandatory). unspecified parameters will be
      set to sensible values.

    multiple choice (done)

    * for example: some parameters come in pairs to provide
      the modulation bounds for a value. if you don't want
      modulation, you will be able to choose to specify a
      single parameter instead (and additionally ommit the
      input providing the modulation source).

    optional groups (done)

    * a group consisting of parameters and/or inputs may be
      ommitted, but this is an all or nothing affair. if one
      item in the group is specified then the rest must be

   new modules (done)

   * seq_echo
   * seq_router
   * wcnt_note

    the above modules provide similar functionality to the
    trig_echo, trig_router, and wcnt_trigger modules but are
    designed for improved echo/routing of note data output
    by the sequencer

    Miscellaneous (done)

    * messages, just like comments except they are output
      for the user to read as wcnt processes. a message is
      begun by starting a line in the .wc file with a
      semi-colon. the message terminates at the end of the

    * descriptions of modules, data objects, inputs, parameters,
      and outputs can be shown by command line help.

    * bug fixes/compilation issues

    Master: https://github.com/jwm-art-net/wcnt

The master branch is workable but not quite polished yet. I am currently working on the 'custom_names' branch which is hoped to provide functionality to allow arbitrary choice of LADSPA plugin by the user, rather than the restricted selection of six LADSPA plugins currently provided. This is a way off but a release is unlikely to be made prior to this either being finished or deemed as non-workable in terms of my development skills at present.

Nearly forgot to mention, Wav Composer Not Toilet's tenth birthday, in March 2013, passed by unnoticed. It wasn't until I had a week off work sick and I was curious about if wcnt still compiled that I realized.

NEWS: wcnt-1.26.4 out now - 23/02/08

I uploaded wcnt-1.26.4 a few days ago and forgot to update this page. A something-or-other is fixed. The param_editor can now add/subtract/multiply/divide the existing values of parameters by a specified amount as an alternative to replacing parameter values. This will only work with parameters which use numeric values.

I'm half-heartedly redesigning this website (away from the internet). I want to try and update the documentation. It's too much.

NEWS: wcnt-1.26.3 released - 14th February 2008

mainly a bug fix release:

    * removed bpm and time signature information from the 'header'
      part of a .wc file. this effects the time_map module.

    * fader module's output out_trig has become out_bar_trig to
      reflect it's input names and function.

    * removed display clutter from --data-object-help command 
      line option.

    * removed references to the non-existant cosine_wave module
      which had been causing problems for --input-help cmdline

    * can now read a .wc file which only contains a single
      wcnt_exit module without crashing. oi! oi!

This release yet again means any .wc files created for previous versions must be modified. The naming of things in wcnt is (maybe) gradually sifting and shifting into a stable state so perhaps there will not be so many incompatibiliies with previous versions in future releases. Maybe.

There is also a new package called 'tutorials' which is a compressed archive of .wc files. There are two sets of five .wc files so far. The first deals with the basics, with five files leading up to, and explaining, the creation of a WAV containing a sine wave. The second set deals with wcnt's data objects (as opposed to modules) but more specifically explaining and illustrating basic usage of the synth_file_reader, param_editor, input_editor, group, and copier, data objects. None of these files create interesting sounds what-so-ever but that's not their purpose.

The next release of the tutorials will contain another set of .wc files which explain trigger modules and show what can be done with these. Other plans are for a set of .wc files for sequencing, sampling, and wave forms ... which leaves a number of modules which don't quite fit any of these specifically.

NeWs: 4Th February 2008 ~ 3am

wcnt-1.26.2 Released

same place... wcnt-1.26.2 released 3 hours ago... i hate this part. something i've done... ummmm programming or something... yeah... unrestricted some modules... modules which use the outputs of a list of modules - these types of modules are no longer restricted to a list of a specific type of module. which is great if you used the program and have been frustrated about the limitation, but otherwise it's the kind of things which should have been already.

something else, minor fix to dynamic module - prevents seg fault in situation x. code changes it's better than before, but this website is getting worse and left behind...

Processor Notes:

wcnt should compile on "All POSIX (Linux/BSD/UNIX-like OSes), Linux" - I hope - with any processor. i386 on Debian is my testing platform.

NEWS: 31st January 2008

wcnt-1.26.1 Released!!

Again, it's late at night, i've gotta be up for bed in the morning... i mean work..

Yes, wcnt-1.26.1 is now available to download from the mighty sourceforge.net servers. Use the download link on the right there--->>>

New modules, including the rudimentary polyphony implimenting modules. A snapshot_mode for the wavfile_out for adding the date and time (down to the millisecond) to the filename of the WAV being written - no need to loose them again. other stuff, meantioned below... do it, download it, compile it....

improved user_wave module handling of colliding vertices. added rate parameter to soften the square_wave...

Oh and one last thing, this website, including the documentation for wcnt is horribly out of date by now, although the general principles still apply (just - ed).

NEWS: 23rd January 2008

I've got a headache. Spent so much time on the new version, re-implimenting lists of things. Attempting to tidy the code of these lists, using generic (template) code etc. Finding that other stuff is just a complete mess. This is depressing because the speed increase I found so inspiring turns out to be a big load of nothing.

the new upcoming version of wcnt will not be twice as fast or half as slow

it turns out the developer (who shall remain nameless ;) made a slight mistake during his tests... The new version was compiled with compiler optimizations and the other was compiled without them.

This is truly depressing. Because the new version is still no nearer to working. It is faster though. For example, price_crash.wc (one of the more intensive examples) on my PC takes just over 15 seconds instead of nearly 17 seconds............... Wow! :(

NEWS: 18th January 2008

I'm still in full flow hacking away at wcnt. Some major code restructuring underneath the hood is taking place. The next release will be around twice as fast at processing or half as slow. Other features include the beginings of polyphony, and a group_control module which takes over the running of modules within a group and will stop running them if they are inaudible - or it will do that if the user sets it up correctly. other modules include a trigger router which so far is best used with another new module which echos triggers and outputs a count of how many times a particular trigger has echoed (something like that). there's a small demo of this in action on my page at my page on netbehaviour.ning.com called routed trigger echos or something to that effect. bear in mind this stuff is in development and is unavailable at the moment...............................................................

1.26 Pre-release - 2nd January 2008

The second release building up to 1.26 proper.
This time wcnt-src-1.26-pre.tar.bz2 is uploaded to sourceforge.net. Head over to downloads page to download it. A lot has changed since the "1.26 Test Release", infact much more than I anticipated. Improved command line options handling, and improved display of module list. Bugs squashed and memory leaks plugged. Several modules improved, removed, and re-created. New waveform modules providing sine, triangle, and sawtooth waveforms with a variety of ways to generate more interesting waveforms. Oh, I can't remember exactly. Tired. Lots of re-coding of things. Renaming of things. Movings and shiftings. It's better.

Something else... What was it? Hmmmm.... Ah, the next release will feature further improvements to the help so that when a module definition is displayed a description of it's workings will also display... Too. Gotta type it all up yet. Yawn.

1.26 Test Release - December 2007

Over at my main website you can download wcnt-1.26-test.tar.bz2

This new release now uses libsndfile for all file read/write operations. This allows 32 bit PCM and 32/64 bit float WAV file formats to be read/written. Please make sure you either have the source compiled and installed or the development packages for your GNU/Linux distribution.

Also, another first for wcnt, is the use of LADSPA. Because of the way wcnt works, it is not possible for every LADSPA plugin to be used, so a selection (including plugins to replace wcnt's poor inefficient filters) have been implimeted as modules. You will need the SWH and CAPS plugins sets to use them. Read the INSTALL file for more info.

Finally, new examples have been created alongside some of the old examples. I've imported some of the examples into ardour2 to create a track:

wcnt-1.26 is due to be released once I've untangled the mess I've made restructuring various 'things'.... So wcnt-1.26-test has more in common with wcnt-1.25.5 than the eventual wcnt-1.26 release will (without doing an awful lot more).

More info about wcnt-1.26-test

Tracks made with wcnt: July 2007

I've made a number of tracks which have used wcnt at some point in their production. Try this location: wcnt at jwm-art.net

wcnt-1.25 released: October 2006

This new release has focused upon making life easier for the wcnt .wc file composer. You may now group modules together and then copy the group to a new group while maintaing the input/output connection structure. The sequencer module can now repeatedly insert riffs of notes instead of you having to cut, paste, and edit them by hand. There are also several new modules.

Follow the download link on the right to download the source code from the wcnt project pages at sourceforge.net.

As always, there are plentiful examples of .wc files of varying complexity included with the source code.

This new release will no longer process wcnt-1.128 files, atleast not without making a few minor changes. The documentation on these pages has been updated and can be downloaded for viewing offline from wcnt_doc_html-1.25.tar.bz2.

There is a typo n the source code file include/linkedlist.h there's a patch to download to fix it, or, adjust line 295 of linkedlist.h so it has a get instead of a goto. (or copy patch to wcnt-1.25.5/include/ and patch -p0 < wcnt-1.25.5.linkedlist.patch). Thanks B.S.K.

wcnt-1.25.5 is the latest release.

I have 'composed' a track, vaguely resembling music, entirely with wcnt. It is a fairly simple composition consisting of some plinky planky noises, some kick drums with echos, a bassline, and a synth pad. Two samples were used, one for the kick drums, the other of me tapping spokes on a mountain bike wheel. Anyway, the name of the track is frollpap located at frollpap.tar.bz2 !!!CURRENTLY MISSSING!!!. There is frollpap.mp3 also. Release a number one with it and make yourself rich!

Aims of the wcnt audio project

wcnt's main goal is to provide modularity of synthesis, sequencing and sampling to users of lower end systems which struggle with such systems operating in real time. wcnt is not intended for creating finished and polished tracks, but as a tool for providing samples that can be used within an audio track or elsewhere.



Basic usage



Trigger modules

File inclusion

Groups and Copying





SourceForge.net Logo