Skip to content
saul-calderonramirez edited this page Apr 23, 2013 · 5 revisions

AUD-SWIPE-P

Aud-SWIPE-P is a parallelized version of Aud-SWIPE, a pitch detection algorithm which aims to perform a better pitch estimation in signals with missing or attenuated harmonics. Aud-SWIPE-P creates multiple processes and threads, using MPI-2 y Open-MP respectively.

  1. PROJECT REPOSITORY INFORMATION

Aud_SWIPE_P_1.01 is the latest version of the software. It’s developed in C and has the latest user functionality. Aud_SWIPE_MATLAB is the original version of Aud-SWIPE, developed in MATLAB©. We have tested the outputs from both versions, and we have obtained around a 3% of difference. We are working on lower this margin, however if you doubt about the results given by Aud-SWIPE-P feel free to try the MATLAB version of Aud-SWIPE and compare results. If you find an important difference between the results of both versions, please send us an email to saul.calderonramirez@ucr.ac.cr reporting the bug, with detailed input /output information. 2. INSTALLATION 1.1 LINUX Aud-SWIPE-P has only been tested in LINUX. All the large libraries should be available as packages if you're using a "modern" distro. For instance, on a current Debian/Ubuntu system (Ubuntu 9.04, "Jaunty Jackalope", kernel 2.6.28-13-generic), Run (as superuser): sudo apt-get install libblas-dev liblapack-dev libfftw3-dev libsndfile1-dev You also need to install the latest MPI-2 library of your preference. The tested versions are the Open-MPI and MPICH2. For example if you want to use Open-MPI, run: apt-get install openmpi-bin openmpi-doc libopenmpi-dev This installed the necessary libraries and all their dependencies.

  1. RUNNING AUD-SWIPE-P Aud-SWIPE-P parameters are described as follows: FLAG DESCRIPTION DEFAULT -i FILE_INPUT Input file, must be a monoaural wav file. Stdin

-o FILE_OUTPUT Output file Stdout

-r MIN:MAX Pitch range in Hertz 100:600

-s THRSHLD Candidate strength threshold [0 to 1] 0.3

-t SECONDS Time period of pitch calculation 0.001

-p PD The parallelism degree desired. It states how many processes per windodw sizes are going to be created. 1 states that every window will be assigned to one processes, thus creating the maximum number of processes possible. If PD=0, no additional processes are going to be created. 0

-z TIME_TEST Stores the execution times and other statistics in a file None

In order to execute Aud-SWIPE-P using multiple processes (with a PD higher than 0) the user must take into account the characteristic of processes breeding that makes a new process start the program execution from the entry point (main function). Thus, the user must ensure that only one process is running in non-Aud-SWIPE-P’s code. This must be done for all the code before Aud-SWIPE’s invocation, since Aud-SWIPE-P kills the processes created by its code. To do so, the user must create conditional code for the custom code checking if the master process is the one executing the code. The user must initiate MPI environment before the function invocation and the master process execution check. Finally, the name of the program executable must be assigned to the variable EXE_NAME, before the function invocation, and the arguments of the program must be sent to Aud-SWIPE-‘s function. An example for a user code invocation is: EXE_NAME = "aswipep"; //argc, number of program arguments and argv, program arguments

initMPI( argc, argv );

if(getProcessId()==0){

//user’s code..

}

aud_swipe_p(wav, min, max, st, dt, argv, pd, testFileName);

//After invocation, processes created by aud_swipe_p are killed.

If you want to run Aud-SWIPE-P without multiple processes, you can just initialize the MPI environment without the need of the conditional block. For this, the PD must be .0.

  1. AUD-SWIPE-P SOURCE CODE DESCRIPTION For implementation details, you can generate the doxygen documentation of the code.
  2. ACKNOWLEDGEMENTS The development team of Aud-SWIPE is integrated by bsc. Saul Calderón, bsc. Gabriel Alvarado and Phd. Arturo Camacho. This code uses parts of a SWIPE C code implementation developed Kyle Gorman, available at https://github.com/kylebgorman/swipe. Aud-SWIPE-P also uses filtering functions developed by Alexander Alexander Iakovlev.
Clone this wiki locally