Jump to content


Photo

New Tool (2.8): Clip Composing Language


  • Please log in to reply
19 replies to this topic

#1 elmex

elmex

    Local Chief Member

  • Normal Members
  • PipPipPipPipPip
  • 209 posts

Posted 06 February 2013 - 20:02

Hi all!

I've recently been messing around with my clip based composition tools, and
started with a new approach. The Clip Arranger/Composer I programmed about a
year ago was quite complicated, at least the GUI for the composer was quite
complex. ( http://forum.renoise...page__p__269923 )

So what I came up with, was to create a sort of programming language for
transforming, positioning, (randomly) selecting the contents of clips. It's not
thought to arrange the final form of a track, but more as an artistic tool to
initially fill some patterns from the material you already have. Additionally
it allows you to create effect column interpolations and automation curves with
arbitrary mathematical formulars.

So, imagine the ability to define clips like in the Clip Arranger, but instead
of a GUI for configuring follow actions you have a small domain specific
language to define how the clips are placed and mangled, with the ability to
abstract away bigger passages.

The state of the tool: The tool is done, the language is implemented and
tested. Whats not done is the documentation, which still misses a some parts.

Here is the documentation of the language:
Clip
Composing Language - Reference

There are some examples and the documentation of the main parts is mostly done.

I hope someone finds this useful, I wrote it mostly for myself to improve my
own workflow.

You can Download it here: http://ue.o---o.eu/d...ngLanguage.xrnx

If you need more examples of CCL code you can look in the test directory. The tests there
cover nearly every aspect of the CCL syntax and most of the semantics:
http://ist.m8geil.de...x.hg/file/tip/t

And here is a short workflow gif demo:

Posted Image

Edited by elmex, 25 February 2013 - 17:06.

  • jiku, .xrns and Cas like this

#2 KMaki

KMaki

    Big Super Masta Member

  • Normal Members
  • PipPipPipPipPipPipPipPipPipPip
  • 672 posts
  • Gender:Male
  • Location:Tampere, Finland
  • Interests:Survival (e.g. breathing). Small scale renoise-tool-coding. The Melvins. Absurdity of it all. Zen / Not-zen. Wifey&Kids.

Posted 06 February 2013 - 21:14

That seems REALLY interesting! Keep pushing it towards a release! :yeah:
Renoise (2.6->) 2.8 / Mac mini 2010 - 2.66GHz Intel Core 2 Duo - 4 Gb 1067 MHz DDR3 / OS X 10.8 / M-Audio Fast Track USB

#3 .xrns

.xrns

    Chief Above Chief Member

  • Normal Members
  • PipPipPipPipPipPip
  • 312 posts
  • Gender:Male

Posted 06 February 2013 - 21:18

Very interesting, this is definitely going in the right direction.

:dribble:/>



-


#4 vV

vV

    God's or Borg's Chief and Ruler of All Species

  • Moderator
  • PipPipPipPipPipPipPipPipPipPipPipPipPipPipPipPip
  • 16855 posts
  • Gender:Male
  • Location:Netherlands

Posted 06 February 2013 - 21:18

Scripting inside scripting...
The idea to create a cross compiler for C-sound score files in lua crossed my mind once.... But you can't translate everything in score files to Renoise output (C-sound is pretty versatile).
This approach might work better.
Vv....


cpu Intel Core i7-4820K @3.70GHz
chipset Intel X79 chipset
mem 32 Gb 2400Mhz
os Win 7 64-bit SP1, DirectX 11
audio ESI ESP1010e - > Driver rev:2.0.6.0
video nVidia Geforce GTX780 - > Driver rev:335.23


Renoise Official Manual

#5 Cas

Cas

    Guruh Motha Fakka is Levitating and Knows Everything About Renoise Member

  • Normal Members
  • PipPipPipPipPipPipPipPipPipPipPipPipPip
  • 1719 posts
  • Gender:Male

Posted 07 February 2013 - 03:04

+1
I'm a fan
Exactly what I should've made for the drum track(s) on my submission to the EatMe compo

Plans on releasing?
I just want to say, awesome work, please know that the Overtune tool.. don't know really if a lot of people use it, but the point is: when I dropped it here at first it was not very 'userfriendly' at all but the support on the forums had me go on with it and improve it.

music: SoundCloud drumkits: WizzKit no. 01 (thread), 02 (thread), 03 (thread), 04
tutorials: Beat Creators, Drum Synthesis examples
tools: download@box, info@blog, fork@git, discuss@forum
___________

BCF2000, LP S, MPK, nPad2, nKtrl2, NI KA6, Vortex, SP-404SX

Renoise, NI Reaktor


#6 elmex

elmex

    Local Chief Member

  • Normal Members
  • PipPipPipPipPip
  • 209 posts

Posted 07 February 2013 - 13:46

Plans on releasing?


Sure! I've implemented writing the pattern data and importing/exporting
the clip composing language program texts to/from files. A small
code cleanup, finishing documentation and packaging it needs to be done
still.

#7 Akiz

Akiz

    Guruh Motha Fakka is Levitating and Knows Everything About Renoise Member

  • Normal Members
  • PipPipPipPipPipPipPipPipPipPipPipPipPip
  • 1000 posts
  • Gender:Male

Posted 07 February 2013 - 14:01

Nice idea but do you know about ReNoam? ;)
If i understand You are developing same thing but with different language, right?

