<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="https://psychosynth.ng.sinusoid.es/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://psychosynth.ng.sinusoid.es/index.php?action=history&amp;feed=atom&amp;title=Integraci%C3%B3n_Boost.GIL</id>
		<title>Integración Boost.GIL - Revision history</title>
		<link rel="self" type="application/atom+xml" href="https://psychosynth.ng.sinusoid.es/index.php?action=history&amp;feed=atom&amp;title=Integraci%C3%B3n_Boost.GIL"/>
		<link rel="alternate" type="text/html" href="https://psychosynth.ng.sinusoid.es/index.php?title=Integraci%C3%B3n_Boost.GIL&amp;action=history"/>
		<updated>2026-10-17T06:54:29Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.19.20+dfsg-0+deb7u3</generator>

	<entry>
		<id>https://psychosynth.ng.sinusoid.es/index.php?title=Integraci%C3%B3n_Boost.GIL&amp;diff=1727&amp;oldid=prev</id>
		<title>Admin at 12:26, 11 March 2011</title>
		<link rel="alternate" type="text/html" href="https://psychosynth.ng.sinusoid.es/index.php?title=Integraci%C3%B3n_Boost.GIL&amp;diff=1727&amp;oldid=prev"/>
				<updated>2011-03-11T12:26:25Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr valign='top'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 12:26, 11 March 2011&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 40:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 40:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;crear algunas estructuras de datos propias sobre ellas (un ''buffer'' y un ''ring_buffer'') basadas en los principios y sobre la base de código de GIL.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;crear algunas estructuras de datos propias sobre ellas (un ''buffer'' y un ''ring_buffer'') basadas en los principios y sobre la base de código de GIL.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;¿Pero, es GIL necesario? o &lt;/del&gt;¿Cómo se han hecho las cosas hasta ahora? ==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== ¿Cómo se han hecho las cosas hasta ahora? ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Lo cierto es que esta aproximación sería novedosa en el procesamiento de&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Lo cierto es que esta aproximación sería novedosa en el procesamiento de&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>https://psychosynth.ng.sinusoid.es/index.php?title=Integraci%C3%B3n_Boost.GIL&amp;diff=1595&amp;oldid=prev</id>
		<title>Admin at 15:56, 19 October 2010</title>
		<link rel="alternate" type="text/html" href="https://psychosynth.ng.sinusoid.es/index.php?title=Integraci%C3%B3n_Boost.GIL&amp;diff=1595&amp;oldid=prev"/>
				<updated>2010-10-19T15:56:33Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr valign='top'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 15:56, 19 October 2010&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Antonio y Javier, os he añadido también a este correo porque como sois&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Perdón por escribir semejante tocho&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;muy buenos en C++ y programación genérica seguramente podáis aportar&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;alguna idea buena a esta discusión. &lt;/del&gt;Perdón por escribir semejante tocho&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;y que las dudas estén un poco disperas. Espero no explicarme demasiado&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;y que las dudas estén un poco disperas. Espero no explicarme demasiado&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;quot;para mí&amp;quot; y que podáis entender algo. La idea es dejar escrito todo el&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;quot;para mí&amp;quot; y que podáis entender algo. La idea es dejar escrito todo el&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 7:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 5:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;tomando cómo los por qués.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;tomando cómo los por qués.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Como ya comenté &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;a Joaquín &lt;/del&gt;el primer paso que voy a dar en el proceso de&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Como ya comenté &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;anteriormente &lt;/ins&gt;el primer paso que voy a dar en el proceso de&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;remodelar el Psychosynth como parte del PFC es integrar Boost.GIL [1].&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;remodelar el Psychosynth como parte del PFC es integrar Boost.GIL [1].&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Vamos a discutir un poco el por qué, los antedecentes y el cómo.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Vamos a discutir un poco el por qué, los antedecentes y el cómo.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>https://psychosynth.ng.sinusoid.es/index.php?title=Integraci%C3%B3n_Boost.GIL&amp;diff=1594&amp;oldid=prev</id>
		<title>Admin at 14:45, 19 October 2010</title>
		<link rel="alternate" type="text/html" href="https://psychosynth.ng.sinusoid.es/index.php?title=Integraci%C3%B3n_Boost.GIL&amp;diff=1594&amp;oldid=prev"/>
				<updated>2010-10-19T14:45:46Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Antonio y Javier, os he añadido también a este correo porque como sois&lt;br /&gt;
