function y = wavpan(x, I, D, delay, Fs)
    // Paneo de una señal mono
    //
    // Uso:
    //        y = wavpan(x, I, D, delay, Fs)
    //
    // donde
    //        x:     vector de señal de entrada 
    //        I:     ganancia del canal izquierdo
    //        D:     ganancia del canal derecho
    //        delay: retardo de D respecto a I en s (si delay < 0
    //               el canal D se adelanta)
    //        y:     señal de salida estéreo
    //        Fs:    tasa de muestreo en Hz
    //
    // Normalmente I y D son escalares, pero la función admite
    // que sean vectores de igual dimensión que x, en cuyo caso 
    // se logra un paneo variable.
    // 
    // NOTAS: 1) Normalmente se adopta I+D = 1. Si es distinto de 1
    //           se logra un efecto de aproximación o alejamiento. 
    //        2) Si I < 0 ó D < 0 se logra a veces un efecto de 
    //           paneo por fuera del ángulo que subtienden los 
    //           parlantes
    //
    // -------------------------------------
    // Autor: Federico Miyara
    // Fecha: 2010-07-08
    //        2012-07-27
    //        2013-06-25 (cambio de nombre pan ---> wavpan)
    //        3021-06-14
    
    // Cantidad de argumentos de entrada
    rhs = argn(2);

    // Manejo de argumentos faltantes
    if rhs<5
        Fs = 44100;
    end
    if rhs<4
        delay = 0;
    end

    // Garantizar que x es columna
    if size(x,1)==1
        x = x(:);   
        wasrow = 1;
    else 
        wasrow = 0;
    end

    // Garantizar que si I y D son variables sean columnas
    I = I(:);
    D = D(:);

    // Retardo expresado en muestras
    Kd = round(delay*Fs);

    if Kd >=0
        yizq = [I.*x; zeros(Kd,1)];  
        yder = [zeros(Kd,1); D.*x];
    else
        Kd = abs(Kd);
        yizq = [zeros(Kd,1); I.*x];  
        yder = [D.*x; zeros(Kd,1)];
    end

    // Si x era fila, y está formado por dos filas  y 
    // si x era columna, por dos columnas 
    if wasrow==1   
        y = [yizq'; yder'];
    else
        y = [yizq, yder];
    end

endfunction
