tanders / cluster-engine

cluster-engine is a music constraint solver by Örjan Sanders, originally developed as a PWGL library. The present version is stand-alone without any dependencies to PWGL.
15 stars 0 forks source link

Generating scores in plain Common Lisp (without Opusmodus) #1

Closed davispolito closed 4 years ago

davispolito commented 4 years ago

Hi,

Is there an example of generating a score without opusmodus (i.e. using the cluster-engine-score and preview-score functions )?

Thank you, Davis

tanders commented 4 years ago

There are indeed many examples just implemented in plain-vanilla lisp. Have a look into the folder with test files at https://github.com/tanders/cluster-engine/tree/master/test_files. There are all examples of the original PWGL tutorial ported to Common Lisp there. A simple example is also contained in the project's readme file, again in plain Common Lisp at https://github.com/tanders/cluster-engine

Let me know if this does not answer your question :)

Apologies for my delayed response.

davispolito commented 4 years ago

Hi,

Is there documentation for what the test_files are supposed to be doing? As in what constraints they are creating?

tanders commented 4 years ago

Is there documentation for what the test_files are supposed to be doing? The original PWGL tutorial for cluster engine comes with explanations and live patches. These patches have been translated to plain Common Lisp in the folder test_files.

Unfortunately, this documentation of these patches / Lisp files is currently best readable from within PWGL. However, as PWGL patches are plain text files, you can also read them with a plain text editor or directly here at Github, though that is less convenient. However, the actual patch code in these files (which is not the code of the example) has very few line breaks, and there are few markup tags, and very few pictures (which are just file names of picts in the same directory), so it is perhaps not too bad, though not convenient. When the PWGL tutorial refers to boxes and their inputs, in the plain Lisp version these are functions and their arguments.

https://github.com/tanders/cluster-engine/tree/master/tutorial

Apologies that I cannot give a better answer at this stage.

Feel free to ask questions on the tutorial.

davispolito commented 4 years ago

Yah, i had hoped to be able to run PWGL, but it seems that the last supported MAC OS was 10.12 and I am on 10.14 :/. I think I will be able to figure it out though. I have basic experience in programs like LISP (I've used OCaml), but this is my first experience with LISP itself.

tanders commented 4 years ago

Don't hesitate to come back if you have questions concerning this tutorial. Apologies that the documentation is not in a better shape.

For getting a first overview, you might want also watch the following video (https://www.youtube.com/watch?v=xPXIRmH9rZc) introducing Cluster Engine and its extension Cluster Rules (of which there is also a plain Lisp version) within PWGL. As I said, every box in the PWGL interface corresponds to a function in Lisp. This videos is part of a short series of PWGL videos (https://www.youtube.com/playlist?list=PLmbpscTxjn_DrdDXD5v7z0GzQRNKM5VyQ) I did for my students when I was still teaching.

tanders commented 4 years ago

If you would prefer using this code within a graphical programming environment, but not PWGL, you might want to have a look at the MOZ library, which ported PWGL libraries to Max. Below I copied a message from its developer Julien Vincenot from January:

What’s new?

MOZ now exists as a Max package, fully documented in English, and compatible with Max 7 and 8.

Documentation also includes a detailed overview and new modules for the PWforMax system (Mac-only for now).

Previously hidden in the background of a few MOZ modules, this system now allows users to generate and run Lisp code in Max, and to work in real time with any library from the PatchWork / Open Music / PWGL family.

Other updates are detailed in the history.txt of the package.

How to install ?

1) First your need to download the package itself :

https://drive.google.com/open?id=1AQgKN-7GPJw2E63Tt8aMNJHLJkcKMmOA

2) You will also need the packages bach, cage and dada by Andrea Agostini and Daniele Ghisi,

you can download directly from the Package Manager in Max (File menu).

3) Then follow the remaining instructions in the READ-ME.txt — this is very important in particular for more recent OS versions like Catalina.

I hope you will enjoy using MOZ, and I’m really looking forward to your comments,

suggestions about the library as a whole (ergonomy, documentation, etc.) and inevitable bug reports !

All the best,

Julien Vincenot

mail@julienvincenot.com

davispolito commented 4 years ago

Do you know how I how I would combine your PWGL libraries with MOZ'lib? I actually downloaded and played around with MOZ'lib yesterday, but maybe missed the note where they mentioned how to convert PWGL libraries into it.

Thank you for all your help. I am looking forward to what I create with these tools. In the meantime I will continue to work on understanding the Lisp code and PWGL text files!

JulienVincenot commented 4 years ago

Hi Davis,

With Örjan Sandred we are in the process of converting the ClusterEngine to Max, in parallel of MOZ’Lib — with the same technique that is used in PWforMax.

