books – Parerga und Paralipomena http://www.michelepasin.org/blog At the core of all well-founded belief lies belief that is unfounded - Wittgenstein Wed, 10 Oct 2012 14:59:57 +0000 en-US hourly 1 https://wordpress.org/?v=5.2.11 13825966 Composing at the metalevel http://www.michelepasin.org/blog/2012/03/09/composing-at-the-metalevel/ http://www.michelepasin.org/blog/2012/03/09/composing-at-the-metalevel/#comments Fri, 09 Mar 2012 12:20:17 +0000 http://www.michelepasin.org/blog/?p=1109 I’ve started reading “Notes from the Metalevel: An Introduction to Computer Composition“, by Heinrich Taube, and realised I should have done that a long time ago!

Notes From the Metalevel is a practical introduction to computer composition. It is primarily intended for student composers interested in learning how computation can provide them with a new paradigm for musical composition.

I happened to have a pdf version of the book, but the good news is that there’s an html version of it too, which includes also all the midi files of the numerous examples included in the book. So make sure you check that out, if you’re interested in computer-based composition. You might also be interested in this review on computer music journal, and this course materials from Taube’s class at Illinois.

The preface to the fist chapter contains this suggestive excerpt from Leonard Schlain’s book, The Alphabet Versus the Goddess, which Taube (page 19-20) uses as a metaphor of what algorithmic composition (i.e., metalevel composition) is::

The one crowded space in Father Perry’s house was his bookshelves. I gradually came to understand that the marks on the pages were trapped words. Anyone could learn to decipher the symbols and turn the trapped words loose again into speech. The ink of the print trapped the thoughts; they could no more get away than a doomboo could get out of a pit. When the full realization of what this meant flooded over me, I experienced the same thrill and amazement as when I had my first glimpse of the bright lights of Konakry. I shivered with the intensity of my desire to learn to do this wondrous thing myself.
(spoken by Prince Modupe, a west African prince who learned to read as an adult)

It is impossible to know exactly how Prince Modupe felt when he discovered a process by which his very thoughts could be trapped and released at will again into speech. But I think his epiphany must be close to what I experienced when, as a young composer, I was first shown how I could use a computer to represent my musical ideas and then “release them” into musical compositions.
At that instant it became clear to me that there was an entire level of notation above the scores that I had been writing in my regular composition classes, a level I knew nothing about! But I could see that in this level it was possible to notate my compositional ideas in a precise manner and work with them in an almost physical way, as “trapped words” that could be unleashed into musical sound whenever I wanted.

So what does it meant to compose at the meta level?

Given the existence of the acoustic and score representations one might ask if there is yet another representation that constitutes a level of abstraction above the performance score? The answer, of course, is yes; it is what this book terms the metalevel. If the score represents the composition then the metalevel represents the composition of the composition. A metalevel representation of music is concerned with representing the activity, or process, of musical composition as opposed to its artifact, or score.

This book is about using the computer to instantiate this level: to define, model and represent the compositional processes, formalism and structures that are articulated in a musical score and acoustic performance but are not literally represented there. By using a computer the composer can work with an explicit metalevel notation, or language, that makes the metalevel as tangible as the performance and acoustic levels.

 

]]>
http://www.michelepasin.org/blog/2012/03/09/composing-at-the-metalevel/feed/ 1 1109
Python links (and more) 7/2/11 http://www.michelepasin.org/blog/2011/02/03/python-links-and-more-7211/ Thu, 03 Feb 2011 15:23:21 +0000 http://www.michelepasin.org/blog/?p=1075 This post contains just a collection of various interesting things I ran into in the last couple of weeks… they’re organized into three categories: pythonic links, events and conferences, and new online tools. Hope you’ll find something of interest!

