Skip to contents

Top level

Functions used to launch musicassessr tests.

make_musicassessr_test()
Make a musicassessr test
musicassessr_opt()
Specify options for a musicassessr test.
include_musicassessr_js()
Include musicassessr scripts in a webpage
setup_pages_options()
Setup page options for a musicassessr test
musical_test_showcase()
Launch the musical test showcase of musicassessr tests

Trial blocks

Functions for recording data in psychTestR

adaptive_arrhythmic_melody_trials()
Adaptive arrhythmic melody trials block
arrhythmic_melody_trials()
Arrhythmic melody trials block
audio_melodic_production_trials()
Present a trial block of melodies from audio files
find_this_note_trials()
Present "Find This Note" trials
interval_perception_trials()
A block which test a participant's perception of intervals
long_tone_trials()
Present a block of long tone trials
melody_trials()
Melody trials constructor
rhythmic_melody_trials()
Rhythmic melody trials block
sing_arrhythmic_melody_trials()
Sing arrhythmic melody trial block
sing_rhythmic_melody_trials()
Sing rhythmic melody trial block
wjd_audio_melody_trials()
A trial block which plays back real audio from the Weimar Jazz Database
empty_code_block()
An empty code block
print_code_block()
Print code block for testing
record_and_present_audio_block()
A block for playing melodies as audio then recording the participant response
record_audio_block()
A block of record audio pages
record_key_presses_block()
A block of record key press pages
record_midi_block()
A block of record MIDI pages

Pages

Functions for recording data in psychTestR

empty_page()
An empty page (with trigger button hidden and possible to show on demand.)
get_user_info_page()
Check a user has the requirements to run our test and record their browser information
get_voice_range_page()
A page to select a voice range
microphone_calibration_page()
Microphone Calibration Page
microphone_type_page()
Microphone Type Page
multi_interval_page()
Deploy a block of n trials which play back intervals
play_long_tone_record_audio_page()
Create a page which produces a given tone
record_audio_page()
Page to record audio in psychTestR
record_midi_page()
Page to record MIDI in psychTestR
redirect_page()
A page for redirecting a participant after x ms
select_midi_device_page()
Create a page for selecting a MIDI device
select_musical_instrument_page()
Page to select what instrument the participant is using
select_voice_page()
A page for selecting a voice before a play words page
set_condition_page()
Allow the experimenter to set a condition at the beginning of the test
share_score_page()
A page for sharing scores.
sing_happy_birthday_page()
A page to identify a user's singing range by asking them to sing Happy Birthday
test_headphones_page()
Test headphones page
video_melodic_production_page()
Video melodic production page
wait_for_api_page()
Wait for API page
get_SNR_pages()
Get SNR pages
get_instrument_range_pages()
Get Instrument Range Pages
multi_play_long_tone_record_audio_pages()
Build multiple play_long_tone_record_audio_pages based on a user's range
setup_pages()
Setup pages for musicassessr test
get_SNR_pages_loop()
Get SNR pages as a loop (i.e., the participant can take multiple attempts)
multi_page_play_melody_loop()
A page builder for creating a specified number of play_melody_loops
play_melody_loop()
Create a psychTestR test loop for having several attempts at playing back a melody.

Present Stimuli

Functions for presenting stimuli

present_stimuli()
Present stimuli
present_stimuli_midi_notes_both()
Present midi notes in both visual and auditory modalities
present_stimuli_midi_notes_visual()
Present MIDI notes as musical notation

Scoring

Functions for scoring results

score_melodic_production()
Score using melodic production measures
score_melody_interval_precision()
Score melody interval precision
score_melody_note_precision()
Score melody note precision
get_opti3()
Get opti3
opti3()
Score using the opti3 measure of similarity
opti3_df()
opti3 for melodies read by read_melody returns sorted tibble of transpositions of melody2 and opti3 similarity
ngrukkon()
ngrukkon as in Müllensiefen & Frieler (2004)
rhythfuzz()
Compute the rhythfuzz measure
harmcore()
Compute harmcore
pmi()
PMI similarity measure

Sampling functions

Functions for sampling from an item bank

item_sampler()
Item sampler (stratified sampling)
item_sampler_v1()
Item sampler (stratified sampling)
item_sampler_v2()
Item sampler (stratified sampling) v2
sample_melody_in_key_v2()
Sample melody in key (v2)

Feedback functions

Functions for presenting feedback to participants

feedback_image()
Feedback as an image
feedback_melodic_production()
Feedback for melodic production pages
feedback_melodic_production_simple()
Simple melodic production feedback
feedback_rhythm_production()
Feedback for rhythm production style pages
add_feedback_with_progress()
Helper for adding a feedback function to a timeline of pages with a progress bar

Get answer functions

psychTestR get_answer functions (i.e., to grab recorded data)

