diff --git a/public/pubs/Tom_Johnson_and_a_rational_theory_of_harmony.pdf b/public/pubs/Tom_Johnson_and_a_rational_theory_of_harmony.pdf
new file mode 100644
index 0000000..a8cfee4
--- /dev/null
+++ b/public/pubs/Tom_Johnson_and_a_rational_theory_of_harmony.pdf
@@ -0,0 +1,13488 @@
+%PDF-1.4
+%
+1 0 obj
+<<
+/Type /Catalog
+/Version /1.4
+/Pages 2 0 R
+/PageLabels 3 0 R
+/Metadata 4 0 R
+/Names 5 0 R
+/Outlines 6 0 R
+>>
+endobj
+7 0 obj
+<<
+/CreationDate (D:20260218161039+05'30')
+/Subject (Journal of Mathematics and Music, 2026. doi: 10.1080/17459737.2025.2591899)
+/Author (Michael Winter)
+/Creator (LaTeX with hyperref package + hypdvips)
+/Keywords (Harmony; harmonic space; harmonic replacement; connected subgraphs; graph theory; Hamiltonicity; musical morphologies)
+/Producer (Acrobat Distiller 8.1.0 \(Windows\))
+/ModDate (D:20260218161039+05'30')
+/Title (Tom Johnson and a rational theory of harmony)
+>>
+endobj
+2 0 obj
+<<
+/Type /Pages
+/Kids [8 0 R 9 0 R 10 0 R 11 0 R 12 0 R 13 0 R 14 0 R 15 0 R 16 0 R 17 0 R
+18 0 R 19 0 R 20 0 R 21 0 R 22 0 R 23 0 R 24 0 R 25 0 R]
+/Count 18
+>>
+endobj
+3 0 obj
+<<
+/Nums [0 26 0 R 1 27 0 R 2 28 0 R 3 29 0 R 4 30 0 R
+5 31 0 R 6 32 0 R 7 33 0 R 8 34 0 R 9 35 0 R
+10 36 0 R 11 37 0 R 12 38 0 R 13 39 0 R 14 40 0 R
+15 41 0 R 16 42 0 R 17 43 0 R]
+>>
+endobj
+4 0 obj
+<<
+/Length 3385
+/Subtype /XML
+/Type /Metadata
+>>
+stream
+
+
+
+ application/pdf
+
+
+ Michael Winter
+
+
+
+
+ Journal of Mathematics and Music, 2026. doi: 10.1080/17459737.2025.2591899
+
+
+
+
+ Tom Johnson and a rational theory of harmony
+
+
+
+
+ 2026-02-18T16:10:39+05:30
+ LaTeX with hyperref package + hypdvips
+ 2026-02-18T16:10:39+05:30
+
+
+ Acrobat Distiller 8.1.0 (Windows)
+ Harmony; harmonic space; harmonic replacement; connected subgraphs; graph theory; Hamiltonicity; musical morphologies
+
+
+ uuid:fc8f0ba5-f7e3-4b9e-b158-980dd5752ff4
+ uuid:769308b7-4b3f-4dda-802d-832330d20cc6
+
+
+ 10.1080/17459737.2025.2591899
+ 2026-01-28
+ True
+
+
+ www.tandfonline.com
+
+
+
+
+ VoR
+
+
+ 10.1080/17459737.2025.2591899
+ 2026-01-28
+ True
+
+
+ www.tandfonline.com
+
+
+
+
+ 10.1080/17459737.2025.2591899
+ https://doi.org/10.1080/17459737.2025.2591899
+
+
+
+
+
+endstream
+endobj
+5 0 obj
+<<
+/Dests 44 0 R
+/EmbeddedFiles 45 0 R
+>>
+endobj
+6 0 obj
+<<
+/First 46 0 R
+/Count 19
+/Last 47 0 R
+/Type /Outlines
+>>
+endobj
+8 0 obj
+<<
+/Resources 48 0 R
+/Type /Page
+/MediaBox [0.0 0.0 634.32 833.04]
+/CropBox [0.0 0.0 634.32 833.04]
+/BleedBox [0 0 634.32 833.04]
+/TrimBox [0 0 634.32 833.04]
+/Parent 2 0 R
+/Annots [49 0 R 50 0 R 51 0 R 52 0 R 53 0 R 54 0 R 55 0 R 56 0 R 57 0 R 58 0 R]
+/Contents 59 0 R
+/Rotate 0
+>>
+endobj
+9 0 obj
+<<
+/CropBox [0.0 0.0 493.228 702.992]
+/Annots [60 0 R 61 0 R 62 0 R 63 0 R 64 0 R 65 0 R]
+/Parent 2 0 R
+/Contents [66 0 R 67 0 R 68 0 R 69 0 R 70 0 R 71 0 R 72 0 R 73 0 R]
+/Rotate 0
+/MediaBox [0.0 0.0 493.228 702.992]
+/Thumb 74 0 R
+/Resources 75 0 R
+/Type /Page
+>>
+endobj
+10 0 obj
+<<
+/CropBox [0.0 0.0 493.228 702.992]
+/Annots [76 0 R 77 0 R 78 0 R 79 0 R 80 0 R]
+/Parent 2 0 R
+/Contents 81 0 R
+/Rotate 0
+/MediaBox [0.0 0.0 493.228 702.992]
+/Thumb 82 0 R
+/Resources 83 0 R
+/Type /Page
+>>
+endobj
+11 0 obj
+<<
+/CropBox [0.0 0.0 493.228 702.992]
+/Parent 2 0 R
+/Contents 84 0 R
+/Rotate 0
+/MediaBox [0.0 0.0 493.228 702.992]
+/Thumb 85 0 R
+/Resources 86 0 R
+/Type /Page
+>>
+endobj
+12 0 obj
+<<
+/CropBox [0.0 0.0 493.228 702.992]
+/Annots [87 0 R 88 0 R 89 0 R 90 0 R 91 0 R 92 0 R 93 0 R 94 0 R]
+/Parent 2 0 R
+/Contents 95 0 R
+/Rotate 0
+/MediaBox [0.0 0.0 493.228 702.992]
+/Thumb 96 0 R
+/Resources 97 0 R
+/Type /Page
+>>
+endobj
+13 0 obj
+<<
+/CropBox [0.0 0.0 493.228 702.992]
+/Annots [98 0 R]
+/Parent 2 0 R
+/Contents 99 0 R
+/Rotate 0
+/MediaBox [0.0 0.0 493.228 702.992]
+/Thumb 100 0 R
+/Resources 101 0 R
+/Type /Page
+>>
+endobj
+14 0 obj
+<<
+/CropBox [0.0 0.0 493.228 702.992]
+/Annots [102 0 R 103 0 R]
+/Parent 2 0 R
+/Contents 104 0 R
+/Rotate 0
+/MediaBox [0.0 0.0 493.228 702.992]
+/Thumb 105 0 R
+/Resources 106 0 R
+/Type /Page
+>>
+endobj
+15 0 obj
+<<
+/CropBox [0.0 0.0 493.228 702.992]
+/Annots [107 0 R 108 0 R 109 0 R 110 0 R 111 0 R]
+/Parent 2 0 R
+/Contents 112 0 R
+/Rotate 0
+/MediaBox [0.0 0.0 493.228 702.992]
+/Thumb 113 0 R
+/Resources 114 0 R
+/Type /Page
+>>
+endobj
+16 0 obj
+<<
+/CropBox [0.0 0.0 493.228 702.992]
+/Annots [115 0 R 116 0 R 117 0 R 118 0 R]
+/Parent 2 0 R
+/Contents 119 0 R
+/Rotate 0
+/MediaBox [0.0 0.0 493.228 702.992]
+/Thumb 120 0 R
+/Resources 121 0 R
+/Type /Page
+>>
+endobj
+17 0 obj
+<<
+/CropBox [0.0 0.0 493.228 702.992]
+/Annots [122 0 R 123 0 R 124 0 R 125 0 R]
+/Parent 2 0 R
+/Contents 126 0 R
+/Rotate 0
+/MediaBox [0.0 0.0 493.228 702.992]
+/Thumb 127 0 R
+/Resources 128 0 R
+/Type /Page
+>>
+endobj
+18 0 obj
+<<
+/CropBox [0.0 0.0 493.228 702.992]
+/Annots [129 0 R]
+/Parent 2 0 R
+/Contents 130 0 R
+/Rotate 0
+/MediaBox [0.0 0.0 493.228 702.992]
+/Thumb 131 0 R
+/Resources 132 0 R
+/Type /Page
+>>
+endobj
+19 0 obj
+<<
+/CropBox [0.0 0.0 493.228 702.992]
+/Annots [133 0 R 134 0 R 135 0 R 136 0 R]
+/Parent 2 0 R
+/Contents 137 0 R
+/Rotate 0
+/MediaBox [0.0 0.0 493.228 702.992]
+/Thumb 138 0 R
+/Resources 139 0 R
+/Type /Page
+>>
+endobj
+20 0 obj
+<<
+/CropBox [0.0 0.0 493.228 702.992]
+/Parent 2 0 R
+/Contents 140 0 R
+/Rotate 0
+/MediaBox [0.0 0.0 493.228 702.992]
+/Thumb 141 0 R
+/Resources 142 0 R
+/Type /Page
+>>
+endobj
+21 0 obj
+<<
+/CropBox [0.0 0.0 493.228 702.992]
+/Annots [143 0 R 144 0 R]
+/Parent 2 0 R
+/Contents 145 0 R
+/Rotate 0
+/MediaBox [0.0 0.0 493.228 702.992]
+/Thumb 146 0 R
+/Resources 147 0 R
+/Type /Page
+>>
+endobj
+22 0 obj
+<<
+/CropBox [0.0 0.0 493.228 702.992]
+/Annots [148 0 R 149 0 R 150 0 R 151 0 R 152 0 R 153 0 R 154 0 R 155 0 R]
+/Parent 2 0 R
+/Contents 156 0 R
+/Rotate 0
+/MediaBox [0.0 0.0 493.228 702.992]
+/Thumb 157 0 R
+/Resources 158 0 R
+/Type /Page
+>>
+endobj
+23 0 obj
+<<
+/CropBox [0.0 0.0 493.228 702.992]
+/Annots [159 0 R]
+/Parent 2 0 R
+/Contents 160 0 R
+/Rotate 0
+/MediaBox [0.0 0.0 493.228 702.992]
+/Thumb 161 0 R
+/Resources 162 0 R
+/Type /Page
+>>
+endobj
+24 0 obj
+<<
+/CropBox [0.0 0.0 493.228 702.992]
+/Annots [163 0 R 164 0 R 165 0 R 166 0 R 167 0 R]
+/Parent 2 0 R
+/Contents 168 0 R
+/Rotate 0
+/MediaBox [0.0 0.0 493.228 702.992]
+/Thumb 169 0 R
+/Resources 170 0 R
+/Type /Page
+>>
+endobj
+25 0 obj
+<<
+/CropBox [0.0 0.0 493.228 702.992]
+/Parent 2 0 R
+/Contents 171 0 R
+/Rotate 0
+/MediaBox [0.0 0.0 493.228 702.992]
+/Thumb 172 0 R
+/Resources 173 0 R
+/Type /Page
+>>
+endobj
+26 0 obj
+<<
+/S /D
+>>
+endobj
+27 0 obj
+<<
+/St 77
+/S /D
+>>
+endobj
+28 0 obj
+<<
+/St 78
+/S /D
+>>
+endobj
+29 0 obj
+<<
+/St 79
+/S /D
+>>
+endobj
+30 0 obj
+<<
+/St 80
+/S /D
+>>
+endobj
+31 0 obj
+<<
+/St 81
+/S /D
+>>
+endobj
+32 0 obj
+<<
+/St 82
+/S /D
+>>
+endobj
+33 0 obj
+<<
+/St 83
+/S /D
+>>
+endobj
+34 0 obj
+<<
+/St 84
+/S /D
+>>
+endobj
+35 0 obj
+<<
+/St 85
+/S /D
+>>
+endobj
+36 0 obj
+<<
+/St 86
+/S /D
+>>
+endobj
+37 0 obj
+<<
+/St 87
+/S /D
+>>
+endobj
+38 0 obj
+<<
+/St 88
+/S /D
+>>
+endobj
+39 0 obj
+<<
+/St 89
+/S /D
+>>
+endobj
+40 0 obj
+<<
+/St 90
+/S /D
+>>
+endobj
+41 0 obj
+<<
+/St 91
+/S /D
+>>
+endobj
+42 0 obj
+<<
+/St 92
+/S /D
+>>
+endobj
+43 0 obj
+<<
+/St 93
+/S /D
+>>
+endobj
+44 0 obj
+<<
+/Kids [174 0 R 175 0 R]
+>>
+endobj
+45 0 obj
+<<
+/Kids [176 0 R]
+>>
+endobj
+46 0 obj
+<<
+/Parent 6 0 R
+/Next 177 0 R
+/Dest (section.1)
+/Title (1. Introduction: discreteness in the work of Tom Johnson)
+>>
+endobj
+47 0 obj
+<<
+/Parent 6 0 R
+/Dest (tmref1.1)
+/Prev 178 0 R
+/Title (References)
+>>
+endobj
+48 0 obj
+<<
+/Font 179 0 R
+/ProcSet [/PDF /ImageB /ImageC /Text]
+/XObject <<
+/Im1 180 0 R
+/Im2 181 0 R
+/Im3 182 0 R
+/Im4 183 0 R
+/Im5 184 0 R
+/Im6 185 0 R
+/Im7 186 0 R
+/Im8 187 0 R
+/Im9 188 0 R
+/Im10 189 0 R
+/Im11 190 0 R
+/Im12 191 0 R
+/Im13 192 0 R
+/Im14 193 0 R
+>>
+/ColorSpace 194 0 R
+>>
+endobj
+49 0 obj
+<<
+/Type /Annot
+/Subtype /Link
+/Rect [365.416 688.444 520.256 696.436]
+/C [0 0 0]
+/Border [0 0 0]
+/A 195 0 R
+/H /I
+>>
+endobj
+50 0 obj
+<<
+/Type /Annot
+/Subtype /Link
+/Rect [339.37 555.145 493.77 565.135]
+/C [0 0 0]
+/Border [0 0 0]
+/A 196 0 R
+/H /I
+>>
+endobj
+51 0 obj
+<<
+/Type /Annot
+/Subtype /Link
+/Rect [202.3 535.145 427.29 545.135]
+/C [0 0 0]
+/Border [0 0 0]
+/A 197 0 R
+/H /I
+>>
+endobj
+52 0 obj
+<<
+/Type /Annot
+/Subtype /Link
+/Rect [106.6 438.965 124.18 452.736]
+/C [0 0 0]
+/Border [0 0 0]
+/A 198 0 R
+/H /I
+>>
+endobj
+53 0 obj
+<<
+/Type /Annot
+/Subtype /Link
+/Rect [131.8 436.291 286.982 447.236]
+/C [0 0 0]
+/Border [0 0 0]
+/A 198 0 R
+/H /I
+>>
+endobj
+54 0 obj
+<<
+/Type /Annot
+/Subtype /Link
+/Rect [106.6 348.707 122.36 366.936]
+/C [0 0 0]
+/Border [0 0 0]
+/A 199 0 R
+/H /I
+>>
+endobj
+55 0 obj
+<<
+/Type /Annot
+/Subtype /Link
+/Rect [131.8 350.491 230.84 361.436]
+/C [0 0 0]
+/Border [0 0 0]
+/A 199 0 R
+/H /I
+>>
+endobj
+56 0 obj
+<<
+/Type /Annot
+/Subtype /Link
+/Rect [106.6 303.187 125.16 324.036]
+/C [0 0 0]
+/Border [0 0 0]
+/A 200 0 R
+/H /I
+>>
+endobj
+57 0 obj
+<<
+/Type /Annot
+/Subtype /Link
+/Rect [131.8 307.591 232.586 318.536]
+/C [0 0 0]
+/Border [0 0 0]
+/A 200 0 R
+/H /I
+>>
+endobj
+58 0 obj
+<<
+/Type /Annot
+/Subtype /Link
+/Rect [152.194 42.905 482.125 51.896]
+/C [0 0 0]
+/Border [0 0 0]
+/A 201 0 R
+/H /I
+>>
+endobj
+59 0 obj
+<<
+/Length 2465
+/Filter /FlateDecode
+>>
+stream
+xZێ}mS;1TDg["ը,zXO3iz)d3Ydbvd8C䙟L7>S.hVb|y7Ұ&;rYzyObr*$z}ϕ
*n?}4G~nT$évc9o^O?\/8̆6U.2|>Qkt"]LWo{F3]Vc,3?a}˟iˎ2CV8ݛ*A[7XǼ|w{~=bѯܨQҞh::gmJB>/dt#:\G4T90 8&txzBtG2-ڡ>KPLӺ̲cmDO?>tګٹ_za t>|}o=7n2Ҧw,8{Qג̓i.e;f9=߫/͟e{ؼ9{|ƚ_6u.ݪd_sXlWeT_TF3Camcu
,{=y6#4c/ay6w{۬E-K3['^2Eƫ>{]IjHY'J:~[",H*8.w}BB" GBցZ2ǒc'@kCx`XkgPX}ijE; Lrx:yHvfERHJm*ϬlH|㑂.T
+#etC[Ң;h;^R