Pythonic stuff:

  • Epidoc
    Epydoc is a handy tool for generating API documentation for Python modules, based on their docstrings. For an example of epydoc’s output, see the API documentation for epydoc itself (html, pdf).
  • PyEnchant
    PyEnchant is a spellchecking library for Python, based on the excellent Enchant library.
  • Dexml
    The dexml module takes the mapping between XML tags and Python objects and lets you capture that as cleanly as possible. Loosely inspired by Django’s ORM, you write simple class definitions to define the expected structure of your XML document.
  • SpecGen
    SpecGen v5, ontology specification generator tool. It’s written in Python using Redland RDF library and licensed under the MIT license.
  • PyCloud
    Leverage the power of the cloud with only 3 lines of python code. Run long processes on the cloud directly from your shell!
  • commandlinefu.com
    This is not really pythonic – but nonetheless useful to pythonists: a community-based repository of useful unix shell scripts!
  • Events and Conferences:

  • Digital Resources in the Humanities and Arts Conference 2011
    University of Nottingham Ningbo, China. The DRHA 2011 conference theme this year is “Connected Communities: global or local2local?”
  • Narrative and Hypertext Workshop at the ACM Hypertext 2011 conference in Eindhoven.
  • Culture Hack Day, London, January 2011
    This event aimed at bringing cultural organisations together with software developers and creative technologists to make interesting new things.
  • History Hack Day, London, January 2011
    A bunch of hackers with a passion for history getting together and doing experimental stuff
  • Conference.archimuse.com
    The ‘online space for cultural informatics‘: lots of useful info here, about publications, jobs, people etc.
  • Agora project: Scholarly Open Access Research in European Philosophy
    Project looking at building an infrastructure for the semantic interlinking of European philosophy datasets
  • Online tools:

  • FactForge
    A web application aiming at showcasing a ‘practical approach for reasoning with the web of linked data’.
  • Semantic Overflow
    A clone of Stack Overflow (collaboratively edited question and answer site for programmers) for questions ‘about semantic web techniques and technologies’.
  • Google Refine
    A tool for “working with messy data, cleaning it up, transforming it from one format into another, extending it with web services, and linking it to databases”.
  • Google Scribe
    A text editor with embedded autocomplete suggestions as you type
  • Books Ngram Viewer
    Tool that displays statistical information regarding the use of user-selected sentences in a corpus of books (e.g., “British English”, “English Fiction”, “French”) over the selected years
  • ]]>
    1075
    Learning resources about Scheme http://www.michelepasin.org/blog/2010/08/10/learning-resources-about-scheme/ Tue, 10 Aug 2010 17:27:17 +0000 http://www.michelepasin.org/blog/?p=808 3eangz5w.jpg

    So you’ve decided to know everything about scheme and rock the world using fast-paced programming environments like Impromptu.
    Well, I confess I did think that on several occasions, but still I haven’t made it even half way through the schemer pilgmim’s path. But I’ve collected quite a few useful resources in the process, and those I can certainly share!

    So in what follows I’ve put together a list of learning resources about Scheme that I found useful.. First off, two links that might be useful in all situations:

  • Little Scheme, an online interpreter that you can use for testing things out while you’re on holidays
  • Schemers.org, semi-official website containing news and lots of links to other resources
  • Now, why don’t we start with the definition offered by the self-regulating wikipedia collective intelligence? Here we go:

    Scheme is one of the two main dialects of the programming language Lisp. Unlike Common Lisp, the other main dialect, Scheme follows a minimalist design philosophy specifying a small standard core with powerful tools for language extension. Its compactness and elegance have made it popular with educators, language designers, programmers, implementors, and hobbyists, and this diverse appeal is seen as both a strength and, because of the diversity of its constituencies and the wide divergence between implementations, one of its weaknesses

    If this blurb hasn’t made you proud of learning such a slick language, you’ll surely find more interesting ideas in what follows. I divided up the list in two sections, generic learning materials about scheme, and tutorials about specific topics (for now, only macros are included).
    ———————————-

    1. Learning Resources About Scheme:

  • Scheme for Common Lispers, article

    The Scheme dialect of Lisp was created in 1975 by Guy Steele and Gerry Sussman to explore ideas in programming-language semantics. They showed that a powerful language can be made “not by piling feature on top of feature, but by removing the weaknesses and restrictions that make additional features appear necessary”. Scheme pioneered lexical scope in Lisp, first-class continuations, and tail recursion, and more recently added an advanced macro system. It’s the best-known Lisp dialect after Common Lisp (which it influenced).
    This note summarizes the differences from CL that might slow down a CL programmer trying to read a Scheme program; people without a CL background, or wanting to write programs of their own, should see the references.

  • the Schematics Scheme Cookbook

    The Schematics Scheme Cookbook is a collaborative effort to produce documentation and recipes for using Scheme for common tasks. See the BookIntroduction for more information on the Cookbook’s goals, and the important ContributorAgreement statement.

  • Harvey, Wright, Simply Scheme: Introducing Computer Science, 1999 MIT press [a classic]

    Symbolic programming is one aspect of the reason why we like to teach computer science using Scheme instead of a more traditional language. More generally, Lisp (and therefore Scheme) was designed to support what we’ve called the radical view of computer science. In this view, computer science is about tools for expressing ideas. Symbolic programming allows the computer to express ideas; other aspects of Lisp’s design help the programmer express ideas conveniently. Sometimes that goal comes in conflict with the conservative computer scientist’s goal of protection against errors.

  • Felleisen, Findler, Flatt, Krishnamurthi, How to Design Programs An Introduction to Computing and Programming, MIT 2001

    [..] programming is more than just a vocational skill. Indeed, good programming is a fun activity, a creative outlet, and a way to express abstract ideas in a tangible form. And designing programs teaches a variety of skills that are important in all kinds of professions: critical reading, analytical thinking, creative synthesis, and attention to detail.
    We therefore believe that the study of program design deserves the same central role in general education as mathematics and English. Or, put more succinctly, everyone should learn how to design programs.
    On one hand, program design teaches the same analytical skills as mathematics. But, unlike mathematics, working with programs is an active approach to learning. Interacting with software provides immediate feedback and thus leads to exploration, experimentation, and self-evaluation. Furthermore, designing programs produces useful and fun things, which vastly increases the sense of accomplishment when compared to drill exercises in mathematics. On the other hand, program design teaches the same analytical reading and writing skills as English. Even the smallest programming tasks are formulated as word problems. Without critical reading skills, a student cannot design programs that match the specification. Conversely, good program design methods force a student to articulate thoughts about programs in proper English.

  • Dybvig, The Scheme Programming Language, 2003MIT press

    This book is intended to provide an introduction to the Scheme programming language but not an introduction to programming in general. The reader is expected to have had some experience programming and to be familiar with terms commonly associated with computers and programming languages. The author recommends that readers unfamiliar with Scheme or Lisp also read The Little Schemer [see below]to become familiar with the concepts of list processing and recursion. Readers new to programming should begin with an introductory text on programming.

  • Nils M Holm, “Sketchy LISP” [you can download the book here Update 08/12: this book has become ‘Sketchy Scheme’ and is now for-sale here]

    Sketchy LISP is a step-by-step introduction to functional programming in Scheme. It covers various aspects of the language including data types, conditional evaluation, list processing, lexical scoping, closures, recursion, dynamic typing, etc. By means of numerous examples of varying complexity, it takes the reader on an entertaining and informative tour through the language.
    The Scheme language achieves what only few languages have managed before: to bring fun back to programming. Its simple syntax, clean semantics, and powerful functions open the door to a fresh perspective on program design. Programming in Scheme is fun, and this book is an attempt to share some of that fun.

  • Friedman and Felleisen, The Little Schemer, 1996 MIT press

    The goal of this book is to teach the reader to think recursively. Our first task, therefore, is to decide which language to use to communicate this concept. There are three obvious choices: a natural language, such as English; formal mathematics; or a programming language. Natural languages are ambiguous, imprecise, and sometimes awkwardly verbose. These are all virtues for general communication, but something of a drawback for communicating concisely as precise a concept as the power of recursion. The language of mathematics is the opposite of natural language: it can express powerful formal ideas with only a few symbols. We could, for example, describe the entire technical content of this book in less than a page of mathematics, but the reader who understands that page has little need for this book. For most people, formal mathematics is not very intuitive. The marriage of technology and mathematics presents us with a third, almost ideal choice: a programming language. Programming languages are perhaps the best way to convey the concept of recursion. They share with mathematics the ability to give a formal meaning to a set of symbols. But unlike mathematics, programming languages can be directly experienced—you can take the programs in this book and try them, observe their behavior, modify them, and experience the effect of your modifications.

  • The Weiner Lectures Archives [various videos, but not complete lectures unfortunately]

    The goal of this project is to make knowledge of computer science easily available not only to the students at Berkeley, but also to the entire community. For several years, faculty members have been videotaping lectures in CS large lower division courses, mainly as an aid to students with time conflicts that prevent them from attending lectures. By hosting an archive storing all CS lectures that were recorded, we hope the computing knowledge that has been gathered can be easily shared. As a teaching aid, a ‘greatest hits’ lecture will also be compiled for each course covering all major topics addressed in the corresponding class. The best parts of many different past lectures will be linked together and presented along with slides to make this greatest hits lecture. This lecture should represent the best teaching abilities in the lower division CS lectures and should be a valuable resource in the computer community for basic CS knowledge. Thanks to the generous donation of Larry Weiner this online site should become a permanent resource.

  • ———————-

    2. Specific topics:

    On Macros and metaprogramming:

  • The art of metaprogramming, Part 1: Introduction to metaprogramming, IBM developer works

    Summary: One of the most under-used programming techniques is writing programs that generate programs or program parts. Learn why metaprogramming is necessary and look at some of the components of metaprogramming (textual macro languages, specialized code generators). See how to build a code generator and get a closer look at language-sensitive macro programming in Scheme.

  • Lisp Macros — How to Define Entirely New Languages in Lisp

    This is a very interesting lesson if you want to deeply understand Lisp, and some very deep things about programming, but it’s also entirely optional; We suggest that you do through it, but not worry too much about understanding it in detail. If you get very deeply into programming, you’ll find that Lisp macros are an amazing tool, but they are also somewhat mind-bending, and used rather rarely in simple programming. So, feel free to skip this lesson, or at least, if you do study it, let it flow over you, and maybe come back to it later on if you find yourself wanting to know more about some of the deep and subtle reaches of Lisp programming.

  • Scheme FAQ Macros, on schemewiki.org
  • Sources for learning about Scheme Macros: define-syntax and syntax-rules, a thread on StackOverflow
  • A scheme syntax rules primer, an interesting blog post
  • ———————-

    That’s all for now… I’ll be adding more stuff as I run into it!

    ]]>
    808