get_answer_add_trial_and_compute_trial_scores_s3()
Get answer
get_answer_meta_data()
Store answer meta data
get_answer_midi()
Get answer for a MIDI page
get_answer_midi_melodic_production()
Get a MIDI result and compute melodic production scores
get_answer_onset_detection()
Get onset information from an audio file
get_answer_pyin()
Get answer by running pyin on a recorded audio file
get_answer_pyin_long_note()
get_answer pyin for long notes
get_answer_pyin_melodic_production()
Analyse a melody with pyin then compute melodic production scores
get_answer_pyin_melodic_production_additional_measures()
Wrapper to add user-specified additional scoring measures to pYIN melodic production
get_answer_rhythm_production()
Get answer for rhythm production data
get_answer_save_audio_file()
Simple saving of the corresponding URL of a trial file
get_answer_simple_pyin_summary()
summarise pyin output with basic statistics

Test utils

Functions to help test musicassessr components

test_recording_app()
A quick app to test recording functionality

Database functions

Functions for working with MySQL Databases

set_instrument()
Set instrument ID
set_instrument_range()
Set a dummy range (to avoid having to manually set in the test)
set_response_type()
Set response type for a test manually
set_test()
Set test ID

Parameter display helper functions

Helper functions to display what parameters can be used in musicassessr

list_official_tests()
List official musicassessr tests
list_tone_sound_types()
List tone sound types

Utilities

Utility/low-level functions

add_feedback()
Helper for adding a feedback function to a timeline of pages
calculate_stable_part()
Calculate metrics related to "changepoints" in a time series (e.g., for long note trials) Input: df with "freq" column
create_socials()
Create an interface to share test score on socials
deploy_demographics()
Deploy Demographics via psyquest
dict()
Use musicassessr standard dictionary plus concatenate with your own
download_files_from_ec2()
Download files from the ec2 instance (in batches)
empty_code_block()
An empty code block
end_of_long_note_trial_screening()
End of long note trial screening code block
end_session()
End session
expand_string_df_row()
Expand a string dataframe row to a dataframe
filler_task()
Deploy a filler task
final_page_or_continue_to_new_test()
Should the end of the test present a final page or not?
find_closest_stimuli_pitch_to_user_production_pitches()
Find the closest pitch(s) in a stimulus, to the notes a user produced
get_implicit_harmonies()
get harmonies via the Krumhansl-Schmuckler algorithm
get_instrument_range()
Get instrument range
get_long_note_pcas()
Get long note PCA scores
get_melody_dtw()
Compute the dynamic time warp distance between a melodic stimuli and a user's continuous pitch curve, attempting to sing that stimuli
get_promise_value()
Get value from a promise
grab_meta_data()
Grab meta data from a df
have_requirements()
Check if user has requirements for musicassessr test
insert_item_into_every_other_n_position_in_list()
Insert item into every other n position in list
is_null_or_not_all_TRUE()
Is NULL or not all TRUE?
long_note_pitch_metrics()
Compute long tone pitch metrics
melconv()
Melconv
melconv_from_pyin_res()
Melconv from a pyin result
musicassessr_dict
The musicassessr dictionary
musicassessr_init()
Initiate a musicassessr test
musicassessr_js()
musicassessr scripts
ngrukkon_safe()
An ngrukkon wrapper to produce warnings and return NAs rather than stop if one entry is too short
paradigm()
Choose a melody paradigm
plot_dtw_melody()
Plot a melody after being transformed into a representation for use with the dynamic time warp algorithm
plot_longitudinal()
Plot longitudinal
plot_normal_dist_plus_score()
Plot a normal distribution with a certain score highlighted
prepare_mel_stimuli_for_dtw()
Convert a melody to a pseudo-timeseries representation
psych_test_snap()
Useful function for randomising which of 2 blocks goes first (or forcing it with force_snap)
read_melody()
read a pYIN note track (outputted from Sonic Annotator or Tony) and make it nice
rel_to_abs_mel_mean_centred()
Convert a melody from relative to absolute form by centering the mean of the stimuli on mean of the user's range.
render_scores_table()
Render scores in a shiny table
sample_arrhythmic()
Sample arrhythmic
sample_from_user_range()
Sample from the user's range (determined at test time)
sample_melody_in_key()
Sample melody in key
sample_random()
Randomly sample num_items per dataframe
sample_review()
Sample review
sample_rhythmic()
Sample rhythmic
set_default_range()
Get the default range for an instrument
set_melodic_stimuli()
Set melodic stimuli
songbird_welcome_page_fun()
Songbird welcome
test_acronym_to_name()
Test acronym to its full name
tidy_melodies()
Tidy melodies from psychTestR results object
to_string_df()
Useful (but unsophisticated) util to collapse a df into a pretty string df
translate_from_dict()
Translate an item from musicassessr dictionary
unnest_timeline()
Unnest timeline helper
update_play_melody_loop_and_save()
Update play melody loop and save
wait_for_api_page()
Wait for API page
wrap_js_fun_body()
Helper to wrap some JS code in a function
wrap_musicassessr_timeline()
Wrap a timeline with musicassessr dict

Data

Data exports

long_note_agg
Aggregated long note data from SAA paper