First, I’m not sure which version you got, so the last is always the one linked on this page of my website : http://julienvincenot.com/?page_id=235 http://julienvincenot.com/?page_id=235

We didn’t publish any interface for the Cluster yet, but you could use PWforMax (documented fully in the dedicated Overview in the Extras -> MOZ’Lib menu) and the method described in the MOZ package sources folder.

Just be aware that we did already a huge part of that work of porting and designing an interface appropriate for it in Max, but it might still take some months to get it ready for the public release.

In the mean time you can get more familiar with the chainedPMC that is already available in MOZ through a few modules, which is based on similar concepts, even though it is limited to a « monophonic » approach.

Hope that helps !

Best,

Julien

Le 15 avr. 2020 à 2:03 PM, davispolito notifications@github.com a écrit :

Do you know how I how I would combine your PWGL libraries with MOZ'lib? I actually downloaded and played around with MOZ'lib yesterday, but maybe missed the note where they mentioned how to convert PWGL libraries into it.

Thank you for all your help. I am looking forward to what I create with these tools. In the meantime I will continue to work on understanding the Lisp code and PWGL text files!

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/tanders/cluster-engine/issues/1#issuecomment-614278816, or unsubscribe https://github.com/notifications/unsubscribe-auth/AELB6BXDHBCN4X7KJC3RK3DRMYOK7ANCNFSM4LW6QUMA.

davispolito commented 4 years ago

Very exciting! I am currently writing a paper about constraint satisfaction in music for a class on Computer-Aided Verification. I have already done a little bit with the ChainedPMC library and will continue to work with both MOZ'lib and the cluster engine for the duration of my project. If you are in need of any beta testers I would love to check out the unfinished product on those interfaces although I understand the possible need to keep everything locked away until fully developed.

If either of you has time to speak via skype or exchange a few emails I would love to learn more about the development of both these projects from a Computer Science perspective.

Thank you so much for your timely responses and I look forward to the continued use and development of these tools.

tanders commented 4 years ago

these projects from a Computer Science perspective

For a general overview of this field to help you writing this course paper, you might want to have a look at the following surveys.

Anders, T. (2018) ‘Compositions Created with Constraint Programming’, in Alex McLean & Roger T. Dean (eds.) The Oxford Handbook of Algorithmic Music. Oxford University Press. pp. 133--154. https://www.researchgate.net/publication/325070318_Compositions_Created_with_Constraint_Programming

Anders, T. & Miranda, E. R. (2011) Constraint Programming Systems for Modeling Music Theories and Composition. ACM Computing Surveys. 43 (4), 30:1-30:38. https://www.researchgate.net/publication/235925975_Constraint_Programming_Systems_for_Modeling_Music_Theories_and_Composition

JulienVincenot commented 4 years ago

If you are in need of any beta testers I would love to check out the unfinished product on those interfaces

Of course ! When things get a more stable shape and we get a first draft on documentation we will definitely need some help.

Can you send me an email so I can add you to the beta-test mailing list when it happens? My address is in the contact section of my website.

You can also write me your questions by email, I’d be glad to share the most specific ones with Örjan Sandred since he is the brain behind the whole project. In addition to issues of musical interfaces in Max and bach, I can reply to everything concerning the Lisp system in Max, although I described already a lot of it in this ICMC 2017 paper :

https://quod.lib.umich.edu/cgi/p/pod/dod-idx/lisp-in-max-exploratory-computer-aided-composition-in-real.pdf?c=icmc;idno=bbp2372.2017.012;format=pdf https://quod.lib.umich.edu/cgi/p/pod/dod-idx/lisp-in-max-exploratory-computer-aided-composition-in-real.pdf?c=icmc;idno=bbp2372.2017.012;format=pdf

Thanks !

Julien

Le 15 avr. 2020 à 3:06 PM, davispolito notifications@github.com a écrit :

Very exciting! I am currently writing a paper about constraint satisfaction in music for a class on Computer-Aided Verification. I have already done a little bit with the ChainedPMC library and will continue to work with both MOZ'lib and the cluster engine for the duration of my project. If you are in need of any beta testers I would love to check out the unfinished product on those interfaces although I understand the possible need to keep everything locked away until fully developed.

If either of you has time to speak via skype or exchange a few emails I would love to learn more about the development of both these projects from a Computer Science perspective.

Thank you so much for your timely responses and I look forward to the continued use and development of these tools.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/tanders/cluster-engine/issues/1#issuecomment-614303646, or unsubscribe https://github.com/notifications/unsubscribe-auth/AELB6BUG3QND3UNV57P3ZBLRMYVU5ANCNFSM4LW6QUMA.