Add generic streaming interpreter with configurable sources/audio
- Add stream_sexp_generic.py: fully generic sexp interpreter - Add streaming primitives for video sources and audio analysis - Add config system for external sources and audio files - Add templates for reusable scans and macros - Fix video/audio stream mapping in file output - Add dynamic source cycling based on sources array length - Remove old Python effect files (migrated to sexp) - Update sexp effects to use namespaced primitives Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -189,6 +189,30 @@ def prim_range(*args):
|
||||
return []
|
||||
|
||||
|
||||
# Random
|
||||
import random
|
||||
_rng = random.Random()
|
||||
|
||||
def prim_rand():
|
||||
"""Return random float in [0, 1)."""
|
||||
return _rng.random()
|
||||
|
||||
def prim_rand_int(lo, hi):
|
||||
"""Return random integer in [lo, hi]."""
|
||||
return _rng.randint(int(lo), int(hi))
|
||||
|
||||
def prim_rand_range(lo, hi):
|
||||
"""Return random float in [lo, hi)."""
|
||||
return lo + _rng.random() * (hi - lo)
|
||||
|
||||
def prim_map_range(val, from_lo, from_hi, to_lo, to_hi):
|
||||
"""Map value from one range to another."""
|
||||
if from_hi == from_lo:
|
||||
return to_lo
|
||||
t = (val - from_lo) / (from_hi - from_lo)
|
||||
return to_lo + t * (to_hi - to_lo)
|
||||
|
||||
|
||||
# Core primitives dict
|
||||
PRIMITIVES = {
|
||||
# Arithmetic
|
||||
@@ -231,10 +255,17 @@ PRIMITIVES = {
|
||||
'list?': prim_is_list,
|
||||
'dict?': prim_is_dict,
|
||||
'nil?': prim_is_nil,
|
||||
'is-nil': prim_is_nil,
|
||||
|
||||
# Higher-order / iteration
|
||||
'reduce': prim_reduce,
|
||||
'fold': prim_reduce,
|
||||
'map': prim_map,
|
||||
'range': prim_range,
|
||||
|
||||
# Random
|
||||
'rand': prim_rand,
|
||||
'rand-int': prim_rand_int,
|
||||
'rand-range': prim_rand_range,
|
||||
'map-range': prim_map_range,
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user