# Mejoras en la instalación y uso de TidalCycles
Resumen de problemas y dificultades a la hora de instalar el stack de TidalCycles+SuperCollider+SuperDirt. El objetivo es simplificar todo este proceso e idealmente tener una forma de distribuir un paquete portable facil de descargar y utilizar, dirigido a usuarios nuevos o casuales, con buenos defaults, y multiplataforma.
## Dificultades en la instalación
### TidalCycles
* Son muchos pasos por linea de comando.
* Se necesita un GHC bastante nuevo, y las instrucciones de instalación varian
mucho entre sistema operativo.
* Los paquetes se compilan siempre, asi que puede haber problemas de
compilación por librerias dinámicas que no estan (está pasando en MacOS viejos)
* Problemas de variables de entorno (depende del SO, del shell, del
programa usado para terminal, etc.)
### Editor de texto (Atom, Vscode)
* En general esto no es un problema, aunque gente ajena a la programación les
puede costar entender la GUI al principio.
* Hay varias opciones, y puede ser confuso (cual es mejor?)
### SuperCollider, Sc3plugins, SuperDirt
* La instalación de SuperCollider creo que es sencilla hoy por hoy (hay un instalador ejecutable para cada sistema operativo).
* La instalación de los plugins (sc3plugins) es manual en Windows y OSX, y en
Linux ni siquiera hay binarios, hay que compilar (!!!)
* Para instalar SuperDirt, hay que instalar git antes (hay instaladores though)
## Dificultades en el uso
## Posibles soluciones
### TidalCycles REPL
* Se podría crear un binario de Haskell que haga de REPL e incluya Tidal dentro.
* Static linking: para evitar instalar Haskell (!)
* Cross plataforma: Podríamos cross compilar el binario para tenerlo en varios sistemas
operativos, usando algún CI, Docker, etc.
* Teniendo un REPL de Tidal, se podría implementar mecanismos de seguridad, en caso de correr para Flok por ejemplo (ver [safe-tidal-cli](https://github.com/jwaldmann/safe-tidal-cli)).
### SuperDirt REPL
* REPL que wrappea sclang
* Portable: viene con los plugins y quarks de SuperDirt
* Al levantarse, ya inicia SuperDirt y el servidor con buenos defaults (los de SuperDirt)
* Boot configurable
* Cross plataforma
### TidalCycles IDE (Editor à la FoxDot/SonicPi/etc)
* Se podría unificar las aplicaciones anteriores en una sola aplicación GUI que haga de:
- Editor de texto
- Manejo de Tidalcycles REPL
- Manejo de SuperDirt REPL
* Portable
* Defaults amigables pero ajustables
* Cross plataforma