Packages

Making Music with Extempore, OSC, and SuperCollider in LFE/OTP

Current section

Files

Jump to
undertone_lib include notes data.lfe
Raw

include/notes/data.lfe

(defun note-map ()
'(;#(NOTENAME (#(hz HZ) #(midi MIDI)))
#( g9 (#(hz 12543.85) #(midi 127 )))
#( f#9 (#(hz 11839.82) #(midi 126 )))
#( gb9 (#(hz 11839.82) #(midi 126 )))
#( f9 (#(hz 11175.3 ) #(midi 125 )))
#( e9 (#(hz 10548.08) #(midi 124 )))
#( d#9 (#(hz 9956.06 ) #(midi 123 )))
#( eb9 (#(hz 9956.06 ) #(midi 123 )))
#( d9 (#(hz 9397.27 ) #(midi 122 )))
#( c#9 (#(hz 8869.84 ) #(midi 121 )))
#( db9 (#(hz 8869.84 ) #(midi 121 )))
#( c9 (#(hz 8372.02 ) #(midi 120 )))
#( b8 (#(hz 7902.13 ) #(midi 119 )))
#( a#8 (#(hz 7458.62 ) #(midi 118 )))
#( bb8 (#(hz 7458.62 ) #(midi 118 )))
#( a8 (#(hz 7040 ) #(midi 117 )))
#( g#8 (#(hz 6644.88 ) #(midi 116 )))
#( ab8 (#(hz 6644.88 ) #(midi 116 )))
#( g8 (#(hz 6271.93 ) #(midi 115 )))
#( f#8 (#(hz 5919.91 ) #(midi 114 )))
#( gb8 (#(hz 5919.91 ) #(midi 114 )))
#( f8 (#(hz 5587.65 ) #(midi 113 )))
#( e8 (#(hz 5274.04 ) #(midi 112 )))
#( d#8 (#(hz 4978.03 ) #(midi 111 )))
#( eb8 (#(hz 4978.03 ) #(midi 111 )))
#( d8 (#(hz 4698.64 ) #(midi 110 )))
#( c#8 (#(hz 4434.92 ) #(midi 109 )))
#( db8 (#(hz 4434.92 ) #(midi 109 )))
#( c8 (#(hz 4186.01 ) #(midi 108 )))
#( b7 (#(hz 3951.07 ) #(midi 107 )))
#( a#7 (#(hz 3729.31 ) #(midi 106 )))
#( bb7 (#(hz 3729.31 ) #(midi 106 )))
#( a7 (#(hz 3520 ) #(midi 105 )))
#( g#7 (#(hz 3322.44 ) #(midi 104 )))
#( ab7 (#(hz 3322.44 ) #(midi 104 )))
#( g7 (#(hz 3135.96 ) #(midi 103 )))
#( f#7 (#(hz 2959.96 ) #(midi 102 )))
#( gb7 (#(hz 2959.96 ) #(midi 102 )))
#( f7 (#(hz 2793.83 ) #(midi 101 )))
#( e7 (#(hz 2637.02 ) #(midi 100 )))
#( d#7 (#(hz 2489.02 ) #(midi 99 )))
#( eb7 (#(hz 2489.02 ) #(midi 99 )))
#( d7 (#(hz 2349.32 ) #(midi 98 )))
#( c#7 (#(hz 2217.46 ) #(midi 97 )))
#( db7 (#(hz 2217.46 ) #(midi 97 )))
#( c7 (#(hz 2093 ) #(midi 96 )))
#( b6 (#(hz 1975.53 ) #(midi 95 )))
#( a#6 (#(hz 1864.66 ) #(midi 94 )))
#( bb6 (#(hz 1864.66 ) #(midi 94 )))
#( a6 (#(hz 1760 ) #(midi 93 )))
#( g#6 (#(hz 1661.22 ) #(midi 92 )))
#( ab6 (#(hz 1661.22 ) #(midi 92 )))
#( g6 (#(hz 1567.98 ) #(midi 91 )))
#( f#6 (#(hz 1479.98 ) #(midi 90 )))
#( gb6 (#(hz 1479.98 ) #(midi 90 )))
#( f6 (#(hz 1396.91 ) #(midi 89 )))
#( e6 (#(hz 1318.51 ) #(midi 88 )))
#( d#6 (#(hz 1244.51 ) #(midi 87 )))
#( eb6 (#(hz 1244.51 ) #(midi 87 )))
#( d6 (#(hz 1174.66 ) #(midi 86 )))
#( c#6 (#(hz 1108.73 ) #(midi 85 )))
#( db6 (#(hz 1108.73 ) #(midi 85 )))
#( c6 (#(hz 1046.5 ) #(midi 84 )))
#( b5 (#(hz 987.77 ) #(midi 83 )))
#( a#5 (#(hz 932.33 ) #(midi 82 )))
#( bb5 (#(hz 932.33 ) #(midi 82 )))
#( a5 (#(hz 880 ) #(midi 81 )))
#( g#5 (#(hz 830.61 ) #(midi 80 )))
#( ab5 (#(hz 830.61 ) #(midi 80 )))
#( g5 (#(hz 783.99 ) #(midi 79 )))
#( f#5 (#(hz 739.99 ) #(midi 78 )))
#( gb5 (#(hz 739.99 ) #(midi 78 )))
#( f5 (#(hz 698.46 ) #(midi 77 )))
#( e5 (#(hz 659.26 ) #(midi 76 )))
#( d#5 (#(hz 622.25 ) #(midi 75 )))
#( eb5 (#(hz 622.25 ) #(midi 75 )))
#( d5 (#(hz 587.33 ) #(midi 74 )))
#( c#5 (#(hz 554.37 ) #(midi 73 )))
#( db5 (#(hz 554.37 ) #(midi 73 )))
#( c5 (#(hz 523.25 ) #(midi 72 )))
#( b4 (#(hz 493.88 ) #(midi 71 )))
#( a#4 (#(hz 466.16 ) #(midi 70 )))
#( bb4 (#(hz 466.16 ) #(midi 70 )))
#( a4 (#(hz 440 ) #(midi 69 )))
#( g#4 (#(hz 415.3 ) #(midi 68 )))
#( ab4 (#(hz 415.3 ) #(midi 68 )))
#( g4 (#(hz 392 ) #(midi 67 )))
#( f#4 (#(hz 369.99 ) #(midi 66 )))
#( gb4 (#(hz 369.99 ) #(midi 66 )))
#( f4 (#(hz 349.23 ) #(midi 65 )))
#( e4 (#(hz 329.63 ) #(midi 64 )))
#( d#4 (#(hz 311.13 ) #(midi 63 )))
#( eb4 (#(hz 311.13 ) #(midi 63 )))
#( d4 (#(hz 293.66 ) #(midi 62 )))
#( c#4 (#(hz 277.18 ) #(midi 61 )))
#( db4 (#(hz 277.18 ) #(midi 61 )))
#( c4 (#(hz 261.63 ) #(midi 60 )))
#( b3 (#(hz 246.94 ) #(midi 59 )))
#( a#3 (#(hz 233.08 ) #(midi 58 )))
#( bb3 (#(hz 233.08 ) #(midi 58 )))
#( a3 (#(hz 220 ) #(midi 57 )))
#( g#3 (#(hz 207.65 ) #(midi 56 )))
#( ab3 (#(hz 207.65 ) #(midi 56 )))
#( g3 (#(hz 196 ) #(midi 55 )))
#( f#3 (#(hz 185 ) #(midi 54 )))
#( gb3 (#(hz 185 ) #(midi 54 )))
#( f3 (#(hz 174.61 ) #(midi 53 )))
#( e3 (#(hz 164.81 ) #(midi 52 )))
#( d#3 (#(hz 155.56 ) #(midi 51 )))
#( eb3 (#(hz 155.56 ) #(midi 51 )))
#( d3 (#(hz 146.83 ) #(midi 50 )))
#( c#3 (#(hz 138.59 ) #(midi 49 )))
#( db3 (#(hz 138.59 ) #(midi 49 )))
#( c3 (#(hz 130.81 ) #(midi 48 )))
#( b2 (#(hz 123.47 ) #(midi 47 )))
#( a#2 (#(hz 116.54 ) #(midi 46 )))
#( bb2 (#(hz 116.54 ) #(midi 46 )))
#( a2 (#(hz 110 ) #(midi 45 )))
#( g#2 (#(hz 103.83 ) #(midi 44 )))
#( ab2 (#(hz 103.83 ) #(midi 44 )))
#( g2 (#(hz 98 ) #(midi 43 )))
#( f#2 (#(hz 92.5 ) #(midi 42 )))
#( gb2 (#(hz 92.5 ) #(midi 42 )))
#( f2 (#(hz 87.31 ) #(midi 41 )))
#( e2 (#(hz 82.41 ) #(midi 40 )))
#( d#2 (#(hz 77.78 ) #(midi 39 )))
#( eb2 (#(hz 77.78 ) #(midi 39 )))
#( d2 (#(hz 73.42 ) #(midi 38 )))
#( c#2 (#(hz 69.3 ) #(midi 37 )))
#( db2 (#(hz 69.3 ) #(midi 37 )))
#( c2 (#(hz 65.41 ) #(midi 36 )))
#( b1 (#(hz 61.74 ) #(midi 35 )))
#( a#1 (#(hz 58.27 ) #(midi 34 )))
#( bb1 (#(hz 58.27 ) #(midi 34 )))
#( a1 (#(hz 55 ) #(midi 33 )))
#( g#1 (#(hz 51.91 ) #(midi 32 )))
#( ab1 (#(hz 51.91 ) #(midi 32 )))
#( g1 (#(hz 49 ) #(midi 31 )))
#( f#1 (#(hz 46.25 ) #(midi 30 )))
#( gb1 (#(hz 46.25 ) #(midi 30 )))
#( f1 (#(hz 43.65 ) #(midi 29 )))
#( e1 (#(hz 41.2 ) #(midi 28 )))
#( d#1 (#(hz 38.89 ) #(midi 27 )))
#( eb1 (#(hz 38.89 ) #(midi 27 )))
#( d1 (#(hz 36.71 ) #(midi 26 )))
#( c#1 (#(hz 34.65 ) #(midi 25 )))
#( db1 (#(hz 34.65 ) #(midi 25 )))
#( c1 (#(hz 32.7 ) #(midi 24 )))
#( b0 (#(hz 30.87 ) #(midi 23 )))
#( a#0 (#(hz 29.14 ) #(midi 22 )))
#( bb0 (#(hz 29.14 ) #(midi 22 )))
#( a0 (#(hz 27.5 ) #(midi 21 )))
#( g#0 (#(hz 25.96 ) #(midi 20 )))
#( ab0 (#(hz 25.96 ) #(midi 20 )))
#( g0 (#(hz 24.5 ) #(midi 19 )))
#( f#0 (#(hz 23.12 ) #(midi 18 )))
#( gb0 (#(hz 23.12 ) #(midi 18 )))
#( f0 (#(hz 21.83 ) #(midi 17 )))
#( e0 (#(hz 20.6 ) #(midi 16 )))
#( d#0 (#(hz 19.45 ) #(midi 15 )))
#( eb0 (#(hz 19.45 ) #(midi 15 )))
#( d0 (#(hz 18.35 ) #(midi 14 )))
#( c#0 (#(hz 17.32 ) #(midi 13 )))
#( db0 (#(hz 17.32 ) #(midi 13 )))
#( c0 (#(hz 16.35 ) #(midi 12 )))
#( b-1 (#(hz 15.43 ) #(midi 11 )))
#( a#-1 (#(hz 14.57 ) #(midi 10 )))
#( bb-1 (#(hz 14.57 ) #(midi 10 )))
#( a-1 (#(hz 13.75 ) #(midi 9 )))
#( g#-1 (#(hz 12.98 ) #(midi 8 )))
#( ab-1 (#(hz 12.98 ) #(midi 8 )))
#( g-1 (#(hz 12.25 ) #(midi 7 )))
#( f#-1 (#(hz 11.56 ) #(midi 6 )))
#( gb-1 (#(hz 11.56 ) #(midi 6 )))
#( f-1 (#(hz 10.91 ) #(midi 5 )))
#( e-1 (#(hz 10.3 ) #(midi 4 )))
#( d#-1 (#(hz 9.72 ) #(midi 3 )))
#( eb-1 (#(hz 9.72 ) #(midi 3 )))
#( d-1 (#(hz 9.18 ) #(midi 2 )))
#( c#-1 (#(hz 8.66 ) #(midi 1 )))
#( db-1 (#(hz 8.66 ) #(midi 1 )))
#( c-1 (#(hz 8.18 ) #(midi 0 )))))
(defun lookup-note (name)
(proplists:get_value name (note-map)))
(defun notes->midis (notes)
(lists:map (lambda (n) (proplists:get_value 'midi (lookup-note n)))
notes))
(defun midi-map ()
'(;#(MIDINUM (#(hz HZ) #(note NOTENAME)))
#( 127 (#(hz 12543.85) #(note g9 )))
#( 126 (#(hz 11839.82) #(note f#9 )))
#( 126 (#(hz 11839.82) #(note gb9 )))
#( 125 (#(hz 11175.3 ) #(note f9 )))
#( 124 (#(hz 10548.08) #(note e9 )))
#( 123 (#(hz 9956.06 ) #(note d#9 )))
#( 123 (#(hz 9956.06 ) #(note eb9 )))
#( 122 (#(hz 9397.27 ) #(note d9 )))
#( 121 (#(hz 8869.84 ) #(note c#9 )))
#( 121 (#(hz 8869.84 ) #(note db9 )))
#( 120 (#(hz 8372.02 ) #(note c9 )))
#( 119 (#(hz 7902.13 ) #(note b8 )))
#( 118 (#(hz 7458.62 ) #(note a#8 )))
#( 118 (#(hz 7458.62 ) #(note bb8 )))
#( 117 (#(hz 7040 ) #(note a8 )))
#( 116 (#(hz 6644.88 ) #(note g#8 )))
#( 116 (#(hz 6644.88 ) #(note ab8 )))
#( 115 (#(hz 6271.93 ) #(note g8 )))
#( 114 (#(hz 5919.91 ) #(note f#8 )))
#( 114 (#(hz 5919.91 ) #(note gb8 )))
#( 113 (#(hz 5587.65 ) #(note f8 )))
#( 112 (#(hz 5274.04 ) #(note e8 )))
#( 111 (#(hz 4978.03 ) #(note d#8 )))
#( 111 (#(hz 4978.03 ) #(note eb8 )))
#( 110 (#(hz 4698.64 ) #(note d8 )))
#( 109 (#(hz 4434.92 ) #(note c#8 )))
#( 109 (#(hz 4434.92 ) #(note db8 )))
#( 108 (#(hz 4186.01 ) #(note c8 )))
#( 107 (#(hz 3951.07 ) #(note b7 )))
#( 106 (#(hz 3729.31 ) #(note a#7 )))
#( 106 (#(hz 3729.31 ) #(note bb7 )))
#( 105 (#(hz 3520 ) #(note a7 )))
#( 104 (#(hz 3322.44 ) #(note g#7 )))
#( 104 (#(hz 3322.44 ) #(note ab7 )))
#( 103 (#(hz 3135.96 ) #(note g7 )))
#( 102 (#(hz 2959.96 ) #(note f#7 )))
#( 102 (#(hz 2959.96 ) #(note gb7 )))
#( 101 (#(hz 2793.83 ) #(note f7 )))
#( 100 (#(hz 2637.02 ) #(note e7 )))
#( 99 (#(hz 2489.02 ) #(note d#7 )))
#( 99 (#(hz 2489.02 ) #(note eb7 )))
#( 98 (#(hz 2349.32 ) #(note d7 )))
#( 97 (#(hz 2217.46 ) #(note c#7 )))
#( 97 (#(hz 2217.46 ) #(note db7 )))
#( 96 (#(hz 2093 ) #(note c7 )))
#( 95 (#(hz 1975.53 ) #(note b6 )))
#( 94 (#(hz 1864.66 ) #(note a#6 )))
#( 94 (#(hz 1864.66 ) #(note bb6 )))
#( 93 (#(hz 1760 ) #(note a6 )))
#( 92 (#(hz 1661.22 ) #(note g#6 )))
#( 92 (#(hz 1661.22 ) #(note ab6 )))
#( 91 (#(hz 1567.98 ) #(note g6 )))
#( 90 (#(hz 1479.98 ) #(note f#6 )))
#( 90 (#(hz 1479.98 ) #(note gb6 )))
#( 89 (#(hz 1396.91 ) #(note f6 )))
#( 88 (#(hz 1318.51 ) #(note e6 )))
#( 87 (#(hz 1244.51 ) #(note d#6 )))
#( 87 (#(hz 1244.51 ) #(note eb6 )))
#( 86 (#(hz 1174.66 ) #(note d6 )))
#( 85 (#(hz 1108.73 ) #(note c#6 )))
#( 85 (#(hz 1108.73 ) #(note db6 )))
#( 84 (#(hz 1046.5 ) #(note c6 )))
#( 83 (#(hz 987.77 ) #(note b5 )))
#( 82 (#(hz 932.33 ) #(note a#5 )))
#( 82 (#(hz 932.33 ) #(note bb5 )))
#( 81 (#(hz 880 ) #(note a5 )))
#( 80 (#(hz 830.61 ) #(note g#5 )))
#( 80 (#(hz 830.61 ) #(note ab5 )))
#( 79 (#(hz 783.99 ) #(note g5 )))
#( 78 (#(hz 739.99 ) #(note f#5 )))
#( 78 (#(hz 739.99 ) #(note gb5 )))
#( 77 (#(hz 698.46 ) #(note f5 )))
#( 76 (#(hz 659.26 ) #(note e5 )))
#( 75 (#(hz 622.25 ) #(note d#5 )))
#( 75 (#(hz 622.25 ) #(note eb5 )))
#( 74 (#(hz 587.33 ) #(note d5 )))
#( 73 (#(hz 554.37 ) #(note c#5 )))
#( 73 (#(hz 554.37 ) #(note db5 )))
#( 72 (#(hz 523.25 ) #(note c5 )))
#( 71 (#(hz 493.88 ) #(note b4 )))
#( 70 (#(hz 466.16 ) #(note a#4 )))
#( 70 (#(hz 466.16 ) #(note bb4 )))
#( 69 (#(hz 440 ) #(note a4 )))
#( 68 (#(hz 415.3 ) #(note g#4 )))
#( 68 (#(hz 415.3 ) #(note ab4 )))
#( 67 (#(hz 392 ) #(note g4 )))
#( 66 (#(hz 369.99 ) #(note f#4 )))
#( 66 (#(hz 369.99 ) #(note gb4 )))
#( 65 (#(hz 349.23 ) #(note f4 )))
#( 64 (#(hz 329.63 ) #(note e4 )))
#( 63 (#(hz 311.13 ) #(note d#4 )))
#( 63 (#(hz 311.13 ) #(note eb4 )))
#( 62 (#(hz 293.66 ) #(note d4 )))
#( 61 (#(hz 277.18 ) #(note c#4 )))
#( 61 (#(hz 277.18 ) #(note db4 )))
#( 60 (#(hz 261.63 ) #(note c4 )))
#( 59 (#(hz 246.94 ) #(note b3 )))
#( 58 (#(hz 233.08 ) #(note a#3 )))
#( 58 (#(hz 233.08 ) #(note bb3 )))
#( 57 (#(hz 220 ) #(note a3 )))
#( 56 (#(hz 207.65 ) #(note g#3 )))
#( 56 (#(hz 207.65 ) #(note ab3 )))
#( 55 (#(hz 196 ) #(note g3 )))
#( 54 (#(hz 185 ) #(note f#3 )))
#( 54 (#(hz 185 ) #(note gb3 )))
#( 53 (#(hz 174.61 ) #(note f3 )))
#( 52 (#(hz 164.81 ) #(note e3 )))
#( 51 (#(hz 155.56 ) #(note d#3 )))
#( 51 (#(hz 155.56 ) #(note eb3 )))
#( 50 (#(hz 146.83 ) #(note d3 )))
#( 49 (#(hz 138.59 ) #(note c#3 )))
#( 49 (#(hz 138.59 ) #(note db3 )))
#( 48 (#(hz 130.81 ) #(note c3 )))
#( 47 (#(hz 123.47 ) #(note b2 )))
#( 46 (#(hz 116.54 ) #(note a#2 )))
#( 46 (#(hz 116.54 ) #(note bb2 )))
#( 45 (#(hz 110 ) #(note a2 )))
#( 44 (#(hz 103.83 ) #(note g#2 )))
#( 44 (#(hz 103.83 ) #(note ab2 )))
#( 43 (#(hz 98 ) #(note g2 )))
#( 42 (#(hz 92.5 ) #(note f#2 )))
#( 42 (#(hz 92.5 ) #(note gb2 )))
#( 41 (#(hz 87.31 ) #(note f2 )))
#( 40 (#(hz 82.41 ) #(note e2 )))
#( 39 (#(hz 77.78 ) #(note d#2 )))
#( 39 (#(hz 77.78 ) #(note eb2 )))
#( 38 (#(hz 73.42 ) #(note d2 )))
#( 37 (#(hz 69.3 ) #(note c#2 )))
#( 37 (#(hz 69.3 ) #(note db2 )))
#( 36 (#(hz 65.41 ) #(note c2 )))
#( 35 (#(hz 61.74 ) #(note b1 )))
#( 34 (#(hz 58.27 ) #(note a#1 )))
#( 34 (#(hz 58.27 ) #(note bb1 )))
#( 33 (#(hz 55 ) #(note a1 )))
#( 32 (#(hz 51.91 ) #(note g#1 )))
#( 32 (#(hz 51.91 ) #(note ab1 )))
#( 31 (#(hz 49 ) #(note g1 )))
#( 30 (#(hz 46.25 ) #(note f#1 )))
#( 30 (#(hz 46.25 ) #(note gb1 )))
#( 29 (#(hz 43.65 ) #(note f1 )))
#( 28 (#(hz 41.2 ) #(note e1 )))
#( 27 (#(hz 38.89 ) #(note d#1 )))
#( 27 (#(hz 38.89 ) #(note eb1 )))
#( 26 (#(hz 36.71 ) #(note d1 )))
#( 25 (#(hz 34.65 ) #(note c#1 )))
#( 25 (#(hz 34.65 ) #(note db1 )))
#( 24 (#(hz 32.7 ) #(note c1 )))
#( 23 (#(hz 30.87 ) #(note b0 )))
#( 22 (#(hz 29.14 ) #(note a#0 )))
#( 22 (#(hz 29.14 ) #(note bb0 )))
#( 21 (#(hz 27.5 ) #(note a0 )))
#( 20 (#(hz 25.96 ) #(note g#0 )))
#( 20 (#(hz 25.96 ) #(note ab0 )))
#( 19 (#(hz 24.5 ) #(note g0 )))
#( 18 (#(hz 23.12 ) #(note f#0 )))
#( 18 (#(hz 23.12 ) #(note gb0 )))
#( 17 (#(hz 21.83 ) #(note f0 )))
#( 16 (#(hz 20.6 ) #(note e0 )))
#( 15 (#(hz 19.45 ) #(note d#0 )))
#( 15 (#(hz 19.45 ) #(note eb0 )))
#( 14 (#(hz 18.35 ) #(note d0 )))
#( 13 (#(hz 17.32 ) #(note c#0 )))
#( 13 (#(hz 17.32 ) #(note db0 )))
#( 12 (#(hz 16.35 ) #(note c0 )))
#( 11 (#(hz 15.43 ) #(note b-1 )))
#( 10 (#(hz 14.57 ) #(note a#-1 )))
#( 10 (#(hz 14.57 ) #(note bb-1 )))
#( 9 (#(hz 13.75 ) #(note a-1 )))
#( 8 (#(hz 12.98 ) #(note g#-1 )))
#( 8 (#(hz 12.98 ) #(note ab-1 )))
#( 7 (#(hz 12.25 ) #(note g-1 )))
#( 6 (#(hz 11.56 ) #(note f#-1 )))
#( 6 (#(hz 11.56 ) #(note gb-1 )))
#( 5 (#(hz 10.91 ) #(note f-1 )))
#( 4 (#(hz 10.3 ) #(note e-1 )))
#( 3 (#(hz 9.72 ) #(note d#-1 )))
#( 3 (#(hz 9.72 ) #(note eb-1 )))
#( 2 (#(hz 9.18 ) #(note d-1 )))
#( 1 (#(hz 8.66 ) #(note c#-1 )))
#( 1 (#(hz 8.66 ) #(note db-1 )))
#( 0 (#(hz 8.18 ) #(note c-1 )))))
(defun lookup-midi (midi)
(proplists:get_value midi (midi-map)))
(defun midis->notes (midis)
(lists:map (lambda (m) (proplists:get_value 'note (lookup-midi m)))
midis))
;; This function is for display purposes when used in the REPL
;; and needs to be the last function in the include file.
(defun |-- loaded include: notes/data --| ()
'ok)