Giter Club home page Giter Club logo

aurallearner's People

Contributors

anthonydickson avatar icantthinkofacreativeusername avatar jmannn avatar

aurallearner's Issues

Pitch detection can not be restarted after being stopped.

The pitch detector class from the new library that we are using works fine for the most part, but if you call stop() on an AudioDispatcher instance created via the AudioDispatcherFactory and then try to start a new thread using the same instance, the AudioDispatcher instance does not produce any pitch readings.

It seems that this is caused by the AudioRecord instance used internally is not being released properly, but I'm not quite sure.

Pitch detection generalize

need to make pitch detector check all octaves so that the vocal range of the singer does not matter, just the how close they were to the note (irrespective of the octave)

Grader is still using the old FFT code.

Grader should be updated so that it uses the new pitch detection library. Examples of how this library can be used can be found in the PitchMatchingExercise class.

voice control

Check if it is viable in android sdk, or potentially iOS

  • Menu navigation

Provide better feedback in the intervals exercise.

When a user sings an interval, they should be at least shown the notes they sang. They could also be shown some measure of how far the notes they sang were from the target notes (for example, distance in semitones or cents).

Voice control is buggy

It doesn't hear the user's input correctly occasionally.
It seems to struggle with the shorter commands such as 'help', 'terminology', and 'about'; but seems to be fine with longer commands such as 'open melodies hard help'.

User Feedback

  • We need to ignore the user sung octave and just grade to target note

  • All notes used by exercise should be within a a generally singable range

  • The user exercise should play the exercise, then have the user sing it from memory

  • After, it should be graded

  • Grading it should include telling the user wether they were usually above pitch, below pitch or
    indeterminate

  • It should give an overall score of Excellent, good, bad. Excellent being audibly the same, good being close but some off pitches, bad should be unacceptable.

  • The next part should play the user input against the demonstration. The idea being that pitch axis theory should give good feedback. The user should be able to tell how close they were given the frequency of the fluctuations

Potential things to implement unit tests for

Let me know if you think this is either overkill or not thorough enough.

(Note: when I say “check that x does the math right”, I mean we give it a certain frequency we know the associated cents etc for, and we check that it gets those values as it should, in the case of note, or other numbers for other contexts)

Note
	-check that sending an invalid frequency throws an exception
	-check that sending an invalid String throws an exception
	-check that each constructor calculates the correct values for each global variable (including through generateTone())
	-check that getNoteLength returns the note length given to create the note
	-check that octave does the math right
	-check that halfStepDistance does the math right
	-check that frequency does the math right
	-check that both centDifference methods do the math right
	-check that both centDistanceClamped methods do the math right
	-check that compareTo gives the right number of half steps
	-check that equals knows what’s a note and what’s not
	-check getNameIndex, getFrequency, getOctave, getCents, getDuration, getName(), 		getName(bool) and toString all return the correct variables
	-check that setNoteLength correctly alters each relevant variable
	-maybe check the log tag for play is accurate (I don’t know how we’d do a unit test for a hardware thing)
	-if we check the log tag for play we’d also check the log tag for onDone

Grader
	-check that both constructors create the correct variable values (which would 			inherently also check reset since it’s called by the empty constructor)
	-check that getScore returns the right variable
	-check handlePitch’s log tag for invalid frequencies and check that it adds to 			frequencyReadings correctly
	-maybe check start’s log tag
	-check that playNextNote gets the correct next note in the sequence
	-check log tag for onNoteDone for valid and invalid frequencyReadings sizes
	-check log tag is accurate for onSequenceDone
	-check calculateScore’s log tag is accurate and that it does the math right
	-maybe check log tag for stop

IntervalExerciseCreator
	-check that the constructor creates the correct interval
	-check that pickInterval returns the correct interval

MelodyExerciseCreator
	-check that the constructor creates the correct melody
	-check that pickMelody returns the correct melody
	-check that scaleGenerator generates the correct scale

MenuAction
	-check that the constructor sets the Strings properly

PitchDetector
	-check that both constructors set all of the global variables properly
	-check that start sets state to State.BUSY
	-check that stop sets state to State.READY

Playable
	-check that the constructor sets isPlaying to false without issue
	-check that delegate is no longer null when setDelegate is called
	-check that stop (and therefore onDone) set isPlaying to false without issue

TextToSpeechManager
	-check that calling the constructor makes instance no longer null and returns it
	-check that init sets the global variables properly
	-check logs for restart, close and pause are accurate

Utilities
	-check that it returns -1 when something doesn’t exist in the ArrayList
	-check that it returns the correct index when something does exist in the ArrayList

VoiceRecognitionManager
	-check that the constructor makes the global variables what they’re meant to be
	-check that getInstance makes instance no longer null and returns it properly
	-check that init sets parentContext properly
	-check that setupRecognizer sets up recognizer properly
	-check that onPartialResults does nothing for null hypothesis
	-check for accurate log tags with onTimeOut, onEndOfSpeech, onResult, handleHypothesis, switchSearch, onError, pause, resume, restart and close
	-check that registerAction adds to the actions list without issue

IntervalsExercise
	-at least check that onCreate makes everything not null anymore (I’m not sure how you’d check the listeners)
	-check that startTargetPlayback, stopTargetPlayback, onPlaybackFinished, onGradingDone, startListening and stopListening set button visibility properly and set isListening to the correct value
	-check that setTargetRoot and setTargetInterval set the global variables properly

PitchMatchingExercise
	-for this one everything’s pretty much the same as IntervalsExercise with different method and variable names and maybe actually a couple things missing, so do the above

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.