MCPcopy Create free account
hub / github.com/LabSound/LabSound / setPanningModel

Method setPanningModel

src/core/PannerNode.cpp:296–323  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

294}
295
296void PannerNode::setPanningModel(PanningModel model)
297{
298 if (model != PanningModel::EQUALPOWER && model != PanningModel::HRTF)
299 throw std::invalid_argument("Unknown panning model specified");
300
301 ASSERT(m_sampleRate);
302
303 PanningModel curr = static_cast<PanningModel>(m_panningModel->valueUint32());
304 if (!m_panner.get() || model != curr)
305 {
306 m_panningModel->setUint32(static_cast<uint32_t>(model));
307
308 switch (model)
309 {
310 case PanningModel::EQUALPOWER:
311 m_panner = std::unique_ptr<Panner>(new EqualPowerPanner(m_sampleRate));
312 break;
313 case PanningModel::HRTF:
314 //m_panner = std::unique_ptr<Panner>(new HRTFPanner(m_sampleRate));
315 m_panner.reset(nullptr); // release the old one
316 // @TODO setting the panner is not thread safe.
317 // all of this should be part of the processing graph pre-render step.
318 break;
319 default:
320 throw std::invalid_argument("invalid panning model");
321 }
322 }
323}
324
325void PannerNode::setDistanceModel(DistanceModel model)
326{

Callers 1

playMethod · 0.80

Calls 4

valueUint32Method · 0.80
getMethod · 0.80
setUint32Method · 0.80
resetMethod · 0.45

Tested by

no test coverage detected