muy buenos en C++ y programación genérica seguramente podáis aportar&lt;br /&gt;
alguna idea buena a esta discusión. Perdón por escribir semejante tocho&lt;br /&gt;
y que las dudas estén un poco disperas. Espero no explicarme demasiado&lt;br /&gt;
&amp;quot;para mí&amp;quot; y que podáis entender algo. La idea es dejar escrito todo el&lt;br /&gt;
razonamiento para que podáis criticar tanto las decisiones que estoy&lt;br /&gt;
tomando cómo los por qués.&lt;br /&gt;
&lt;br /&gt;
Como ya comenté a Joaquín el primer paso que voy a dar en el proceso de&lt;br /&gt;
remodelar el Psychosynth como parte del PFC es integrar Boost.GIL [1].&lt;br /&gt;
Vamos a discutir un poco el por qué, los antedecentes y el cómo.&lt;br /&gt;
&lt;br /&gt;
== ¿Qué es Boost.GIL? ==&lt;br /&gt;
&lt;br /&gt;
Boost.GIL es una biblioteca que ha hecho Adobe y que después se ha&lt;br /&gt;
integrado en Boost para el procesamiento de imágenes. Lo que hace a GIL&lt;br /&gt;
especial es que permite a uno dar una descripción genérica de un&lt;br /&gt;
algoritmo de procesamiento de imágenes y, a través de las lindezas de la&lt;br /&gt;
metaprogramación, GIL se encarga en traducirlo en la mayoría de los&lt;br /&gt;
casos a código cuasi-óptimo para formatos de imágenes arbitrários (se&lt;br /&gt;
puede cambiar el espacio de color, la disposición de los colores en&lt;br /&gt;
memoria, si los canales están entrelazados o es planar, los bits por&lt;br /&gt;
color, etc etc).&lt;br /&gt;
&lt;br /&gt;
Las ventajas, para procesamiento de imágenes, son evidentes. Además, la&lt;br /&gt;
biblioteca ha sido diseñada con una gran elegancia matemática. De la&lt;br /&gt;
misma documentación se nota la influencia de el &amp;quot;metodo deductivo para&lt;br /&gt;
la programación&amp;quot; que Alexander Stepanov --autor de la STL-- expone en su&lt;br /&gt;
muy recomendable libro &amp;quot;Elements of Computer Programmíng&amp;quot;. No es de&lt;br /&gt;
extrañar, ya que Stepanov ha trabajado los últimos años en Adobe dónde&lt;br /&gt;
se ha dedicado a divulgar la programación genérica y &amp;quot;formal&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== ¿En qué afecta a la programación de software de audio? ==&lt;br /&gt;
&lt;br /&gt;
Mi idea es que buena parte de los conceptos que utiliza la biblioteca&lt;br /&gt;
son análogos al procesamiento de audio. Por ejemplo, en lugar de mono,&lt;br /&gt;
RGB o CYMK, en audio podemos hablar de Mono, Estereo, 2.1 o 5.1.&lt;br /&gt;
&lt;br /&gt;
Prescindiendo de todo el pitoste de 2D que añade Gil (un análogo a los&lt;br /&gt;
iteradores llamados &amp;quot;locators&amp;quot; o localizadores) se puede adaptar a 1D,&lt;br /&gt;
cambiar la terminología (por ejemplo, sustituir &amp;quot;pixel&amp;quot; por &amp;quot;frame&amp;quot;) y&lt;br /&gt;
crear algunas estructuras de datos propias sobre ellas (un ''buffer'' y un ''ring_buffer'') basadas en los principios y sobre la base de código de GIL.&lt;br /&gt;
&lt;br /&gt;
== ¿Pero, es GIL necesario? o ¿Cómo se han hecho las cosas hasta ahora? ==&lt;br /&gt;
&lt;br /&gt;
Lo cierto es que esta aproximación sería novedosa en el procesamiento de&lt;br /&gt;
audio. Esto añade un riesgo y es por ello que me gustaría que la voz de&lt;br /&gt;
la experiencia de alguien me susurre si voy bien encaminado o no.&lt;br /&gt;
&lt;br /&gt;
Hasta ahora en casi todos los sintetizadores modulares se simplifica el&lt;br /&gt;
problema de una forma sencilla: todas las señales de audio son iguales y&lt;br /&gt;
'''monocanal'''. Cuando un módulo emite salida estereo, simplemente expone&lt;br /&gt;
dos salidas. Cuando un dispositivo de salida es multicanal, expone 4&lt;br /&gt;
entradas. Todos esos puertos se representan con algun tipo de tipo&lt;br /&gt;
buffer que lo más probable es que sea un ''float*''...&lt;br /&gt;
&lt;br /&gt;
Ya en la primera versión de Psychosynth tomamos un camino diferente,&lt;br /&gt;
existen dos tipos de señales: &amp;quot;señales normales&amp;quot; (equívocamente llamadas&lt;br /&gt;
&amp;quot;control&amp;quot;) y &amp;quot;señales de audio&amp;quot; (llamadas &amp;quot;audio&amp;quot;). Hablando a lo bruto,&lt;br /&gt;
la diferencia es que una señal control es un ''float*'' y una señal audio es&lt;br /&gt;
''float**'' --el audio es multicanal, el control no. Todos los algoritmos&lt;br /&gt;
que trabajan con audio escalan al numero de canales. Todas las señales&lt;br /&gt;
de audio de una misma red tienen el mismo número de canales.&lt;br /&gt;
&lt;br /&gt;
Esto me pareció interesante porque así los algoritmos de procesamiento&lt;br /&gt;
de audio podían &amp;quot;escalar&amp;quot; al número de canales necesario sin tener que&lt;br /&gt;
fijarse individualmente a cada uno. Además, soluciona el problema de&lt;br /&gt;
&amp;quot;agrupamiento de canales&amp;quot; que sistemas como LV2 solucionan ad-hoc. Como&lt;br /&gt;
inconveniente, añade procesamiento de audio adicional porque hay veces&lt;br /&gt;
que todos los canales llevan la misma señal. También, a veces produce&lt;br /&gt;
duplicidad de código en nodos de control y audio que son&lt;br /&gt;
algorítmicamente similares.&lt;br /&gt;
&lt;br /&gt;
Las preguntas que se me vienen son, ¿añadiría GIL &amp;quot;demasiada&amp;quot;&lt;br /&gt;
genericidad? ¿Debería hacer las cosas como &amp;quot;de toda la vida&amp;quot; y&lt;br /&gt;
solucionar los problemas que eso genere después?&lt;br /&gt;
&lt;br /&gt;
== ¿Qué podría aportar una biblioteca basada en GIL? ==&lt;br /&gt;
&lt;br /&gt;
GIL podría usarse de diferentes formas. Una de ellas que se me ocurre&lt;br /&gt;
sería, haciendo también unos puertos de entrada/salida inteligentes&lt;br /&gt;
basadas en la extensión &amp;quot;dynamic_image&amp;quot; de GIL, acabar con la dicotomía&lt;br /&gt;
entre señales de audio y control. Cada nodo podría explicitar si su&lt;br /&gt;
puerto &amp;quot;requiere&amp;quot; o &amp;quot;recomienda&amp;quot; cierto formato de buffer y luego&lt;br /&gt;
adaptarse al buffer que el sistema le asigne en cada momento dependiendo&lt;br /&gt;
de la topología de la red. Todo esto se produce de forma transparente.&lt;br /&gt;
&lt;br /&gt;
Un problema que le veo a esto es que GIL en &amp;quot;dinamico&amp;quot; funciona como&lt;br /&gt;
&amp;quot;mundo cerrado&amp;quot;, ya que dynamic_image se basa en ''gil::variant'' (muy&lt;br /&gt;
similar a ''boost::variant''). Esto significa que todos los formatos de&lt;br /&gt;
bufferes que vaya a aceptar el sistema tienen que estar hardcodeados en&lt;br /&gt;
alguna parte del programa --aunque se podría controlar con flags de&lt;br /&gt;
compilación. Hay que tener en cuenta que ese conjunto no se puede hacer&lt;br /&gt;
demasiado grande, porque todos los algoritmos genéricos que trabajen&lt;br /&gt;
sobre estos bufferes dinámicos de GIL se instanciarán automáticamente&lt;br /&gt;
para todos los formatos de este &amp;quot;mundo cerrado&amp;quot; -- si nos colamos, el&lt;br /&gt;
tiempo de compilación y el tamaño del ejecutable se van a volver extremos.&lt;br /&gt;
&lt;br /&gt;
También GIL podría usarse a la hora de convertir entre formatos de&lt;br /&gt;
entrada y salida que diferentes bibliotecas (entrelazado/no entrelazado,&lt;br /&gt;
formato flotante, o entero de 32, 24 u 8, etc...) requieren cosa y&lt;br /&gt;
permitiría construir adaptadores interesantes.&lt;br /&gt;
&lt;br /&gt;
== ¿Si la usamos, cómo integrarla? ==&lt;br /&gt;
&lt;br /&gt;
Ok, supongamos que la usamos, ¿ahora cómo la integramos? Existen tres&lt;br /&gt;
opciones, con diferentes ventajas e inconvenientes. Vamos a describirlas&lt;br /&gt;
un poco:&lt;br /&gt;
&lt;br /&gt;
'''a)''' No hacer nada. Usar GIL tal cual y añadir las cosas que no vienen&lt;br /&gt;
--como bufferes circulares-- y lo demás usarlo tal cual.&lt;br /&gt;
&lt;br /&gt;
Ventajas: Poco trabajo. Actualizaciones a upstream automáticas.&lt;br /&gt;
&lt;br /&gt;
Desventajas: La gente se quedará a cuadros ver tipos como &amp;quot;color_base&amp;quot;&lt;br /&gt;
usadas para describir la configuración de los colores de la señal, etc.&lt;br /&gt;
Al acceder a la documentación la gente se verá confusa por todas las&lt;br /&gt;
movidas multidimensionales y referentes al procesamiento de imágenes.&lt;br /&gt;
Hay que tener en cuenta que Psychosynth no es sólo un programa sino un&lt;br /&gt;
frame-work y hay que pensar en los que usen en el futuro nuestra&lt;br /&gt;
plataforma como biblioteca externa y que esperen cierta coherencia.&lt;br /&gt;
&lt;br /&gt;
'''b)''' Usar GIL como biblioteca externa y sobre ella construir un envoltorio&lt;br /&gt;
con los nombres adaptados.&lt;br /&gt;
&lt;br /&gt;
Ventajas: Trabajo medio. Actualizaciones a upstream casi automáticas.&lt;br /&gt;
&lt;br /&gt;
Desventajas: En los errores de compilació a veces aparecería GIL por&lt;br /&gt;
detrás aportando más confusión de la que los errores con plantillas&lt;br /&gt;
suelen aportar de por sí. Además, sin los &amp;quot;template aliases&amp;quot; de C++0x&lt;br /&gt;
[2] puede ser bastante engorroso e incluso imposible envolver algunas&lt;br /&gt;
plantillas y envolver algunas funciones puede ocasionar que el&lt;br /&gt;
compilador deje de aplicarles el &amp;quot;inline&amp;quot; adecuadamente.&lt;br /&gt;
&lt;br /&gt;
'''c)''' Importar el código en nuestro árbol y modificarlo a gusto.&lt;br /&gt;
&lt;br /&gt;
Ventajas: Nos podemos asegurar de que el resultado se adapte a nuestras&lt;br /&gt;
necesidades.&lt;br /&gt;
&lt;br /&gt;
Desventajas: Bastante trabajo, revisar unas 15k lineas de código de&lt;br /&gt;
metaprogramación a tope, borrar, modificar aquí y allá. Además, los&lt;br /&gt;
cambios en el &amp;quot;upstream&amp;quot; de GIL se vuelven difíciles de integrar.&lt;br /&gt;
&lt;br /&gt;
== ¿Qué estoy haciendo finalmente? ==&lt;br /&gt;
&lt;br /&gt;
Lo más importante que estoy haciendo es comerme la cabeza y escribir&lt;br /&gt;
este correo para ir, por un lado, ordenándome las ideas en el coco y,&lt;br /&gt;
segundo, esperar que podáis aportar alguna idea interesante ¡o... incluso&lt;br /&gt;
mandar todo esto a la mierda! :-)&lt;br /&gt;
&lt;br /&gt;
Pero para no andar de brazos cruzados filosofando, he decidido optar por&lt;br /&gt;
la opción (c) anterior. Por ahora estoy dando una primera pasada de&lt;br /&gt;
adaptar el código a las convenciones del proyecto (¿es esto una tontería&lt;br /&gt;
maniática que sólo sirve para dificultar más importar los cambios de&lt;br /&gt;
upstream?) a la vez que leo el código para entender los entresijos de&lt;br /&gt;
GIL para prepararme a la siguiente fase: borrar toda la parte de 2D,&lt;br /&gt;
cambiar nombres de clases y funciones y finalmente añadir las cosas que&lt;br /&gt;
me faltan.&lt;br /&gt;
&lt;br /&gt;
El trabajo lo estoy realizando en la siguiente rama que podéis descargar&lt;br /&gt;
con:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bzr branch bzr://bzr.sv.gnu.org/psychosynth/import-gil&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En este mirror en SVN podéis verlo sin descargarlo, aunque los números y&lt;br /&gt;
fechas de las revisiones no aparecen correctamente:&lt;br /&gt;
&lt;br /&gt;
https://forja.rediris.es/plugins/scmsvn/viewcvs.php/gil-import/?root=cusl5-psynth&lt;br /&gt;
&lt;br /&gt;
El código que interesa ahora está en &amp;quot;src/psynth/snd&amp;quot;. Se espera que&lt;br /&gt;
tras la importación de GIL nuestra biblioteca resultante esté en el&lt;br /&gt;
namespace &amp;quot;psynth::snd&amp;quot; en lugar de &amp;quot;boost::gil&amp;quot;. [3]&lt;br /&gt;
&lt;br /&gt;
Perdón por escribir un tocho tan grande para que las dudas queden tan&lt;br /&gt;
disperasas.&lt;br /&gt;
&lt;br /&gt;
Saludos,&lt;br /&gt;
&lt;br /&gt;
JP&lt;br /&gt;
&lt;br /&gt;
[1] http://www.boost.org/doc/libs/1_44_0/libs/gil/doc/index.html &amp;lt;br&amp;gt;&lt;br /&gt;
[2] Esa es otra de las novedades del, proyecto, vamos a empezar a usar&lt;br /&gt;
todas las funciones de C++0x según vayan apareciendo en la última&lt;br /&gt;
versión de GCC. &amp;lt;br&amp;gt;&lt;br /&gt;
[3] Aunque no tengo claro si mejor llamar al módulo &amp;quot;psynth::sound&amp;quot; ya&lt;br /&gt;
que me gustan los nombres pronunciables, gusto que contradice con mi&lt;br /&gt;
gusto por los nombres relativamente cortos :p&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>