My piece 48Hz will be playing sometime between 15Feb and 19Feb in radio cona, FM 88.8MHz, Ljubljana.
15.– 19. Feb 2015, from 19:09* (FM exhibition)
radioCona FM 88.8MHz, Ljubljana and stream
radioCona broadcast programe
radioCona ListeningHUB: Pritličje
from Monday 16th to Thursday 19th February
Pablo Sanz & Miguel Negrão
Concerto com oferta de jantar
Rua da Prelada nº 33 ( ao largo do Carvalhido) | Porto
Invited by Miso Music Portugal, I will be talking about my work and performing some of my pieces on the 5th of February at O’culto da Ajuda in Lisbon. The last time I played in my home town was in 2009, so I’m quite happy to be able to present something again in Lisbon.
O’culto da Ajuda
Travessa das Zebras 25/27,
I will also be presenting a poster with the Modality team on thursday and we will be giving a Modality workshop on Monday.
I will also be performing part of this composition in Amsterdam, at OT301, on the 5/04/2014.
I will be in Amsterdam on the first week of April for another meeting of the Modality group. The concert will be part of of that meeting, and there will also be a workshop for those that want to get initiated with Modality.
Recently I have been having fun in my spare time discovering how to implement a tcp server / client in Haskell. It’s incredible easy to implement just a couple of lines of code. Building on top of that, today I learned how to implement an http server. Turns out http is just sending and receiving text (and other content) over tcp. As a nice application, I quickly coded a program that given a port and file path starts a web server which will display a webpage with a link to the file which when clicked sends the file to the client’s browser. This is very handy to quickly transfer a file to a friend over a local network. I was impressed with how little code it was needed to implement this in Haskell, and how high level and elegant that code was.
There isn’t a program for playing sound files in Linux which has the functionality that I want: fast, light, play files with any number of channels and 32bit floating-point encoded aiffs or wavs, so I decided to just code my own file player in SuperCollider. I didn’t want to have to start up SuperCollder to use the file player, I was in need of a “standalone”. Standalone is concept from OSX, which is not really use much in Linux. On OSX apps are just a folder with all the files and data inside (except some configuration files in ~/Library) while in Linux apps are usually installed system wide. Since the introduction in SuperCollider of the language configuration system via a yaml file, it’s possible to override which paths get searched for class files, and so kind of emulate standalones in linux too.
A SuperCollider standalone can then be created using the language config file, with the caveat that it has to be generated from a script in order to determine the location of the home folder, in order to disable loading the default extensions folder and class library folder. I have pushed a demo of this to github.
For quick scripts I just place
on top of the file and either run it from terminal or create a .desktop file for it:
So now I have a file player app !
Usually async actions in SuperCollider are dealt with the sync message. A sync message is placed in between each group of commands containing an async command which needs to run before some other future command. An alternative to the sync message is to use the completion messages. This is the mechanism used by the Request monad from hsc3-server.
Today I needed to quickly get some code going to record from the input buses of a server to a file on disk, and I decided to chain the commands via completion messages:
Inspired by the signals provided by elm for mouse and keyboard interaction I’ve revised the corresponding event sources and signals in FPLib and updated them to be usable with ENDef.
- mouseClicksENInputES – EventSource – fires when mouse clicks come in
- mousePosENInput – FPSignal – tracks mouse position. Needs .acceptsMouseOver_(true) on the view.
- mouseIsDownENInput – FPSignal – tracks if mouse is down.
- keyDownENInputES – EventSource – fires when keyboard keys are pressed
- keysDownENInput – FPSignal -tracks the currently pressed keys.