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]); } }
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; }
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.); } } }
void Line::setValueAngleDirect(const double angle) { m_value_old = m_value_new = wrap_twopi(angle); m_value_step = 0.; m_counter = 0; }
void Rotate::setYaw(const double value) { m_yaw = wrap_twopi(value); m_cosx = cos(m_yaw); m_sinx = sin(m_yaw); }
void DecoderIrregular::setChannelsOffset(double offset) { m_offset = wrap_twopi(offset); setChannelAzimuth(0, m_channels_azimuth[0]); }