コード例 #1
0
ファイル: gain.cpp プロジェクト: camlorn/libaudioverse
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
ファイル: multipanner.cpp プロジェクト: zaolij/libaudioverse
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);
}
コード例 #3
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));
}
コード例 #4
0
ファイル: panner_bank.cpp プロジェクト: zaolij/libaudioverse
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);
}
コード例 #5
0
ファイル: ringmod.cpp プロジェクト: camlorn/libaudioverse
RingmodNode::RingmodNode(std::shared_ptr<Server> s): Node(Lav_OBJTYPE_RINGMOD_NODE, s, 2, 1) {
	appendInputConnection(0, 1);
	appendInputConnection(1, 1);
	appendOutputConnection(0, 1);
	setShouldZeroOutputBuffers(false);
}
コード例 #6
0
ファイル: square.cpp プロジェクト: zaolij/libaudioverse
SquareNode::SquareNode(std::shared_ptr<Simulation> simulation): Node(Lav_OBJTYPE_SQUARE_NODE, simulation, 0, 1) {
	appendOutputConnection(0, 1);
}
コード例 #7
0
ファイル: buffer.cpp プロジェクト: zmxu/libaudioverse
BufferNode::BufferNode(std::shared_ptr<Simulation> simulation): Node(Lav_OBJTYPE_BUFFER_NODE, simulation, 0, 1),
player(simulation->getBlockSize(), simulation->getSr()) {
	appendOutputConnection(0, 1);
	getProperty(Lav_BUFFER_BUFFER).setPostChangedCallback([&] () {bufferChanged();});
	end_callback = std::make_shared<Callback<void()>>();
}
コード例 #8
0
ファイル: hrtf.cpp プロジェクト: camlorn/Unspoken
HrtfNode::HrtfNode(std::shared_ptr<Simulation> simulation, std::shared_ptr<HrtfData> hrtf): Node(Lav_OBJTYPE_HRTF_NODE, simulation, 1, 2),
panner(simulation->getBlockSize(), simulation->getSr(), hrtf) {
	appendInputConnection(0, 1);
	appendOutputConnection(0, 2);
}
コード例 #9
0
AdditiveTriangleNode::AdditiveTriangleNode(std::shared_ptr<Simulation> simulation): Node(Lav_OBJTYPE_ADDITIVE_TRIANGLE_NODE, simulation, 0, 1), oscillator(simulation->getSr()) {
	appendOutputConnection(0, 1);
	setShouldZeroOutputBuffers(false);
}
コード例 #10
0
ファイル: blit.cpp プロジェクト: camlorn/libaudioverse
BlitNode::BlitNode(std::shared_ptr<Server> server): Node(Lav_OBJTYPE_BLIT_NODE, server, 0, 1), oscillator(server->getSr()) {
	appendOutputConnection(0, 1);
	setShouldZeroOutputBuffers(false);
}
コード例 #11
0
BufferTimelineNode::BufferTimelineNode(std::shared_ptr<Simulation> simulation, int channels): Node(Lav_OBJTYPE_BUFFER_TIMELINE_NODE, simulation, 0, channels) {
	if(channels <= 0) ERROR(Lav_ERROR_RANGE, "Channels must be greater than 0.");
	appendOutputConnection(0, channels);
	output_channels= channels;
}
コード例 #12
0
ファイル: sine.cpp プロジェクト: zaolij/libaudioverse
SineNode::SineNode(std::shared_ptr<Simulation> simulation): Node(Lav_OBJTYPE_SINE_NODE, simulation, 0, 1), oscillator(simulation->getSr()) {
	appendOutputConnection(0, 1);
}