Skip to content
Snippets Groups Projects
Select Git revision
  • 774b1909832a802336dfa8267322ebd7a8f4cdd2
  • master default protected
  • develop protected
  • feature/asio-profile
  • ti_lab_build
  • mbe
  • asio_stream_debugging_tools
  • ba_2016_heimes
  • jst
  • fabian
  • ITADataSources_v2024a
  • VA_v2023b
  • VA_v2023a
  • VA_v2022a
  • before_cmake_rework
  • v2021.a
  • v2020.a
  • v2019.a
  • v2018.b
  • v2018.a
  • v2017.d
  • v2017.c
  • v2017.b
  • good_after_refactoring
  • first_good_running_netaudio
  • v2017.a
  • v2016.a
27 results

BufferDataSourceTest.cpp

Blame
  • Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    BufferDataSourceTest.cpp 2.94 KiB
    #include <ITAException.h>
    #include <ITABufferDataSource.h>
    #include <ITADataSourceUtils.h>
    #include <stdio.h>
    #include <vector>
    #include <iostream>
    
    using namespace std;
    
    int main(int argc, char* argv[]) {
    
    	ITABufferDatasource* pSource = 0;
    	const unsigned int uiBuffersize = 1000;
    	float* pfRamp = new float[uiBuffersize];
    	for (unsigned int i=0; i<uiBuffersize; i++)
    		pfRamp[i] = 2*(((float) i) / ((float) uiBuffersize-1)) - 1;
    	float* pfInvRamp = new float[uiBuffersize];
    	for (unsigned int i=0; i<uiBuffersize; i++)
    		pfInvRamp[i] = 1 - 2*(((float) i) / ((float) uiBuffersize-1));
    	std::vector<float*> v;
    	v.push_back(pfRamp);
    	v.push_back(pfInvRamp);
    
    	try {
    		pSource = new ITABufferDatasource(v, uiBuffersize, 44100, 128);
    		
    		printf("Blocklength: %d\n", pSource->GetBlocklength());
    		printf("Capacity: %d\n", pSource->GetCapacity());
    		printf("Cursor: %d\n", pSource->GetCursor());
    		printf("AbsCursor: %d\n", pSource->GetAbsoluteCursor());
    		printf("ROI: [%d, %d)\n", pSource->GetROIStart(), pSource->GetROIEnd());
    		printf("ROI-Length: %d\n", pSource->GetROILength());
    
    		// Kompletten Inhalt in eine Datei schreiben
    		WriteFromDatasourceToFile( pSource, "Complete.wav", pSource->GetCapacity() );
    
    		// Rckspulen testen
    		pSource->Rewind();
    		WriteFromDatasourceToFile(pSource, "CompleteRewind.wav", pSource->GetCapacity());
    
    		// Wiederholungsmodus testen
    		printf("\n\nLoop!\n\n\n");
    		pSource->SetLoopMode(true);
    		//pSource->Rewind();
    		WriteFromDatasourceToFile(pSource, "Loop.wav", uiBuffersize*4);
    
    		// Ausschnitt testen
    		printf("\n\nAusschnitt!\n\n\n");
    
    		pSource->SetLoopMode(false);
    		pSource->Rewind();
    		pSource->SetROI(300, 600);
    
    		printf("Capacity: %d\n", pSource->GetCapacity());
    		printf("Cursor: %d\n", pSource->GetCursor());
    		printf("AbsCursor: %d\n", pSource->GetAbsoluteCursor());
    		printf("ROI: [%d, %d)\n", pSource->GetROIStart(), pSource->GetROIEnd());
    		printf("ROI-Length: %d\n", pSource->GetROILength());
    
    		//pSource->Rewind();
    		WriteFromDatasourceToFile(pSource, "Section.wav", pSource->GetROILength());
    
    		printf("Capacity: %d\n", pSource->GetCapacity());
    		printf("Cursor: %d\n", pSource->GetCursor());
    		printf("AbsCursor: %d\n", pSource->GetAbsoluteCursor());
    		printf("ROI: [%d, %d)\n", pSource->GetROIStart(), pSource->GetROIEnd());
    		printf("ROI-Length: %d\n", pSource->GetROILength());
    
    		// Wiederholten Ausschnitt testen
    		printf("\n\nLoop-Ausschnitt!\n\n\n");
    		pSource->SetLoopMode(true);
    		pSource->Rewind();
    		WriteFromDatasourceToFile(pSource, "SectionLoop.wav", pSource->GetROILength()*3);
    
    		// Kleineren wiederholten Ausschnitt testen
    		pSource->SetROI(256, 384);
    		pSource->Rewind();
    		WriteFromDatasourceToFile(pSource, "SectionLoopShort.wav", pSource->GetROILength()*3);
    
    		// Leere Sektion
    		pSource->SetROI(800, 800);
    		WriteFromDatasourceToFile(pSource, "EmptyLoop.wav", pSource->GetROILength());
    
    		delete pSource;
    	} catch (ITAException& e) {
    		delete pSource;
    
    		cerr << e << std::endl;
    	}
    
    	delete pfRamp;
    	delete pfInvRamp;
    
    	return 0;
    }