\subsection{Funciones auxiliares}
\label{subsec:desarrollo-auxiliares}

\subsubsection{Normalización}
\label{subsec:desarrollo-normalizacion}
Como se verá en la sección \fullref{subsec:desarrollo-problemas}, fue necesario desarrollar un algoritmo para normalizar un archivo de audio. Para esto se desarrollaron dos rutinas, una que busca la muestra de mayor valor absoluto en el archivo (\textbf{maxsamp\_right}), y otra que normaliza el  archivo completo en base a dicha muestra (\textbf{normalization\_right}).

Como la normalización sólo se realiza sobre un archivo al que le fue aplicado el efecto, sabemos que éste siempre va a ser stereo (\ref{output-stereo}) y, además, que la operación sólo será necesario hacerla sobre el canal derecho, que es el que tiene la señal húmeda (de allí el nombre \textbf{\_right}).

\subsubsection{Seno}
\label{subsec:desarrollo-seno}
En un principio, se intentó utilizar una librería para calcular el seno con instrucciones SIMD (\fullref{subsec:ssemath}) con bastante precisión; sin embargo, la pérdida de rendimiento al usar dicha librería de los algoritmos en ASM frente a los de C era muy notoria. Por esa razón, se recurrió a una solución \footnote{\url{http://forum.devmaster.net/t/fast-and-accurate-sine-cosine/9648/4}} para calcular el seno que realiza una aproximación mediante parábolas. Esta aproximación, sin embargo, es bastante buena, ya que si se comparan los archivos de salida de \textbf{C} (\textit{sinf} de \textbf{math.h}, muy buena aproximación) con los de \textbf{ASM}, la diferencia entre las señales húmedas no es tan grande.

La rutina se encuentra en el archivo \textbf{sine.asm}, aunque el código para calcular el seno se terminó poniendo en cada lugar donde se usara (porque el cálculo de los argumentos era diferente para cada efecto, al igual que las operaciones posteriores a la obtención del seno, y no se consideró que tuviera sentido hacer todo el pasaje de parámetros, llamado a la rutina, etc., por unas pocas líneas de código).