#8 elmex

elmex

    Local Chief Member

  • Normal Members
  • PipPipPipPipPip
  • 209 posts

Posted 07 February 2013 - 15:13

Nice idea but do you know about ReNoam? ;)
If i understand You are developing same thing but with different language, right?


Yea, I know ReNoam, it's kind of similar. But CCL is more fine grained. ReNoam
only allows you to define which patterns (identified by numbers as far as i
understand it) to use. CCL allows you to make clips from any number of lines in
your track, it allows you to handle your bassdrum track differently from the
snaredrum track for instance. Where in ReNoam you had to decide what the
contents of the individual tracks of a pattern had to have.

And of course the language is different. CCL is has a more constructive
approach to "build" your composition, you take your clips, and mangle, select,
loop, align and bring them into sequence.

Further plans/ideas I have for CCL, in case it proves useful, are that you
could add transformation operations that allow you to transform your lines on
the fly. eg. transpose the melody, apply some random grove/pattern in the
delay track, or create automation/fx ramps.
But I worry that those transformations are not that useful to the creative
process, because if you want to actually edit your notes/fx/events then you
should use the proper tool for that, and that would be the Renoise
pattern editor and not some weird programming language :) So I focus on a more
basic and simple language for now.

#9 elmex

elmex

    Local Chief Member

  • Normal Members
  • PipPipPipPipPip
  • 209 posts

Posted 07 February 2013 - 20:02

Just FYI, I updated the documentation, it covers all constructs now:
Clip Composing Language Readme

#10 KMaki

KMaki

    Big Super Masta Member

  • Normal Members
  • PipPipPipPipPipPipPipPipPipPip
  • 672 posts
  • Gender:Male
  • Location:Tampere, Finland
  • Interests:Survival (e.g. breathing). Small scale renoise-tool-coding. The Melvins. Absurdity of it all. Zen / Not-zen. Wifey&Kids.

Posted 07 February 2013 - 20:11

I would be really interested to see how you built the tool. I had a go at parser building with lua myself, but being a complete novice, it quickly got out of hand. Didn't really know how those are programmed... So eagerly waiting to have a peek!
Renoise (2.6->) 2.8 / Mac mini 2010 - 2.66GHz Intel Core 2 Duo - 4 Gb 1067 MHz DDR3 / OS X 10.8 / M-Audio Fast Track USB

#11 elmex

elmex

    Local Chief Member

  • Normal Members
  • PipPipPipPipPip
  • 209 posts

Posted 07 February 2013 - 20:34

I would be really interested to see how you built the tool. I had a go at parser building with lua myself, but being a complete novice, it quickly got out of hand. Didn't really know how those are programmed... So eagerly waiting to have a peek!


Oh, of course. Here is my mercurial hg repository. Have a look:

http://ist.m8geil.de...ile/tip/ccl.lua

