florian-grond / SC-HOA

HOA wrapper classes for SuperCollider based on https://github.com/sekisushai/ambitools
GNU General Public License v3.0
32 stars 7 forks source link

inline warnings #9

Open telephon opened 6 years ago

telephon commented 6 years ago

Please, as a developer, switch on inline warnings:

LanguageConfig.postInlineWarnings = true;

There are a lot of errors at library compile time like:

WARNING: FunctionDef contains variable declarations and so will not be inlined.
  in file '/Volumes/data/sc/quarks/SC-HOA/classes/HOADec5_0.sc'
  line 8 char 46:

                                in2, in3, in4, decoded;

                                 #in1, // distribute the channels from the array
-----------------------------------

This comes from variables inside the if statement like:

case{order == 1}
                        { var in1, // declare variables for the b-format array
                                in2, in3, in4, decoded;
                               #in1, // distribute the channels from the array
                                 in2, in3, in4 = in;
                          ^ITU5001.ar(in1, // return the Ugen
                                                            in2, in3, in4,
                                                            gain: gain.ampdb, lf_hf: lf_hf, mute:mute, xover:xover );

        }

This could point to an architectural problem that would be good to overcome (btw. ITU5001 doesn't exist).

florian-grond commented 6 years ago

Thanks for the pointer to inline warnings I will switch it on but am not sure atm that we can optimize that. Re ITU5001: this class is deprecated and will disappear, There is a decoder helper class, which in combination with Faust and Matlab or Octave will generate decoders of irregular speaker setups.

Florian

www.grond.at

On Wed, Jun 20, 2018 at 2:50 PM, Julian Rohrhuber notifications@github.com wrote:

Please, as a developer, switch on inline warnings:

LanguageConfig.postInlineWarnings = true;

There are a lot of errors at library compile time like:

WARNING: FunctionDef contains variable declarations and so will not be inlined. in file '/Volumes/data/sc/quarks/SC-HOA/classes/HOADec5_0.sc' line 8 char 46:

                              in2, in3, in4, decoded;

                             #in1, // distribute the channels from the array

This comes from variables inside the if statement like:

case{order == 1} { var in1, // declare variables for the b-format array in2, in3, in4, decoded;

in1, // distribute the channels from the array

                           in2, in3, in4 = in;
                    ^ITU5001.ar(in1, // return the Ugen
                                                      in2, in3, in4,
                                                      gain: gain.ampdb, lf_hf: lf_hf, mute:mute, xover:xover );

  }

This could point to an architectural problem that would be good to overcome (btw. ITU5001 doesn't exist).

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/florian-grond/SC-HOA/issues/9, or mute the thread https://github.com/notifications/unsubscribe-auth/ABVJxip9M3b-OL9my_YEaHg_yblRI6Yvks5t-kUugaJpZM4UvNay .

telephon commented 6 years ago

The simplest quick thing would be this:

make for each UGen a method like

ITU5002  {

    *arFlattenInput { |in, gain, lf_hf, mute, xover|
        ^this.ar(in[0], in[1], in[2], in[3], in[4], in[5], in[6], in[7], in[8], in[9],  gain, lf_hf, mute, xover)
    }

}

and then just call that from the case distinction. No need for all these variables.

Often, in the plugins, we append the input channels to the end of the inputs. Then these things are asier to write. You could have a look at Select:

Select : PureUGen {
    *ar {
        arg which, array;
        ^this.multiNewList(['audio', which] ++ array)
    }
}
florian-grond commented 6 years ago

Thanks, will try when I find time to get back to it.

www.grond.at

On Thu, Jun 21, 2018 at 2:08 PM, Julian Rohrhuber notifications@github.com wrote:

The simplest quick thing would be this:

make for each UGen a method like

ITU5002 {

*arFlattenInput { |in, gain, lf_hf, mute, xover| ^this.ar(in[0], in[1], in[2], in[3], in[4], in[5], in[6], in[7], in[8], in[9], gain, lf_hf, mute, xover) }

}

and then just call that from the case distinction. No need for all these variables.

Often, in the plugins, we append the input channels to the end of the inputs. Then these things are asier to write. You could have a look at Select:

Select : PureUGen { *ar { arg which, array; ^this.multiNewList(['audio', which] ++ array) } }

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/florian-grond/SC-HOA/issues/9#issuecomment-399081136, or mute the thread https://github.com/notifications/unsubscribe-auth/ABVJxqemgzfAW9rhhnui0ZJ0l8rIsP0oks5t-4ypgaJpZM4UvNay .