# Picadae Calibration Programs ## Install sudo dnf install python3-devel jack-audio-connection-kit-devel prerequisites: pyyaml sounddevice soundfile pthon-rtmidi export PYTHONPATH=${HOME}/src/picadae/control/app python p_ac.py -c p_ac.yml ## Data collection Record a sequence of notes of decreasing dynamic level python p_ac.py # start the interactive data collection program Capture note 60 and 61 using the full_pulseL[] and holdDutyPctD{} from the p_ac.yml `c 60 61` ## Plot Cheat Sheet ![Plot Seq 1](doc/do_td_plot.png) Print a specific pitch and take. ```` python plot_seq.py p_ac.yml ~/temp/p_ac_3_of td_plot 60 2 do_td_plot(inDir,cfg.analysisArgs, pitch, take_id ) ```` --- ![Multi Usec dB](doc/us_db.png) Plot all the takes for a given pitch ```` python plot_seq_1.py p_ac.yml ~/temp/p_ac_3_od us_db 84 ```` --- ![Overlapping USec dB](doc/us_db_takes.png) Plot a specific set of pitches and takes. ```` python plot_seq_1.py p_ac.yml ~/temp/p_ac_3_of us_db_pitch_take 75 0 76 0 77 0 78 0 72 10 73 1 74 1 ```` --- ![Overlapping USec dB](doc/us_db_takes_last.png) Plot the last take from a list of pitches. ```` python plot_seq_1.py p_ac.yml ~/temp/p_ac_3_of us_db_pitch_last 77 78 79 80 ```` --- ![Multi Plot 1](doc/multi_plot.png) Plot the time domain envelope for a specific set of pitches and takes. ```` python plot_seq.py p_ac.yml ~/temp/p_ac_3_od td_multi_plot 60 3 60 4 60 5 plot_seq.py `do_td_multi_plot(inDir,cfg.analysisArgs,[(36,4), (48,2)] ) ```` --- ![Spectral Ranges](doc/plot_spectral_ranges.png) Plot the spectrum with harmonic location markers of a specific set of pitches and takes. ```` # pitch0 takeId0 pitch1 takeId1 python plot_seq.py p_ac.yml ~/temp/p_ac_3_od plot_spectral_ranges 60 3 60 4 ```` --- ![Usec dB Spread](doc/us_db_map.png) Plot the microsecond variance to achieve a given decibel value. ```` python plot_seq_1.py p_ac.yml ~/temp/p_ac_3_od us_db_map 84 72 ```` --- ![Resample](doc/resample_pulse_times.png) Analyze all takes for given pitch and show the mean us/db curve and places where resampling may be necessary. ```` python plot_seq.py p_ac.yml ~/temp/p_ac_3_of resample_pulse_times 84 ```` --- ![Min Max](doc/min_max_db.png) Plot the min and max decibel values for specified pitches. ```` python plot_seq_1.py p_ac.yml ~/temp/p_ac_3_od min_max 36 48 60 72 84 ```` --- ![Min Max 2](doc/min_max_db_2.png) Plot the min and max decibel values for specified pitches. ```` # pitch0 pitch1 pitch2 pitch3 pitch4 takeId python plot_seq_1.py p_ac.yml ~/temp/p_ac_3_od min_max_2 36 48 60 72 84 2 ```` --- ![Manual dB](doc/manual_db.png) Plot the min and max decibel values for specified set of manually corrected pitches. ```` python plot_seq_1.py p_ac.yml ~/temp/p_ac_3_od manual_db ```` Interpolate across the min and max db values to form the min/max curves for the complete set of keys. The anchor points for the curves are taken from cfg record manuMinD,manualAnchorPitchMinDbL, and manualMaxDbL. ```` # select the event (takeId, eventIdx) to use to represent the min value for each pitch manualMinD: { 36: [2, 10], 48: [2, 10], 60: [2, 10], 72: [2, 10], 84: [2, 10] }, # leave 60 out of the min anchor point list manualAnchorPitchMinDbL: [ 36,48,72,84 ], manualAnchorPitchMaxDbL: [ 36,48,60,72,84 ], ````