It's a simple recursive descent parser, which uses closures and a helper class to hold state to build the
execution tree. It's not really a parser "by the book", but it works and is reasonably short. My experience
in writing parsers and language implementations and my major subject (compiler construction) in my studies
helped a lot getting it down and working so quickly.

#12 danoise

danoise

    Probably More God or Borg Than Human Member

  • Renoise Team
  • PipPipPipPipPipPipPipPipPipPipPipPipPipPipPip
  • 6873 posts
  • Gender:Male
  • Location:Berlin
  • Interests:wildlife + urban trekking

Posted 08 February 2013 - 01:10

Have a look


Next level stuff. Seems very well organized.

Are you already using CCL yourself?

Tracking with Stuff. API wishlist | Soundcloud


#13 elmex

elmex

    Local Chief Member

  • Normal Members
  • PipPipPipPipPip
  • 209 posts

Posted 08 February 2013 - 01:34

Are you already using CCL yourself?


Hehe, the idea and implementation came pretty quick. I didn't
have enough time to actually work with it on a 'real' track.
Of course it was tested with some test content :)

#14 elmex

elmex

    Local Chief Member

  • Normal Members
  • PipPipPipPipPip
  • 209 posts

Posted 18 February 2013 - 16:13

Just FYI, I've updated the documentation a bit, with all the new stuff that came to my mind and which I implemented:
http://ist.m8geil.de.../reference.html

(As you can see from the repository history, I've been working on it constantly.)
  • .xrns likes this

#15 elmex

elmex

    Local Chief Member

  • Normal Members
  • PipPipPipPipPip
  • 209 posts

Posted 23 February 2013 - 14:32

Updated the first post and added the release, even though the documentation is not completely finished.
Maybe someone already has some fun with it.
  • Djeroek, afta8 and .xrns like this

#16 afta8

afta8

    Big Super GrandMasta Member

  • Normal Members
  • PipPipPipPipPipPipPipPipPipPipPip
  • 751 posts
  • Gender:Male
  • Location:London

Posted 25 February 2013 - 15:21

Wow.. this is very impressive, it goes deep :)


I'm just scratching the surface and making polyrythmic beats with it, it's so good! Is it is possible to make clips out of multiple tracks or tracks in a group?

#17 elmex

elmex

    Local Chief Member

  • Normal Members
  • PipPipPipPipPip
  • 209 posts

Posted 25 February 2013 - 16:52

Is it is possible to make clips out of multiple tracks or tracks in a group?


Group tracks! Good idea, I made clip() aware of track groups in version 1.06 (you may update
anytime). That means you can now make a clip in a group track, and when using clip() it will return
a collection which will also contain the contents of the group members.

You can read about that here:
http://ue.o---o.eu/d....html#sec_clips


Oh, and btw. if you need more CCL examples, you can browse the test directory:

http://ist.m8geil.de...x.hg/file/tip/t

Edited by elmex, 25 February 2013 - 17:04.


#18 Djeroek

Djeroek

    Probably More God or Borg Than Human Member

  • Normal Members
  • PipPipPipPipPipPipPipPipPipPipPipPipPipPipPip
  • 6763 posts
  • Gender:Male
  • Location:Borneo

Posted 26 February 2013 - 02:53

Very cool! Going through the reference right now, algorithmic composition in Renoise ftw!

#19 elmex

elmex

    Local Chief Member

  • Normal Members
  • PipPipPipPipPip
  • 209 posts

Posted 26 February 2013 - 04:29

I've updated the tool again, to version 1.07.
Changelog can be found at http://ue.o---o.eu/d...l#sec_changelog
Also extended the documentation about user defined sources & operations: http://ue.o---o.eu/d...ec_user_defined
  • .xrns likes this

#20 elmex

elmex

    Local Chief Member

  • Normal Members
  • PipPipPipPipPip
  • 209 posts

Posted 26 February 2013 - 14:29

Btw. with the now released version 1.08 you can access and transform the pattern editor selection directly using selection() and "Save & Exec Selection". This allows you to implement your own "advanced edit" operations.

Edited by elmex, 26 February 2013 - 14:30.

  • Djeroek and .xrns like this