Exemple #1
0
void Line::setValueAngle(const double angle)
{
	m_value_new = wrap_twopi(angle);
	m_value_old = wrap_twopi(m_value_old);
    double distance;
    if(m_value_old > m_value_new)
        distance = (m_value_old - m_value_new);
    else
        distance = (m_value_new - m_value_old);
	if(distance <= HOA_PI)
	{
		m_value_step = (m_value_new - m_value_old) / (double)m_ramp;
	}
	else
	{
		if(m_value_new > m_value_old)
		{
			m_value_step = ((m_value_new - HOA_2PI) - m_value_old) / (double)m_ramp;
		}
		else
		{
			m_value_step = ((m_value_new + HOA_2PI) - m_value_old) / (double)m_ramp;
		}
	}
	m_counter = 0;
}
void PolarLines::setAzimuth(unsigned int index, double azimuth)
{
    assert(index < m_number_of_sources);
    m_values_new[index + m_number_of_sources] = wrap_twopi(azimuth);
    m_values_old[index + m_number_of_sources] = wrap_twopi(m_values_old[index + m_number_of_sources]);
	
    double distance;
    if(m_values_old[index + m_number_of_sources] > m_values_new[index + m_number_of_sources])
        distance = (m_values_old[index + m_number_of_sources] - m_values_new[index + m_number_of_sources]);
    else
        distance = (m_values_new[index + m_number_of_sources] - m_values_old[index + m_number_of_sources]);
	
    if(distance <= HOA_PI)
    {
        m_values_step[index + m_number_of_sources] = (m_values_new[index + m_number_of_sources] - m_values_old[index + m_number_of_sources]) / (double)m_ramp;
    }
    else
    {
        if(m_values_new[index + m_number_of_sources] > m_values_old[index + m_number_of_sources])
        {
            m_values_step[index + m_number_of_sources] = ((m_values_new[index + m_number_of_sources] - HOA_2PI) - m_values_old[index + m_number_of_sources]) / (double)m_ramp;
        }
        else
        {
            m_values_step[index + m_number_of_sources] = ((m_values_new[index + m_number_of_sources] + HOA_2PI) - m_values_old[index + m_number_of_sources]) / (double)m_ramp;
        }
    }
    m_counter = 0;
}
void MapPolarLines3D::setElevation(unsigned int index, double elevation)
{
    assert(index < m_number_of_sources);
    m_values_new[index + m_number_of_sources * 2] = wrap_twopi(elevation);
    m_values_old[index + m_number_of_sources * 2] = wrap_twopi(m_values_old[index + m_number_of_sources * 2]);
    
    double distance;
    if(m_values_old[index + m_number_of_sources * 2] > m_values_new[index + m_number_of_sources * 2])
        distance = (m_values_old[index + m_number_of_sources * 2] - m_values_new[index + m_number_of_sources * 2]);
    else
        distance = (m_values_new[index + m_number_of_sources * 2] - m_values_old[index + m_number_of_sources * 2]);
    
    if(distance <= HOA_PI)
    {
        m_values_step[index + m_number_of_sources * 2] = (m_values_new[index + m_number_of_sources * 2] - m_values_old[index + m_number_of_sources * 2]) / (double)m_ramp;
    }
    else
    {
        if(m_values_new[index + m_number_of_sources * 2] > m_values_old[index + m_number_of_sources * 2])
        {
            m_values_step[index + m_number_of_sources * 2] = ((m_values_new[index + m_number_of_sources * 2] - HOA_2PI) - m_values_old[index + m_number_of_sources * 2]) / (double)m_ramp;
        }
        else
        {
            m_values_step[index + m_number_of_sources * 2] = ((m_values_new[index + m_number_of_sources * 2] + HOA_2PI) - m_values_old[index + m_number_of_sources * 2]) / (double)m_ramp;
        }
    }
    m_counter = 0;
}
 void DecoderStandard::setChannelsOffset(double azimuth, double elevation)
 {
     m_azimuth_offset = wrap_twopi(azimuth);
     m_elevation_offset = wrap_twopi(elevation);
     for(unsigned int i = 0; i < m_number_of_channels; i++)
     {
         setChannelPosition(i, m_channels_azimuth[i], m_channels_elevation[i]);
     }
     
 }
