Example #1
0
Lav_PUBLIC_FUNCTION LavError Lav_createMultipannerNode(LavHandle simulationHandle, char* hrtfPath, LavHandle* destination) {
	PUB_BEGIN
	auto simulation = incomingObject<Simulation>(simulationHandle);
	LOCK(*simulation);
	auto hrtf = createHrtfFromString(hrtfPath, simulation->getSr());
	*destination = outgoingObject<Node>(createMultipannerNode(simulation, hrtf));
	PUB_END
}
Example #2
0
PannerBankNode::PannerBankNode(std::shared_ptr<Simulation> sim, int pannerCount, std::shared_ptr<HrtfData> hrtf): SubgraphNode(Lav_OBJTYPE_PANNER_BANK_NODE, sim)  {
	if(pannerCount < 2) ERROR(Lav_ERROR_RANGE, "Must use at least 2 panners.");
	input_gain = createGainNode(simulation);
	output_gain =createGainNode(simulation);
	input_gain->resize(pannerCount, pannerCount);
	for(int i = 0; i < pannerCount; i++) {
		input_gain->appendInputConnection(i, 1);
		input_gain->appendOutputConnection(i, 1);
	}
	output_gain->resize(2, 2);
	output_gain->appendInputConnection(0, 2);
	output_gain->appendOutputConnection(0, 2);
	setInputNode(input_gain);
	setOutputNode(output_gain);
	for(int i = 0; i < pannerCount; i++) {
		panners.push_back(createMultipannerNode(simulation, hrtf));
		input_gain->connect(i, panners[i], 0);
		panners[i]->connect(0, output_gain, 0);
	}
	appendOutputConnection(0, 2);
}
std::shared_ptr<Node> EnvironmentNode::createPannerNode() {
	auto pan = createMultipannerNode(simulation, hrtf);
	pan->connect(0, output, 0);
	return pan;
}