• syntax the nerd

    dear forum.

    i'm looking for a convenient way to create simple melodies and lines out of a short hex string. currently, i'm working on a geeky text-based drum sequencer in pdlua which is already capable of creating creating a binary drum pattern from simple text/hex strings. now i want to add a melodic dimension for synth blips or basslines which are somewhat expressive, but relatively simple to construct and type in.

    so far i have come up with this 4-nibble (hex digit) version:
    "xyzz" where x is an arpeggiator function, y is the arp function parameter and zz is the base note. the arpeggiator functions might be mapped like this: 0 = ramp up 3 notes then repeat, 1 = ramp down 3 notes, 2 = ramp up 4 notes, ..., f = random note...; the arp function parameter is most likely the interval that ramp functions jump up or down. the result of the arp sequence gets added to the basenote and the resulting melody is then mapped onto the already existing drum beat structure that is sequenced independently.

    do you think this might be a worthwhile approach, or am i wasting bits and overlooking some obvious solution? maybe a array of 255 preset melodies to choose from, so 2 hex chars for this and maybe 1 char as an transposition argument or for reversing / inverting the melody or...

    i'm not looking for a way to store an arbitrary melody, but for a way to create an expressive line out of as few chars as possible. i'd be interested to hear if any of you had other ideas, or maybe even ideas of arp functions fitting into the above model.

    yours truly,

    posted in technical issues read more
  • syntax the nerd

    hi forum.

    we proudly announce the first public release of our compact composer
    for pd, mmm.
    grab it at http://netpd.org/mmm-0.1.0.zip
    mmm is best described in it's faq, see below. don't expect too much
    yet, there is still a lot to be done. comments, bugreports, cash, are

    have fun with it!
    christopher charles & enrique erne

    faq for mmm-0.1.0 - eden

    what is mmm?
    mmm is a pd patch collection aimed at providing a studiolike(?),
    streamlined, dynamic interface for making synthetic music.

    ymmv depending on your operating system. we put some effort in
    detecting the operating system and setting the fontsize according to
    it, but quirky xorg or dpi settings might screw things up again.

    where can i get it?
    we currently host the mmm at http://netpd.org/mmm-0.1.0.zip ,
    alternatively, you can grab netpd, enter the chat, and if either of
    the authors is online, download it directly through netpd and start

    what does "mmm" stand for?
    mmm was originally just the working title, but we came to like it
    somehow. the original meaning is "music making machine" but you can
    substitute every m for whatever you want. so "massive multiplayer
    music" is okay with us, too.

    what is the inspiration?
    having worked on/with the bagoftricks (lots inconsistently coloured
    gop-patches to be connected freely) and netpd (lots of
    inconsistent-looking windows to clutter up the screen), we came to
    mock up an clean, dynamic interface in which modules don't bring their
    own gop or open their own window, but log onto the interface that's
    provided for them by the motherpatch. all modules sharing the same
    interface made it easy for them to share the same sequencer and

    what are the dependencies?
    mmm should work with pd-0.39 and zexy installed. iemlib is important
    for many synth and effects patches, and there's even set of gem
    modules you can chain if you want.

    is it actually usable?
    no. this 0.1.0 release is rather a tech demo and a taste of things to
    potentially come. you can crunch some acid loops out of it already,
    but don't sell your protools studio equipment to start working with
    mmm on monday.

    how does it work?
    mmm's interface (mmmmain.pd) is divided into 3 parts: there is the
    module/channel view, where you can chain up synths and effects on 8
    different channels. select an empty field on a channel, and then use
    the scrollbox on the left to select a patch and open it. when clicking
    on a patch you loaded up in the module view, the 2nd view comes into
    play: from there you control the patch's sliders on the left, right of
    it is the stepsequencer for each of the slider (means everything is
    sequencable!). yet you won't hear anything until you did the following
    2 things: press play in the uppermost row of mmmmain, and set up the
    arranger to play the stepsequence. the arranger is not module-based,
    but controls all modules of a channel are grouped in the arranger. for
    now, you can only select pattern 01 or nothing to play in the
    arranger. so set up a loop for the first pattern (loopstart:0,
    looplength:1) set the first field on the channel you got your patch on
    in the arranger to p01 and start making some noise.

    does it work online?
    yes. mmm is compatible to netpd and will automatically log on to
    netpd's server if you have the netpd chat open. you can also download
    the whole mmm package through netpd. feel free to jam around the

    what's not working yet / what is planned?
    as for now, there is no support for samples whatsoever, it isn't
    planned to support them soon. further, there is no hard disk recorder
    available yet, but it is planned. the arranger/sequencer combo is very
    crippled at the moment, only supporting 1 16-step-pattern to choose
    from and 1 page of 16 patterns in the arranger. this will change
    rather soon. next there are plans for luxury editing functions,
    especially in the sequencer like copy, paste, random pattern,
    interpolation and so on. plans exist for full keyboard control, but
    this will be worked on not too soon. the module roster is far from
    being complete yet, more is to come.

    can i save my stuff?
    should be possible with the buttons above the channels. don't rely on
    the result though, this is still 0.1.0 :)

    can i add my own modules?
    modules are not to hard to write, but for now, the list of selectable
    modules is hardcoded. look at all the 4m-* patches in the patches
    folder to see how they are ticking. contact us for adding your patch
    to the mmm or try to figure out yourself how it works ;)

    what's the license?
    mmm is licensed under the gnu lgpl. if you think this is a too useful
    product to be free of charge, please consider donating the amount of
    money you would've paid for it (or the amount of money you got from
    selling your protools equipment on monday) to a trust of your choice.

    who are the authors?
    mmm is developed by enrique erne (eni, swiss, pd{at}mild.ch) and
    christopher charles (syntax_tn, germany, chr.m.charles{at}gmail.com).
    we can be contacted via email, irc (#dataflow) or directly in the
    netpd chat. several patches within mmm are based upon netpd versions
    of them, check netpd for the original authors. mmm shares some of it's
    netcode with netpd, by roman haefeli.

    we cannot give you any guarantees on using mmm, not even that you
    have fun. it should be relatively harmless, but don't come crying to
    us if mmm accidently hijacks your *mule and downloads david hasslehoff
    recordings to your computer.


    posted in news read more
  • syntax the nerd

    hi forum.

    i dunno if announcements of this kind belong to the abstractions forum, the patches one or the news one (maybe even the pd-announce mailing list?) but for i wish to share my pack of abstractions with the community, i file it under abstract~.
    for those of you who use pd mainly for music synthesis, my bagoftricks might be interesting, i announced it already (0.2.6) together with that shameful electro track i posted here (yes, i can do better ;).

    here's the new version 0.2.8:
    [url=https://www.puredata.org/Members/syntax_the_nerd ]https://www.puredata.org/Members/syntax_the_nerd

    from the changes.txt (since 0.2.6):

    -added bot.wshaper, capable of cosine, polynomic and some other transform
    -fixed pitch bug in bot.blubber, much more usable on idm drums now
    -added bot.chord, simple number to harmonic group of numbers converter
    -repaired a bunch of ugly bugs in bot.plucker. should be in tune now and cpu
    -added bot.paraeq single 2p-bandpass wrapper
    -slightly changed bot.distort's behaviour
    -added a volume control to bot.blip
    -changed bot.filter from using bot.synth2's vcf filterboxes to regular
    lp/hp/bp's. saves a lot of cpu, they weren't signal controlled anyway
    -bot.revplay can now play forward. idm retriggers hooray!
    -added bot.kmute, a keyboard-controlled spigot scheduler
    -added "please hurt" to the bot-song-archive
    -nailed down some cpu leaks
    -added some cpu leaks
    -added bot.pong ;) not really finished yet, though, but fun to watch (beware, it
    drains some cpu cycles)
    -added a new hihat sound to bot.minidrm
    -some bugs added, some fixed
    -extended bot.sq-piano somewhat
    -crippled bot.sq, now depends heavily on bot.sq-piano

    enjoy, and don't forget to mail comments, flames or tracks to me.

    posted in abstract~ read more
  • syntax the nerd

    hi all.
    this is my first post in this nice forum which i recently discovered. i'd like to say hello in form of offering a track i just finished some minutes ago using my bagoftricks abstraction collection:

    [url=https://www.puredata.org/Members/syntax_the_nerd/pleasehurt ]https://www.puredata.org/Members/syntax_the_nerd/pleasehurt

    i know it's not really good, but maybe thats due to the fact i don't even like electro, nor listen to it usually. the drums are boring, the melodies dull, and please don't mention the bassline, but anyway, all is done in pd within about 2-3 hrs, even the sequencing (semi-live, like scheduling step-sequenced loops with keyboard commands). no samples in this one, just pure synthesis. comments welcome.

    if you're interested, feel free to peek into my bagoftricks abstraction collection, offering a very compact pseudo-modular synth, a shabby physmod guitar synth, 2 1/2 drumsynths, a modular sequencer which is a pain in the ass to use, a whole bag of standard effects (from reverb to pixelator, eq to compressor),pseudo-cpu-management, some example loops, eyecandy sliders, and best of all: a (highly unfinished) tutorial. needs iemlib. no samplers here, no OSC, no nothing. just an attempt to rob all the artistic freedom from pd and push it into step-sequence sized quanta. depending on what you plan to do with it, it will need a decent cpu.

    [url=https://www.puredata.org/Members/syntax_the_nerd ]https://www.puredata.org/Members/syntax_the_nerd

    the track you might have downloaded earlier will be included in patch form in the next release (0.2.7) of the bagoftricks.

    thank you for your patience,

    posted in output~ read more
  • syntax the nerd


    ClaudiusMaximus: nice one. it also works when the tabread seq is altered by a variable [mod x]->

    • -> [whatever z] -> ... combination, that way i can define nice basslines by just a few variables. by the way, thanks for pdlua, the logic of my drumcomputer would not be possible without it.


    posted in technical issues read more
  • syntax the nerd

    ok, i'm reading up on noergaard and i just read that under certain conditions, the infinity series can be a thue-morse.series (which i'm already toying with). the thue-morse-sequence can itself be created by an l-system as sunji recommended in the first reply. the infinity series can be built (or rather looked up at playtime) very simple, too, by bitcounting (which i already implemented for thue-morse). so things start falling into shape here. now i need to represent sets of parameters for these methods, textually.

    thanks again.

    posted in technical issues read more
  • syntax the nerd


    i'm familiar with the basics about schönberg's twelve tone technique, but serial composition does not ring a bell to me.
    anyway I'm not sure the result would fit into my current concept. actually i'm not looking for anything that goes too deep into composition but rather for a lightweight accompaniment to the drums (which might later grow into more).
    for now, i'm experimenting with a simple variation of the thue-morse sequence which is able to produce self-similar melodies but lacks variation after a while.
    I definitely need to read up on serial composition, it might be a nice addition to my palette.

    another thing: you accused me of taking a very 'synth' angle on composition. i'm afraid this is even more true as i'm thinking within a rastered box of time signatures and note values (even if in a different syntax than traditionally used). i should expand my horizon to synthesis approaches that go beyond "play note X at time Y" and play with sound synthesis in a somewhat 'freer' way (e.g. evolving pads, noodling modular synths), and then find a suitable 'notation' for this. but for now i should rather focus on the basic drum sequencing and user interface.

    thanks so far everyone.

    posted in technical issues read more
  • syntax the nerd

    sorry for taking the zip offline, but some months ago i kinda abandoned the bagoftricks project. i wanted it to become my swiss army knife of pd composition and even if i did kinda well on the synthesis/effects part (maybe not in this release, i have newer, unreleased patches lying around here) my pain in the ass always was sequencing. i wrote several (around 8?) different sequencer/arranger solutions for bot, following different concepts, but none of them allowed me the quick workflow i wanted to achieve. having a song idea in my head always took me about 5 minutes to get some synths set up right and then another 10 minutes to write a (looping) sequence that is longer than 16 ticks. after those 15 minutes i forgot my original song idea, noodled around with long fx chains. all this never resulted in songs longer than 2 minutes, so for my part, the bot wasn't worth it, workflow-wise.
    i've began a rewrite of the bot, reusing some dsp code, but taking different approaches on other aspects, but it now already suffers the same workflow problems the original bot had.
    maybe if someone came up with a great, flexible, yet easy to deploy and easy to use sequencer/arranger solution i might take up the work again, but for now i'm heading elsewhere.


    posted in abstract~ read more
  • syntax the nerd

    hi again.

    big oops! looks like we forgot to mention that you have to add the
    abs/ folder to your pd paths for it to work properly. or alternatively
    copy over mmmmain.pd into the abs folder and start it from there.
    sorry for this. the faq will be updated on the next release then.


    posted in news read more
  • syntax the nerd

    [vd~] will be your friend for this one. first, you'll have to specify how long the segment you want to play back in reverse is, for you oviously can't reverse something continuously. then you need a vd~ initially at twice the delay time that the length of your reverse segment. now we'll take a line~ to fade the length of the vd~ from (2 x segment length) to 0, within the length of a segment. you can loop this behaviour to get a more or less continuing effect, but beware that the reverse-delay rhythm has to hit your musical rhythm in some way, for otherwise it would sound queer


    posted in technical issues read more
  • syntax the nerd

    arg. this forum eats up multiple spaces! :(
    i'll just put it in words again: connect a [keyup] to a [pipe 60], what comes out of the pipe will later become your new, retrigger-free keyup. now connect a [key] element to a [clear( message heading into the pipe. also, connecect this [key] to a [change] and connect the pipe outlet to a [set 0( message which heads into the same [change]. the outlet of the change is your retrigger-free key function.

    hope you figure out with help of the "graphic"


    posted in technical issues read more
  • syntax the nerd

    actually that's not a bug, it's a feature. at bios level, from where the keypresses are routed to the operating system, there are two parameters that define the delay before a key is being "retriggered", and the rate at which it is doing so. some bios's let you change these values, but you can have a solution from within pd which won't alter all the other programmes' behaviour: (yeah, ascii pd sucks)

    [key] [keyup]
    |\ |
    | [clear( |
    | \ /
    | &#92; / <- both connections head for the left inlet of the pipe
    | [pipe 60]
    | | &#92; <- and both connections come from the left outlet
    | [set 0( &#92;
    | / &#92;
    [change] &#92;
    | &#92;
    | &#92;
    key out keyup out <- both retrigger free

    of course this will add a latency to keyup events and swallow keypresses coming faster than 16 Hz, but that's the way i would've done it without changing bios or hardcoding customized key objects. try increasing the pipe delay if there's still retriggers for you.
    somehow i think there's an even simpler solution to this....


    posted in technical issues read more
  • syntax the nerd


    actually the drum synths are very simple in general, i just added lots of stuff to make them look more complex (well, ok, and to make them function a bit smoother).
    i've not shared it in the patches section yet, because i did not really think people do look there that often. (and maybe because previous versions were still a bit unpolished) i'll pack it there on the next release (0.2.7) tomorrow or so.


    posted in output~ read more
Internal error.

Oops! Looks like something went wrong!