Esempio n. 1
0
void main(int argc, char** args) {
	if(argc != 2) {
		printf("Syntax: %s <path>");
		return;
	}

	char* path = args[1];
	LavHandle node;
	LavHandle simulation;
	ERRCHECK(Lav_initialize());
	ERRCHECK(Lav_createSimulation(44100, 1024, &simulation));
	ERRCHECK(Lav_simulationSetOutputDevice(simulation, -1, 2, 2));
	ERRCHECK(Lav_createBufferNode(simulation, &node));
	LavHandle buffer;
	ERRCHECK(Lav_createBuffer(simulation, &buffer));
	ERRCHECK(Lav_bufferLoadFromFile(buffer, path));
	ERRCHECK(Lav_nodeSetBufferProperty(node, Lav_BUFFER_BUFFER, buffer));
	LavHandle limit;
	ERRCHECK(Lav_createHardLimiterNode(simulation, 2, &limit));
	ERRCHECK(Lav_nodeConnect(node, 0, limit, 0));
	ERRCHECK(Lav_nodeSetEvent(node, Lav_BUFFER_END_EVENT, endOfBufferCallback, nullptr));
	ERRCHECK(Lav_nodeConnectSimulation(limit, 0));
	//enter the transducer loop.
	char command[1024];
	printf("Commands: q(q)uit, (s)eek, (v)olume, (p)itch bend\n");
	printf("pl(a)y/pause\n");
	bool isPlaying = true;
	while(1) {
		fgets(command, 1023, stdin);
		if(command[0] == 'q') break;
		float value;
		char* start = &command[1];
		while(*start == ' ') start+=1; //skip spaces.
		sscanf(start, "%f", &value);
		switch(command[0]) {
			case 'p': Lav_nodeSetFloatProperty(node, Lav_BUFFER_PITCH_BEND, value); break;
			case 'v': Lav_nodeSetFloatProperty(node, Lav_NODE_MUL, value); break;
			case 's': Lav_nodeSetDoubleProperty(node, Lav_BUFFER_POSITION, value); break;
			case 'a': isPlaying = ! isPlaying; Lav_nodeSetIntProperty(node, Lav_NODE_STATE, isPlaying == false ? Lav_NODESTATE_PAUSED: Lav_NODESTATE_PLAYING); break;
			default: printf("Unrecognized command.\n"); break;
		}
	}
	return;
	Lav_shutdown();
}
Esempio n. 2
0
LavError createDoppleringDelay(LavHandle s, LavHandle& h) {
	ERRCHECK(Lav_createDoppleringDelayNode(s, 0.1, 1, &h));
	ERRCHECK(Lav_nodeSetFloatProperty(h, Lav_DELAY_DELAY, 0.1));
	return Lav_ERROR_NONE;
}