Goto: [ Program Documentation ]
// // Programmer: Craig Stuart Sapp <craig@ccrma.stanford.edu> // Creation Date: Thu Jun 12 21:45:10 GMT-0800 1997 // Last Modified: Thu Jun 12 21:45:13 GMT-0800 1997 // Filename: ...sig/doc/examples/sig/sigfile/ab-test/ab-test.cpp // Syntax: C++; sig // // Description: Plays sound 1 as the reference, and then you choose between // two randomized selections using the two input soundfiles. // // Note: currently only works with NeXT computers. // #include <stdlib.h> #include <iostream.h> #include <time.h> #include <string.h> void exitUsage(char* commandName); int main(int argc, char* argv[]) { if (argc != 3) exitUsage(argv[0]); srand(time(NULL)); int reference = 1; int select1 = rand() % 2 + 1; // 1 or 2 int select2 = 3 - select1; // 2 or 1 char commandR[1000] = {}; char command1[1000] = {}; char command2[1000] = {}; strcat(commandR, "sndplay "); strcat(commandR, argv[reference]); strcat(command1, "sndplay "); strcat(command1, argv[select1]); strcat(command2, "sndplay "); strcat(command2, argv[select2]); int choice = 0; cout << "You must choose which of samples 1 and 2 are identical" << " to the reference." << endl; while (choice < 3 && choice >= 0) { cout << "Which sound to play:" << endl; cout << " 0 = reference, 1 = selection 1, " << "2 = selection 2, 3 = make choice: " << endl; cin >> choice; switch (choice) { case 0: system(commandR); break; case 1: system(command1); break; case 2: system(command2); break; } } if (choice == 3) { cout << "Which sample is identical to the reference (1 or 2): "; cin >> choice; if (choice == 1) { if (reference == select1) { cout << "You are correct!" << endl; } else { cout << "You are not correct." << endl; } } else if (choice == 2) { if (reference == select2) { cout << "You are correct!" << endl; } else { cout << "You are not correct." << endl; } } } return 0; } void exitUsage(char* commandName) { cout << endl; cout << "Program for testing perception of differences between two soundfiles.\n" << "The first sound file is the reference sound, and then sample 1 and\n" << "sample 2 are both the reference sound and the second soundfile in a\n" << "random order. Your goal is to match the reference soundfile with one\n" << "of the two selections.\n"; cout << endl; cout << "Usage: " << commandName << " reference alternate" << endl; cout << endl; exit(1); } // md5sum: a80e656ad0d6fecd5ff2176091b4011b ab-test.cpp [20050403]