Пример #1
0
Lav_PUBLIC_FUNCTION LavError Lav_createGainNode(LavHandle serverHandle, int channels, LavHandle* destination) {
	PUB_BEGIN
	auto server = incomingObject<Server>(serverHandle);
	LOCK(*server);
	auto retval= createGainNode(server);
	retval->resize(channels, channels);
	retval->appendInputConnection(0, channels);
	retval->appendOutputConnection(0, channels);
	*destination =outgoingObject<Node>(retval);
	PUB_END
}
Пример #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);
}
Пример #3
0
MultipannerNode::MultipannerNode(std::shared_ptr<Simulation> sim, std::shared_ptr<HrtfData> hrtf): SubgraphNode(Lav_OBJTYPE_MULTIPANNER_NODE, sim)  {
	hrtf_panner = createHrtfNode(sim, hrtf);
	amplitude_panner = createAmplitudePannerNode(sim);
	input=createGainNode(simulation);
	input->resize(1, 1);
	input->appendInputConnection(0, 1);
	input->appendOutputConnection(0, 1);
	input->connect(0, hrtf_panner, 0);
	input->connect(0, amplitude_panner, 0);
	appendOutputConnection(0, 0);
	setInputNode(input);
}
Пример #4
0
EnvironmentNode::EnvironmentNode(std::shared_ptr<Simulation> simulation, std::shared_ptr<HrtfData> hrtf): SubgraphNode(Lav_OBJTYPE_ENVIRONMENT_NODE, simulation)  {
	this->hrtf = hrtf;
	int channels = getProperty(Lav_ENVIRONMENT_OUTPUT_CHANNELS).getIntValue();
	output = createGainNode(simulation);
	output->resize(channels, channels);
	output->appendInputConnection(0, channels);
	output->appendOutputConnection(0, channels);
	appendOutputConnection(0, channels);
	setOutputNode(output);
	environment_info.world_to_listener_transform = glm::lookAt(
		glm::vec3(0.0f, 0.0f, 0.0f),
		glm::vec3(0.0f, 0.0f, -1.0f),
		glm::vec3(0.0f, 1.0f, 0.0f));
}