picadae calibration programs
Go to file
2021-01-18 10:36:06 -05:00
doc README.md : Update and add new plots. 2020-11-30 10:12:38 -05:00
.gitignore .gitignore : ignore *.ipynb files. 2021-01-18 10:24:56 -05:00
AudioDevice.py AudioDevice.py : Change default channel count from 1 (mono) to 2 (stereo). 2020-11-25 14:42:40 -05:00
calibrate_plot.py Added license notices to all files. Initial commit: LICENCE and COPYRIGHT. 2020-10-26 14:57:43 -04:00
calibrate.py Added license notices to all files. Initial commit: LICENCE and COPYRIGHT. 2020-10-26 14:57:43 -04:00
ChordTester.py ChordTester.py,NoteTester.py,PolyNoteTester.py,VelTablePlayer.py : iniital commit. 2021-01-18 10:29:25 -05:00
common.py Added license notices to all files. Initial commit: LICENCE and COPYRIGHT. 2020-10-26 14:57:43 -04:00
convert.py Added license notices to all files. Initial commit: LICENCE and COPYRIGHT. 2020-10-26 14:57:43 -04:00
COPYING Added license notices to all files. Initial commit: LICENCE and COPYRIGHT. 2020-10-26 14:57:43 -04:00
do_td_plot.png README.md,doc/*.png : Updates to verify plotting and add example plots to README.md 2020-11-25 14:44:19 -05:00
elbow.py elbow.py : In find_elbow() change default 'pointsPerLine' to 5. 2021-01-18 10:34:42 -05:00
keyboard.py Added license notices to all files. Initial commit: LICENCE and COPYRIGHT. 2020-10-26 14:57:43 -04:00
LICENSE Added license notices to all files. Initial commit: LICENCE and COPYRIGHT. 2020-10-26 14:57:43 -04:00
MidiDevice.py MidiDevice.py : get_input() now loops until all available messages are received. 2021-01-18 10:32:23 -05:00
MidiFilePlayer.py Added license notices to all files. Initial commit: LICENCE and COPYRIGHT. 2020-10-26 14:57:43 -04:00
NoteTester.py ChordTester.py,NoteTester.py,PolyNoteTester.py,VelTablePlayer.py : iniital commit. 2021-01-18 10:29:25 -05:00
p_ac.py p_ac.py, p_ac.yml : Added use of VelTablePlayer,NoteTester,PolyNoteTester,ChordTester 2021-01-18 10:30:55 -05:00
p_ac.yml p_ac.py, p_ac.yml : Added use of VelTablePlayer,NoteTester,PolyNoteTester,ChordTester 2021-01-18 10:30:55 -05:00
plot_all_note_durations.ipynb Delete accidentallly tracked *.ipynb files 2021-01-18 10:24:33 -05:00
plot_calibrate.ipynb Delete accidentallly tracked *.ipynb files 2021-01-18 10:24:33 -05:00
plot_calibrate.py Added license notices to all files. Initial commit: LICENCE and COPYRIGHT. 2020-10-26 14:57:43 -04:00
plot_note_analysis.py Added license notices to all files. Initial commit: LICENCE and COPYRIGHT. 2020-10-26 14:57:43 -04:00
plot_seq_1.py plot_seq_1.py : Many changes and updates. 2021-01-18 10:35:14 -05:00
plot_seq.py plot_seq.py,plot_seq_1.py : Add new plots. 2020-11-30 10:13:18 -05:00
plot_us_db_range.ipynb Delete accidentallly tracked *.ipynb files 2021-01-18 10:24:33 -05:00
PolyNoteTester.py ChordTester.py,NoteTester.py,PolyNoteTester.py,VelTablePlayer.py : iniital commit. 2021-01-18 10:29:25 -05:00
README.md README.md : Update formatting. 2021-01-18 10:34:05 -05:00
result.py Added license notices to all files. Initial commit: LICENCE and COPYRIGHT. 2020-10-26 14:57:43 -04:00
rms_analysis.py rms_analysis.py : Don't crash in write_audacity_label_files() when seq.json does not exist. 2021-01-18 10:36:06 -05:00
rt_note_analysis.py rt_note_analysis.py : Change to support stereo signals. 2020-11-30 10:13:59 -05:00
velMapD.h Many changes and additions. 2020-02-29 00:01:58 -05:00
velMapD.json Many changes and additions. 2020-02-29 00:01:58 -05:00
VelTablePlayer.py ChordTester.py,NoteTester.py,PolyNoteTester.py,VelTablePlayer.py : iniital commit. 2021-01-18 10:29:25 -05:00
velTableToDataStruct.py Added license notices to all files. Initial commit: LICENCE and COPYRIGHT. 2020-10-26 14:57:43 -04:00

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


Print a specific pitch and take.

Plot Seq 1

    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 )

Plot all the takes for a given pitch

Multi Usec dB

python plot_seq_1.py p_ac.yml ~/temp/p_ac_3_od us_db 84

Plot a specific set of pitches and takes.

Overlapping USec dB

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

Plot the last take from a list of pitches.

Overlapping USec dB

python plot_seq_1.py p_ac.yml ~/temp/p_ac_3_of us_db_pitch_last 77 78 79 80

Plot the time domain envelope for a specific set of pitches and takes.

Multi Plot 1

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)] )

Plot the spectrum with harmonic location markers of a specific set of pitches and takes.

Spectral Ranges

#                                                                 pitch0 takeId0 pitch1 takeId1
python plot_seq.py p_ac.yml ~/temp/p_ac_3_od plot_spectral_ranges   60      3       60      4


Plot the microsecond variance to achieve a given decibel value.

Usec dB Spread

python plot_seq_1.py p_ac.yml ~/temp/p_ac_3_od us_db_map 84 72

Analyze all takes for given pitch and show the mean us/db curve and places where resampling may be necessary.

Resample

python plot_seq.py p_ac.yml ~/temp/p_ac_3_of resample_pulse_times 84

Plot the min and max decibel values for specified pitches.

Min Max

python plot_seq_1.py p_ac.yml ~/temp/p_ac_3_od min_max 36 48 60 72 84

Plot the min and max decibel values for specified pitches.

Min Max 2

#                                                        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

Plot the min and max decibel values for specified set of manually corrected pitches.

Manual dB

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 ],