bool Music::loadSoundEffect(const Common::String filename, bool loop, bool waitTillFinished) { Common::File *file = _vm->_resource->openDataFile(filename, MKTAG('D', 'I', 'F', 'F')); stopSoundEffect(); if (!file) return false; _vm->_anim->_doBlack = false; readSound(waitTillFinished, loop, file); return true; }
void audioin::createAudioDev() { QAudioDeviceInfo i(QAudioDeviceInfo::defaultInputDevice()); if(!i.isFormatSupported(format_)) { format_ = i.nearestFormat(format_); } else { input_ = new QAudioInput(format_); buffer_ = new QBuffer(); buffer_->open(QIODevice::ReadWrite); input_->start(buffer_); inbuf_ = (QBuffer*)buffer_; connect(inbuf_, SIGNAL(bytesWritten(qint64)), this, SLOT(writeReady(qint64))); connect(inbuf_, SIGNAL(readyRead()), this, SLOT(readSound())); } }
void ExperimentMFC_start (ExperimentMFC me) { try { long maximumStimulusPlaySamples, maximumResponsePlaySamples, maximumPlaySamples; long stimulusCarrierBeforeSamples = 0, stimulusCarrierAfterSamples = 0, maximumStimulusSamples = 0; long responseCarrierBeforeSamples = 0, responseCarrierAfterSamples = 0, maximumResponseSamples = 0; Melder_warningOff (); my trial = 0; NUMvector_free <long> (my stimuli, 1); NUMvector_free <long> (my responses, 1); NUMvector_free <double> (my goodnesses, 1); NUMvector_free <double> (my reactionTimes, 1); my playBuffer.reset(); my pausing = false; my numberOfTrials = my numberOfDifferentStimuli * my numberOfReplicationsPerStimulus; my stimuli = NUMvector <long> (1, my numberOfTrials); my responses = NUMvector <long> (1, my numberOfTrials); my goodnesses = NUMvector <double> (1, my numberOfTrials); my reactionTimes = NUMvector <double> (1, my numberOfTrials); /* * Read all the sounds. They must all have the same sampling frequency and number of channels. */ my samplePeriod = 0.0; my numberOfChannels = 0; if (my stimuliAreSounds) { if (my stimulusCarrierBefore. name && my stimulusCarrierBefore. name [0]) { readSound (me, my stimulusFileNameHead, my stimulusFileNameTail, my stimulusMedialSilenceDuration, & my stimulusCarrierBefore. name, & my stimulusCarrierBefore. sound); stimulusCarrierBeforeSamples = my stimulusCarrierBefore. sound -> nx; } if (my stimulusCarrierAfter. name && my stimulusCarrierAfter. name [0]) { readSound (me, my stimulusFileNameHead, my stimulusFileNameTail, my stimulusMedialSilenceDuration, & my stimulusCarrierAfter. name, & my stimulusCarrierAfter. sound); stimulusCarrierAfterSamples = my stimulusCarrierAfter. sound -> nx; } for (long istim = 1; istim <= my numberOfDifferentStimuli; istim ++) { readSound (me, my stimulusFileNameHead, my stimulusFileNameTail, my stimulusMedialSilenceDuration, & my stimulus [istim]. name, & my stimulus [istim]. sound); if (my stimulus [istim]. sound -> nx > maximumStimulusSamples) maximumStimulusSamples = my stimulus [istim]. sound -> nx; } } if (my responsesAreSounds) { if (my responseCarrierBefore. name && my responseCarrierBefore. name [0]) { readSound (me, my responseFileNameHead, my responseFileNameTail, my responseMedialSilenceDuration, & my responseCarrierBefore. name, & my responseCarrierBefore. sound); responseCarrierBeforeSamples = my responseCarrierBefore. sound -> nx; } if (my responseCarrierAfter. name && my responseCarrierAfter. name [0]) { readSound (me, my responseFileNameHead, my responseFileNameTail, my responseMedialSilenceDuration, & my responseCarrierAfter. name, & my responseCarrierAfter. sound); responseCarrierAfterSamples = my responseCarrierAfter. sound -> nx; } for (long iresp = 1; iresp <= my numberOfDifferentResponses; iresp ++) { readSound (me, my responseFileNameHead, my responseFileNameTail, my responseMedialSilenceDuration, & my response [iresp]. name, & my response [iresp]. sound); if (my response [iresp]. sound -> nx > maximumResponseSamples) maximumResponseSamples = my response [iresp]. sound -> nx; } } /* * Create the play buffer. */ maximumStimulusPlaySamples = lround (my stimulusInitialSilenceDuration / my samplePeriod) + lround (my stimulusFinalSilenceDuration / my samplePeriod) + stimulusCarrierBeforeSamples + maximumStimulusSamples + stimulusCarrierAfterSamples + 2; maximumResponsePlaySamples = lround (my responseInitialSilenceDuration / my samplePeriod) + lround (my responseFinalSilenceDuration / my samplePeriod) + responseCarrierBeforeSamples + maximumResponseSamples + responseCarrierAfterSamples + 2; maximumPlaySamples = maximumStimulusPlaySamples > maximumResponsePlaySamples ? maximumStimulusPlaySamples : maximumResponsePlaySamples; my playBuffer = Sound_create (my numberOfChannels, 0.0, maximumPlaySamples * my samplePeriod, maximumPlaySamples, my samplePeriod, 0.5 * my samplePeriod); /* * Determine the order in which the stimuli will be presented to the subject. */ if (my randomize == kExperiment_randomize_CYCLIC_NON_RANDOM) { for (long itrial = 1; itrial <= my numberOfTrials; itrial ++) my stimuli [itrial] = (itrial - 1) % my numberOfDifferentStimuli + 1; } else if (my randomize == kExperiment_randomize_PERMUTE_ALL) { for (long itrial = 1; itrial <= my numberOfTrials; itrial ++) my stimuli [itrial] = (itrial - 1) % my numberOfDifferentStimuli + 1; permuteRandomly (me, 1, my numberOfTrials); } else if (my randomize == kExperiment_randomize_PERMUTE_BALANCED) { for (long ireplica = 1; ireplica <= my numberOfReplicationsPerStimulus; ireplica ++) { long offset = (ireplica - 1) * my numberOfDifferentStimuli; for (long istim = 1; istim <= my numberOfDifferentStimuli; istim ++) my stimuli [offset + istim] = istim; permuteRandomly (me, offset + 1, offset + my numberOfDifferentStimuli); } } else if (my randomize == kExperiment_randomize_PERMUTE_BALANCED_NO_DOUBLETS) { for (long ireplica = 1; ireplica <= my numberOfReplicationsPerStimulus; ireplica ++) { long offset = (ireplica - 1) * my numberOfDifferentStimuli; for (long istim = 1; istim <= my numberOfDifferentStimuli; istim ++) my stimuli [offset + istim] = istim; do { permuteRandomly (me, offset + 1, offset + my numberOfDifferentStimuli); } while (ireplica != 1 && my stimuli [offset + 1] == my stimuli [offset] && my numberOfDifferentStimuli > 1); } } else if (my randomize == kExperiment_randomize_WITH_REPLACEMENT) { for (long itrial = 1; itrial <= my numberOfTrials; itrial ++) my stimuli [itrial] = NUMrandomInteger (1, my numberOfDifferentStimuli); } Melder_warningOn (); } catch (MelderError) { Melder_warningOn (); my numberOfTrials = 0; NUMvector_free (my stimuli, 1); my stimuli = nullptr; Melder_throw (me, U": not started."); } }