Exemple #5
0
    void Vector::setChannelsOffset(double offset)
    {
        m_offset = wrap_twopi(offset);
        for (int i = 0; i < m_number_of_channels; i++)
		{
			m_channels_abscissa_float[i] = m_channels_abscissa_double[i] = abscissa(1., m_channels_azimuth[i] + m_offset);
			m_channels_ordinate_float[i] = m_channels_ordinate_double[i] = ordinate(1., m_channels_azimuth[i] + m_offset);
		}
    }
t_max_err offset_set(t_hoa_vector *x, t_object *attr, long argc, t_atom *argv)
{
    if(argc && argv && (atom_gettype(argv) == A_FLOAT || atom_gettype(argv) == A_LONG))
    {
        double offset = wrap_twopi(atom_getfloat(argv) / 360. * HOA_2PI);
        if(offset != x->f_vector->getChannelsOffset())
        {
            x->f_vector->setChannelsOffset(offset);
        }
    }
    return MAX_ERR_NONE;
}
void HoaToolsAudioProcessor::PolarLines::setAzimuth(unsigned int index, double azimuth)
{
    assert(index < m_number_of_sources);
    double new_value = wrap_twopi(azimuth);
    double old_value = wrap_twopi(m_values_old[index + m_number_of_sources]);
    double distance;


    if(old_value > new_value)
        distance = old_value - new_value;
    else
        distance = new_value - old_value;

    if(distance > HOA_PI && new_value > old_value)
        new_value -= HOA_2PI;
    else if(distance > HOA_PI)
        new_value += HOA_2PI;

    m_values_new[index + m_number_of_sources] = new_value;
    m_values_step[index + m_number_of_sources] = (new_value - old_value) / (double)m_ramp;
    m_counter = 0;
}
t_max_err offset_set(t_hoa_decoder *x, t_object *attr, long argc, t_atom *argv)
{
    if(argc && argv)
    {
        double azimuth, elevation;
        if(atom_gettype(argv) == A_FLOAT || atom_gettype(argv) == A_LONG)
			azimuth = wrap_twopi(atom_getfloat(argv) / 360. * HOA_2PI);
        else
            azimuth = x->f_decoder->getChannelsAzimuthOffset();
        
        if(argc > 1 && (atom_gettype(argv+1) == A_FLOAT || atom_gettype(argv+1) == A_LONG))
            elevation = wrap_twopi(atom_getfloat(argv+1) / 360. * HOA_2PI);
        else
            elevation = x->f_decoder->getChannelsElevationOffset();
        
        x->f_decoder->setChannelsOffset(azimuth, elevation);
		
		x->f_offset[0] = x->f_decoder->getChannelsAzimuthOffset() / HOA_2PI * 360;
		x->f_offset[1] = x->f_decoder->getChannelsElevationOffset() / HOA_2PI * 360;
    }
    return MAX_ERR_NONE;
}
Exemple #9
0
    void DecoderRegular::setChannelsOffset(double offset)
	{
        m_offset = wrap_twopi(offset);
        for(unsigned int i = 0; i < m_number_of_channels; i++)
        {
            m_encoder->setAzimuth(m_channels_azimuth[i] + m_offset);
            m_encoder->process(1., m_harmonics_vector);
            
            m_decoder_matrix_float[i * m_number_of_harmonics] = m_decoder_matrix[i * m_number_of_harmonics] = 0.5 / (double)(m_order + 1.);
            for(unsigned int j = 1; j < m_number_of_harmonics; j++)
            {
                m_decoder_matrix_float[i * m_number_of_harmonics + j] = m_decoder_matrix[i * m_number_of_harmonics + j] = m_harmonics_vector[j] / (double)(m_order + 1.);
            }
        }
	}
Exemple #10
0
void Line::setValueAngleDirect(const double angle)
{
	m_value_old = m_value_new = wrap_twopi(angle);
	m_value_step = 0.;
	m_counter = 0;
}
Exemple #11
0
	void Rotate::setYaw(const double value)
    {
		m_yaw =	wrap_twopi(value);
		m_cosx    = cos(m_yaw);
        m_sinx    = sin(m_yaw);
    }
Exemple #12
0
    void DecoderIrregular::setChannelsOffset(double offset)
	{
        m_offset = wrap_twopi(offset);
        setChannelAzimuth(0, m_channels_azimuth[0]);
    }