mirror of
https://github.com/Ardour/ardour.git
synced 2026-01-06 13:45:43 +01:00
somewhat working VBAP panning (no interpolation, and some outputs don't get output)
git-svn-id: svn://localhost/ardour2/branches/3.0@8898 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
parent
954bc598b8
commit
4145bfc33c
3 changed files with 5 additions and 36 deletions
|
|
@ -89,12 +89,9 @@ Speakers::add_speaker (const AngularVector& position)
|
|||
{
|
||||
int id = _speakers.size();
|
||||
|
||||
cerr << "Added speaker " << id << " at " << position.azi << " /= " << position.ele << endl;
|
||||
|
||||
_speakers.push_back (Speaker (id, position));
|
||||
update ();
|
||||
|
||||
dump_speakers (cerr);
|
||||
Changed ();
|
||||
|
||||
return id;
|
||||
|
|
|
|||
|
|
@ -107,17 +107,7 @@ VBAPanner::update ()
|
|||
Signal* signal = *s;
|
||||
|
||||
signal->direction = AngularVector (signal_direction, 0.0);
|
||||
|
||||
compute_gains (signal->desired_gains, signal->desired_outputs, signal->direction.azi, signal->direction.ele);
|
||||
cerr << " @ " << signal->direction.azi << " /= " << signal->direction.ele
|
||||
<< " Outputs: "
|
||||
<< signal->desired_outputs[0] + 1 << ' '
|
||||
<< signal->desired_outputs[1] + 1 << ' '
|
||||
<< " Gains "
|
||||
<< signal->desired_gains[0] << ' '
|
||||
<< signal->desired_gains[1] << ' '
|
||||
<< endl;
|
||||
|
||||
signal_direction += degree_step_per_signal;
|
||||
}
|
||||
}
|
||||
|
|
@ -164,7 +154,7 @@ VBAPanner::compute_gains (double gains[3], int speaker_ids[3], int azi, int ele)
|
|||
|
||||
speaker_ids[0] = _speakers->speaker_for_tuple (i, 0);
|
||||
speaker_ids[1] = _speakers->speaker_for_tuple (i, 1);
|
||||
|
||||
|
||||
if (_speakers->dimension() == 3) {
|
||||
gains[2] = gtmp[2];
|
||||
speaker_ids[2] = _speakers->speaker_for_tuple (i, 2);
|
||||
|
|
|
|||
|
|
@ -64,7 +64,6 @@ VBAPSpeakers::update ()
|
|||
|
||||
for (vector<Speaker>::const_iterator i = _speakers.begin(); i != _speakers.end(); ++i) {
|
||||
if ((*i).angles().ele != 0.0) {
|
||||
cerr << "\n\n\nSPEAKER " << (*i).id << " has ele = " << (*i).angles().ele << "\n\n\n\n";
|
||||
dim = 3;
|
||||
break;
|
||||
}
|
||||
|
|
@ -72,8 +71,6 @@ VBAPSpeakers::update ()
|
|||
|
||||
_dimension = dim;
|
||||
|
||||
cerr << "update with dimension = " << dim << " speakers = " << _speakers.size() << endl;
|
||||
|
||||
if (_speakers.size() < 2) {
|
||||
/* nothing to be done with less than two speakers */
|
||||
return;
|
||||
|
|
@ -514,7 +511,6 @@ VBAPSpeakers::choose_speaker_pairs (){
|
|||
int pair;
|
||||
int speaker;
|
||||
|
||||
cerr << "CHOOSE PAIRS\n";
|
||||
|
||||
if (n_speakers == 0) {
|
||||
return;
|
||||
|
|
@ -530,14 +526,6 @@ VBAPSpeakers::choose_speaker_pairs (){
|
|||
/* adjacent loudspeakers are the loudspeaker pairs to be used.*/
|
||||
for (speaker = 0; speaker < n_speakers-1; speaker++) {
|
||||
|
||||
cerr << "Looking at "
|
||||
<< _speakers[sorted_speakers[speaker]].id << " @ " << _speakers[sorted_speakers[speaker]].angles().azi
|
||||
<< " and "
|
||||
<< _speakers[sorted_speakers[speaker+1]].id << " @ " << _speakers[sorted_speakers[speaker+1]].angles().azi
|
||||
<< " delta = "
|
||||
<< _speakers[sorted_speakers[speaker+1]].angles().azi - _speakers[sorted_speakers[speaker]].angles().azi
|
||||
<< endl;
|
||||
|
||||
if ((_speakers[sorted_speakers[speaker+1]].angles().azi -
|
||||
_speakers[sorted_speakers[speaker]].angles().azi) <= AZIMUTH_DELTA_THRESHOLD_DEGREES) {
|
||||
if (calc_2D_inv_tmatrix( _speakers[sorted_speakers[speaker]].angles().azi,
|
||||
|
|
@ -579,8 +567,6 @@ VBAPSpeakers::choose_speaker_pairs (){
|
|||
_speaker_tuples[pair][0] = sorted_speakers[speaker];
|
||||
_speaker_tuples[pair][1] = sorted_speakers[speaker+1];
|
||||
|
||||
cerr << "PAIR[" << pair << "] = " << sorted_speakers[speaker] << " + " << sorted_speakers[speaker+1] << endl;
|
||||
|
||||
pair++;
|
||||
}
|
||||
}
|
||||
|
|
@ -593,9 +579,6 @@ VBAPSpeakers::choose_speaker_pairs (){
|
|||
|
||||
_speaker_tuples[pair][0] = sorted_speakers[n_speakers-1];
|
||||
_speaker_tuples[pair][1] = sorted_speakers[0];
|
||||
|
||||
cerr << "PAIR[" << pair << "] = " << sorted_speakers[n_speakers-1] << " + " << sorted_speakers[0] << endl;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -611,7 +594,6 @@ VBAPSpeakers::sort_2D_lss (int* sorted_speakers)
|
|||
|
||||
for (n = 0, s = tmp.begin(); s != tmp.end(); ++s, ++n) {
|
||||
sorted_speakers[n] = (*s).id;
|
||||
cerr << "Sorted[" << n << "] = " << (*s).id << endl;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -621,10 +603,10 @@ VBAPSpeakers::calc_2D_inv_tmatrix (double azi1, double azi2, double* inverse_mat
|
|||
double x1,x2,x3,x4;
|
||||
double det;
|
||||
|
||||
x1 = cos (azi1);
|
||||
x2 = sin (azi1);
|
||||
x3 = cos (azi2);
|
||||
x4 = sin (azi2);
|
||||
x1 = cos (azi1 * (M_PI/180.0));
|
||||
x2 = sin (azi1 * (M_PI/180.0));
|
||||
x3 = cos (azi2 * (M_PI/180.0));
|
||||
x4 = sin (azi2 * (M_PI/180.0));
|
||||
det = (x1 * x4) - ( x3 * x2 );
|
||||
|
||||
if (fabs(det) <= 0.001) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue