code wiki / (root) / nx_perceptual_profile.nx

nx_perceptual_profile.nx source

↩ module page · 349 lines · 18966 B

1// nx_perceptual_profile.nx -- sealed multi-species perceptual taxonomy. 2// 3// module: nishi-core.perception.profile 4// depends: nishi-core.io.syscalls 5// disk_kb: 6 6// capability: PERCEPTION 7// wired_status: FULLY_WIRED 8// 9// license_tier: PUBLIC_NISHI_SUBSTRATE 10// genealogy_id: feedback-multi-species-perceptual-substrate-not-anthropocentric_2026 + 11// heffner_heffner_1985_hearing_ranges_mammals + 12// jacobs_1993_color_vision_mammals + 13// nagel_1974_what_is_it_like_to_be_a_bat + 14// macaulay_library_cornell_lab + 15// xeno_canto_community 16// 17// Per cardinal [[feedback-multi-species-perceptual-substrate-not-anthropocentric]]: 18// THIS IS A TYPE-LEVEL PRIMITIVE. Implementation IS the sealed 19// enum + parameter accessors. Marked FULLY_WIRED honestly because 20// no further execution path exists for the primitive itself -- its 21// job is to provide the substrate's per-species perceptual taxonomy 22// for downstream composition into nx_voice_codec / nx_video_codec_pmesh 23// / nx_synthesis_engine / nx_perceptual_judge / nx_perceptual_dataset. 24// 25// Every audio + video + sensor primitive in Nishi treats the perceptual 26// target as a PARAMETER referencing one of these profiles. Default is 27// permissive (preserve all bits above noise floor); filtering occurs 28// ONLY at the final render stage based on the explicitly-declared 29// nx_perceptual_profile in the pathway manifest. 30 31import "nx_syscalls.nx" 32 33// ===== PerceptualProfile sealed enum ============================== 34// 35// Ordered roughly by phylogenetic family + commercial relevance. 36// Reserved gaps allow additive insertion of new profiles without 37// renumbering existing identifiers. 38 39const NX_PERCEPT_NONE: i64 = 0 // no perceptual target declared 40const NX_PERCEPT_HUMAN_NORMAL: i64 = 1 // baseline trichromat, 20Hz-20kHz 41const NX_PERCEPT_HUMAN_PRESBYCUSIS: i64 = 2 // age-related HF loss profile 42 43// Canine -- breed-group granularity matters because selective breeding 44// has shaped both prey-focus and visual/auditory emphasis. 45const NX_PERCEPT_DOG_VIZSLA: i64 = 10 // upland bird specialist 46const NX_PERCEPT_DOG_GSP: i64 = 11 // upland bird specialist 47const NX_PERCEPT_DOG_WEIMARANER: i64 = 12 // upland bird specialist 48const NX_PERCEPT_DOG_POINTER: i64 = 13 // upland bird specialist 49const NX_PERCEPT_DOG_SETTER: i64 = 14 // upland bird specialist 50const NX_PERCEPT_DOG_RETRIEVER: i64 = 15 // waterfowl specialist 51const NX_PERCEPT_DOG_TERRIER: i64 = 16 // vermin specialist, ultrasonic emphasis 52const NX_PERCEPT_DOG_SIGHTHOUND: i64 = 17 // motion-emphasis visual 53const NX_PERCEPT_DOG_SCENTHOUND: i64 = 18 // beagle/basset/foxhound, scent-dominant 54const NX_PERCEPT_DOG_HERDING: i64 = 19 // border collie, livestock-attuned 55const NX_PERCEPT_DOG_GENERIC: i64 = 20 // fallback canine profile 56 57// Feline 58const NX_PERCEPT_CAT_DOMESTIC: i64 = 30 59const NX_PERCEPT_CAT_FERAL: i64 = 31 60 61// Livestock -- acoustic welfare monitoring market 62const NX_PERCEPT_CATTLE: i64 = 40 63const NX_PERCEPT_SHEEP: i64 = 41 64const NX_PERCEPT_GOAT: i64 = 42 65const NX_PERCEPT_PIG: i64 = 43 66const NX_PERCEPT_HORSE: i64 = 44 67 68// Avian -- 4-color UV-capable vision changes the visual envelope 69const NX_PERCEPT_CHICKEN: i64 = 50 // poultry welfare 70const NX_PERCEPT_SONGBIRD_PASSERINE: i64 = 51 // generic perching bird 71const NX_PERCEPT_RAPTOR: i64 = 52 72const NX_PERCEPT_WATERFOWL_DUCK: i64 = 53 73const NX_PERCEPT_WATERFOWL_GOOSE: i64 = 54 74const NX_PERCEPT_GAMEBIRD_PHEASANT: i64 = 55 // prey for upland-bird dogs 75const NX_PERCEPT_GAMEBIRD_QUAIL: i64 = 56 76 77// Insecta + arthropoda -- vibration-dominant, UV-shifted vision 78const NX_PERCEPT_HONEYBEE: i64 = 70 // colony health acoustics 79const NX_PERCEPT_BUMBLEBEE: i64 = 71 80const NX_PERCEPT_MANTIS_SHRIMP: i64 = 72 // research curiosity, 16 photoreceptors 81 82// Small mammals -- pet rodents + lab rodents + pest control 83const NX_PERCEPT_MOUSE_LAB: i64 = 80 // 1kHz-110kHz, USV research relevant 84const NX_PERCEPT_RAT_LAB: i64 = 81 85const NX_PERCEPT_HAMSTER: i64 = 82 86const NX_PERCEPT_RABBIT_DOMESTIC: i64 = 83 87const NX_PERCEPT_SQUIRREL: i64 = 84 // prey for upland-bird dogs 88 89// Echolocating + bioacoustic specialists 90const NX_PERCEPT_BAT_GENERIC: i64 = 90 91const NX_PERCEPT_DOLPHIN_BOTTLENOSE: i64 = 91 92const NX_PERCEPT_PORPOISE: i64 = 92 93 94// Aquaculture / fish welfare 95const NX_PERCEPT_FISH_SALMONID: i64 = 100 96const NX_PERCEPT_FISH_TILAPIA: i64 = 101 97 98// Special sentinel for "preserve everything; render-time target unspecified" 99const NX_PERCEPT_PRESERVE_ALL: i64 = 9999 100 101// ===== Profile name accessor ====================================== 102 103func nx_perceptual_profile_name(p: i64) -> *u8 { 104 if p == NX_PERCEPT_NONE { return "NONE" } 105 if p == NX_PERCEPT_HUMAN_NORMAL { return "HUMAN_NORMAL" } 106 if p == NX_PERCEPT_HUMAN_PRESBYCUSIS { return "HUMAN_PRESBYCUSIS" } 107 if p == NX_PERCEPT_DOG_VIZSLA { return "DOG_VIZSLA" } 108 if p == NX_PERCEPT_DOG_GSP { return "DOG_GSP" } 109 if p == NX_PERCEPT_DOG_WEIMARANER { return "DOG_WEIMARANER" } 110 if p == NX_PERCEPT_DOG_POINTER { return "DOG_POINTER" } 111 if p == NX_PERCEPT_DOG_SETTER { return "DOG_SETTER" } 112 if p == NX_PERCEPT_DOG_RETRIEVER { return "DOG_RETRIEVER" } 113 if p == NX_PERCEPT_DOG_TERRIER { return "DOG_TERRIER" } 114 if p == NX_PERCEPT_DOG_SIGHTHOUND { return "DOG_SIGHTHOUND" } 115 if p == NX_PERCEPT_DOG_SCENTHOUND { return "DOG_SCENTHOUND" } 116 if p == NX_PERCEPT_DOG_HERDING { return "DOG_HERDING" } 117 if p == NX_PERCEPT_DOG_GENERIC { return "DOG_GENERIC" } 118 if p == NX_PERCEPT_CAT_DOMESTIC { return "CAT_DOMESTIC" } 119 if p == NX_PERCEPT_CAT_FERAL { return "CAT_FERAL" } 120 if p == NX_PERCEPT_CATTLE { return "CATTLE" } 121 if p == NX_PERCEPT_SHEEP { return "SHEEP" } 122 if p == NX_PERCEPT_GOAT { return "GOAT" } 123 if p == NX_PERCEPT_PIG { return "PIG" } 124 if p == NX_PERCEPT_HORSE { return "HORSE" } 125 if p == NX_PERCEPT_CHICKEN { return "CHICKEN" } 126 if p == NX_PERCEPT_SONGBIRD_PASSERINE { return "SONGBIRD_PASSERINE" } 127 if p == NX_PERCEPT_RAPTOR { return "RAPTOR" } 128 if p == NX_PERCEPT_WATERFOWL_DUCK { return "WATERFOWL_DUCK" } 129 if p == NX_PERCEPT_WATERFOWL_GOOSE { return "WATERFOWL_GOOSE" } 130 if p == NX_PERCEPT_GAMEBIRD_PHEASANT { return "GAMEBIRD_PHEASANT" } 131 if p == NX_PERCEPT_GAMEBIRD_QUAIL { return "GAMEBIRD_QUAIL" } 132 if p == NX_PERCEPT_HONEYBEE { return "HONEYBEE" } 133 if p == NX_PERCEPT_BUMBLEBEE { return "BUMBLEBEE" } 134 if p == NX_PERCEPT_MANTIS_SHRIMP { return "MANTIS_SHRIMP" } 135 if p == NX_PERCEPT_MOUSE_LAB { return "MOUSE_LAB" } 136 if p == NX_PERCEPT_RAT_LAB { return "RAT_LAB" } 137 if p == NX_PERCEPT_HAMSTER { return "HAMSTER" } 138 if p == NX_PERCEPT_RABBIT_DOMESTIC { return "RABBIT_DOMESTIC" } 139 if p == NX_PERCEPT_SQUIRREL { return "SQUIRREL" } 140 if p == NX_PERCEPT_BAT_GENERIC { return "BAT_GENERIC" } 141 if p == NX_PERCEPT_DOLPHIN_BOTTLENOSE { return "DOLPHIN_BOTTLENOSE" } 142 if p == NX_PERCEPT_PORPOISE { return "PORPOISE" } 143 if p == NX_PERCEPT_FISH_SALMONID { return "FISH_SALMONID" } 144 if p == NX_PERCEPT_FISH_TILAPIA { return "FISH_TILAPIA" } 145 if p == NX_PERCEPT_PRESERVE_ALL { return "PRESERVE_ALL" } 146 return "UNKNOWN" 147} 148 149// ===== Hearing range accessors (Hz) =============================== 150// 151// Sources cited in genealogy_id header. Values are 60-dB SPL 152// audibility threshold ranges from comparative-mammalian-hearing 153// literature (Heffner & Heffner 1985 et seq.) where available; bird 154// ranges from Dooling et al; insect from Schul / Hennig / Robert. 155// 156// Numbers are SUBSTRATE-LEVEL defaults. Per-individual variation is 157// large; production use should override per-recording when available. 158 159func nx_perceptual_profile_hearing_hz_min(p: i64) -> i64 { 160 if p == NX_PERCEPT_HUMAN_NORMAL { return 20 } 161 if p == NX_PERCEPT_HUMAN_PRESBYCUSIS { return 30 } 162 if p == NX_PERCEPT_DOG_VIZSLA { return 40 } 163 if p == NX_PERCEPT_DOG_GSP { return 40 } 164 if p == NX_PERCEPT_DOG_WEIMARANER { return 40 } 165 if p == NX_PERCEPT_DOG_POINTER { return 40 } 166 if p == NX_PERCEPT_DOG_SETTER { return 40 } 167 if p == NX_PERCEPT_DOG_RETRIEVER { return 40 } 168 if p == NX_PERCEPT_DOG_TERRIER { return 40 } 169 if p == NX_PERCEPT_DOG_SIGHTHOUND { return 40 } 170 if p == NX_PERCEPT_DOG_SCENTHOUND { return 40 } 171 if p == NX_PERCEPT_DOG_HERDING { return 40 } 172 if p == NX_PERCEPT_DOG_GENERIC { return 40 } 173 if p == NX_PERCEPT_CAT_DOMESTIC { return 48 } 174 if p == NX_PERCEPT_CAT_FERAL { return 48 } 175 if p == NX_PERCEPT_CATTLE { return 23 } 176 if p == NX_PERCEPT_SHEEP { return 100 } 177 if p == NX_PERCEPT_GOAT { return 78 } 178 if p == NX_PERCEPT_PIG { return 42 } 179 if p == NX_PERCEPT_HORSE { return 55 } 180 if p == NX_PERCEPT_CHICKEN { return 60 } 181 if p == NX_PERCEPT_SONGBIRD_PASSERINE { return 250 } 182 if p == NX_PERCEPT_RAPTOR { return 100 } 183 if p == NX_PERCEPT_WATERFOWL_DUCK { return 200 } 184 if p == NX_PERCEPT_WATERFOWL_GOOSE { return 150 } 185 if p == NX_PERCEPT_GAMEBIRD_PHEASANT { return 250 } 186 if p == NX_PERCEPT_GAMEBIRD_QUAIL { return 250 } 187 if p == NX_PERCEPT_HONEYBEE { return 10 } 188 if p == NX_PERCEPT_BUMBLEBEE { return 10 } 189 if p == NX_PERCEPT_MOUSE_LAB { return 1000 } 190 if p == NX_PERCEPT_RAT_LAB { return 250 } 191 if p == NX_PERCEPT_HAMSTER { return 100 } 192 if p == NX_PERCEPT_RABBIT_DOMESTIC { return 96 } 193 if p == NX_PERCEPT_SQUIRREL { return 113 } 194 if p == NX_PERCEPT_BAT_GENERIC { return 1000 } 195 if p == NX_PERCEPT_DOLPHIN_BOTTLENOSE { return 75 } 196 if p == NX_PERCEPT_PORPOISE { return 75 } 197 if p == NX_PERCEPT_FISH_SALMONID { return 50 } 198 if p == NX_PERCEPT_FISH_TILAPIA { return 100 } 199 if p == NX_PERCEPT_PRESERVE_ALL { return 0 } 200 return 20 201} 202 203func nx_perceptual_profile_hearing_hz_max(p: i64) -> i64 { 204 if p == NX_PERCEPT_HUMAN_NORMAL { return 20000 } 205 if p == NX_PERCEPT_HUMAN_PRESBYCUSIS { return 8000 } 206 if p == NX_PERCEPT_DOG_VIZSLA { return 60000 } 207 if p == NX_PERCEPT_DOG_GSP { return 60000 } 208 if p == NX_PERCEPT_DOG_WEIMARANER { return 60000 } 209 if p == NX_PERCEPT_DOG_POINTER { return 60000 } 210 if p == NX_PERCEPT_DOG_SETTER { return 60000 } 211 if p == NX_PERCEPT_DOG_RETRIEVER { return 60000 } 212 if p == NX_PERCEPT_DOG_TERRIER { return 65000 } 213 if p == NX_PERCEPT_DOG_SIGHTHOUND { return 60000 } 214 if p == NX_PERCEPT_DOG_SCENTHOUND { return 60000 } 215 if p == NX_PERCEPT_DOG_HERDING { return 60000 } 216 if p == NX_PERCEPT_DOG_GENERIC { return 60000 } 217 if p == NX_PERCEPT_CAT_DOMESTIC { return 85000 } 218 if p == NX_PERCEPT_CAT_FERAL { return 85000 } 219 if p == NX_PERCEPT_CATTLE { return 35000 } 220 if p == NX_PERCEPT_SHEEP { return 30000 } 221 if p == NX_PERCEPT_GOAT { return 37000 } 222 if p == NX_PERCEPT_PIG { return 40500 } 223 if p == NX_PERCEPT_HORSE { return 33500 } 224 if p == NX_PERCEPT_CHICKEN { return 12000 } 225 if p == NX_PERCEPT_SONGBIRD_PASSERINE { return 12000 } 226 if p == NX_PERCEPT_RAPTOR { return 12000 } 227 if p == NX_PERCEPT_WATERFOWL_DUCK { return 10000 } 228 if p == NX_PERCEPT_WATERFOWL_GOOSE { return 8000 } 229 if p == NX_PERCEPT_GAMEBIRD_PHEASANT { return 11000 } 230 if p == NX_PERCEPT_GAMEBIRD_QUAIL { return 11000 } 231 if p == NX_PERCEPT_HONEYBEE { return 500 } 232 if p == NX_PERCEPT_BUMBLEBEE { return 500 } 233 if p == NX_PERCEPT_MOUSE_LAB { return 110000 } 234 if p == NX_PERCEPT_RAT_LAB { return 76000 } 235 if p == NX_PERCEPT_HAMSTER { return 96500 } 236 if p == NX_PERCEPT_RABBIT_DOMESTIC { return 49000 } 237 if p == NX_PERCEPT_SQUIRREL { return 49000 } 238 if p == NX_PERCEPT_BAT_GENERIC { return 200000 } 239 if p == NX_PERCEPT_DOLPHIN_BOTTLENOSE { return 150000 } 240 if p == NX_PERCEPT_PORPOISE { return 160000 } 241 if p == NX_PERCEPT_FISH_SALMONID { return 600 } 242 if p == NX_PERCEPT_FISH_TILAPIA { return 800 } 243 if p == NX_PERCEPT_PRESERVE_ALL { return 1000000 } 244 return 20000 245} 246 247// ===== Color receptor count accessor ============================== 248// 249// 1 = monochromat, 2 = dichromat, 3 = trichromat, 4 = tetrachromat 250// (UV-capable), >4 = exotic (mantis shrimp). 251// Substrate uses this to decide gamut + channel-count when rendering 252// visual output per declared profile. 253 254func nx_perceptual_profile_color_receptor_count(p: i64) -> i64 { 255 if p == NX_PERCEPT_HUMAN_NORMAL { return 3 } 256 if p == NX_PERCEPT_HUMAN_PRESBYCUSIS { return 3 } 257 if p == NX_PERCEPT_DOG_VIZSLA { return 2 } 258 if p == NX_PERCEPT_DOG_GSP { return 2 } 259 if p == NX_PERCEPT_DOG_WEIMARANER { return 2 } 260 if p == NX_PERCEPT_DOG_POINTER { return 2 } 261 if p == NX_PERCEPT_DOG_SETTER { return 2 } 262 if p == NX_PERCEPT_DOG_RETRIEVER { return 2 } 263 if p == NX_PERCEPT_DOG_TERRIER { return 2 } 264 if p == NX_PERCEPT_DOG_SIGHTHOUND { return 2 } 265 if p == NX_PERCEPT_DOG_SCENTHOUND { return 2 } 266 if p == NX_PERCEPT_DOG_HERDING { return 2 } 267 if p == NX_PERCEPT_DOG_GENERIC { return 2 } 268 if p == NX_PERCEPT_CAT_DOMESTIC { return 2 } 269 if p == NX_PERCEPT_CAT_FERAL { return 2 } 270 if p == NX_PERCEPT_CATTLE { return 2 } 271 if p == NX_PERCEPT_SHEEP { return 2 } 272 if p == NX_PERCEPT_GOAT { return 2 } 273 if p == NX_PERCEPT_PIG { return 2 } 274 if p == NX_PERCEPT_HORSE { return 2 } 275 if p == NX_PERCEPT_CHICKEN { return 4 } 276 if p == NX_PERCEPT_SONGBIRD_PASSERINE { return 4 } 277 if p == NX_PERCEPT_RAPTOR { return 4 } 278 if p == NX_PERCEPT_WATERFOWL_DUCK { return 4 } 279 if p == NX_PERCEPT_WATERFOWL_GOOSE { return 4 } 280 if p == NX_PERCEPT_GAMEBIRD_PHEASANT { return 4 } 281 if p == NX_PERCEPT_GAMEBIRD_QUAIL { return 4 } 282 if p == NX_PERCEPT_HONEYBEE { return 3 } 283 if p == NX_PERCEPT_BUMBLEBEE { return 3 } 284 if p == NX_PERCEPT_MANTIS_SHRIMP { return 16 } 285 if p == NX_PERCEPT_MOUSE_LAB { return 2 } 286 if p == NX_PERCEPT_RAT_LAB { return 2 } 287 if p == NX_PERCEPT_HAMSTER { return 2 } 288 if p == NX_PERCEPT_RABBIT_DOMESTIC { return 2 } 289 if p == NX_PERCEPT_SQUIRREL { return 2 } 290 if p == NX_PERCEPT_BAT_GENERIC { return 1 } 291 if p == NX_PERCEPT_DOLPHIN_BOTTLENOSE { return 1 } 292 if p == NX_PERCEPT_PORPOISE { return 1 } 293 if p == NX_PERCEPT_FISH_SALMONID { return 3 } 294 if p == NX_PERCEPT_FISH_TILAPIA { return 3 } 295 if p == NX_PERCEPT_PRESERVE_ALL { return 16 } 296 return 3 297} 298 299// ===== Flicker fusion threshold (Hz) ============================== 300// 301// Frame rate above which the visual system perceives motion as 302// continuous. Substrate uses this to decide minimum frame rate when 303// rendering visual content per declared profile. Pigeons / chickens 304// see fluorescent-light flicker invisible to humans; this matters 305// for animal-facing displays. 306 307func nx_perceptual_profile_flicker_fusion_hz(p: i64) -> i64 { 308 if p == NX_PERCEPT_HUMAN_NORMAL { return 60 } 309 if p == NX_PERCEPT_HUMAN_PRESBYCUSIS { return 50 } 310 if p == NX_PERCEPT_DOG_VIZSLA { return 75 } 311 if p == NX_PERCEPT_DOG_GSP { return 75 } 312 if p == NX_PERCEPT_DOG_WEIMARANER { return 75 } 313 if p == NX_PERCEPT_DOG_POINTER { return 75 } 314 if p == NX_PERCEPT_DOG_SETTER { return 75 } 315 if p == NX_PERCEPT_DOG_RETRIEVER { return 75 } 316 if p == NX_PERCEPT_DOG_TERRIER { return 75 } 317 if p == NX_PERCEPT_DOG_SIGHTHOUND { return 75 } 318 if p == NX_PERCEPT_DOG_SCENTHOUND { return 75 } 319 if p == NX_PERCEPT_DOG_HERDING { return 75 } 320 if p == NX_PERCEPT_DOG_GENERIC { return 75 } 321 if p == NX_PERCEPT_CAT_DOMESTIC { return 100 } 322 if p == NX_PERCEPT_CAT_FERAL { return 100 } 323 if p == NX_PERCEPT_CATTLE { return 50 } 324 if p == NX_PERCEPT_SHEEP { return 50 } 325 if p == NX_PERCEPT_CHICKEN { return 100 } 326 if p == NX_PERCEPT_SONGBIRD_PASSERINE { return 145 } 327 if p == NX_PERCEPT_RAPTOR { return 130 } 328 if p == NX_PERCEPT_HONEYBEE { return 300 } 329 if p == NX_PERCEPT_BUMBLEBEE { return 300 } 330 if p == NX_PERCEPT_PRESERVE_ALL { return 1000 } 331 return 60 332} 333 334// ===== Validity gate ============================================== 335 336func nx_perceptual_profile_is_valid(p: i64) -> i64 { 337 if p == NX_PERCEPT_NONE { return 1 } 338 if p == NX_PERCEPT_PRESERVE_ALL { return 1 } 339 if p >= 1 && p <= 2 { return 1 } // human band 340 if p >= 10 && p <= 20 { return 1 } // canine band 341 if p >= 30 && p <= 31 { return 1 } // feline band 342 if p >= 40 && p <= 44 { return 1 } // livestock band 343 if p >= 50 && p <= 56 { return 1 } // avian band 344 if p >= 70 && p <= 72 { return 1 } // insecta band 345 if p >= 80 && p <= 84 { return 1 } // small-mammal band 346 if p >= 90 && p <= 92 { return 1 } // echolocator band 347 if p >= 100 && p <= 101 { return 1 } // fish band 348 return 0 349}