AudioTools Call & Response
Play a phrase. Hear an answer. Let the music remember. A continuously listening performance partner that analyses gestures, transforms sound with six Praat AudioTools scripts, retrieves sonic memory and shapes polyphonic responses in stereo space.
What this does
AudioTools Call & Response is a phrase-based, interactive co-improvisation system. It listens to a live performer, analyses a completed acoustic gesture and chooses an appropriate musical response. A stable pitched sound, a noise texture, a sequence of attacks and a glissando lead to different transformation possibilities. The same performance can also recall earlier material, transform a recalled sound or play unprocessed sounds from a prepared corpus.
The system accumulates a sonic memory of live phrases (Corpus A), computer-generated results (Corpus B) and optional prepared recordings (Corpus C). Its retrieval considers both the current phrase and a decaying history of earlier phrases. Independently, its stereo mixer can add secondary memory voices and a quieter evolving background.
Key capabilities in v0.4.12:
- Continuous microphone listening: capture continues during analysis, Praat rendering and playback; a new gesture does not have to wait for the previous answer.
- Six gesture-dependent transformations: Paulstretch, Markov Soundscape Weaver, MDS Space Navigator, Spiral Pitch Dance, 8-Channel Speed Deviations and Percussive Audio Groove Creator.
- Three separate corpora: live phrases, processed computer responses and an optional read-only folder of prepared audio recordings.
- Phrase-level influence memory: earlier gestures can shape retrieval with decaying weights, coherence gating and an optional trend projection.
- Several response strategies: transform, recall, recall-and-transform, weighted Hybrid and strict, unprocessed Corpus C recall.
- Polyphonic, spatial performance: foreground answers, delayed secondary voices, an optional background texture and dynamic stereo placement.
- Perceptual output balancing: stereo-aware, burst-aware level matching, optional follow-live adjustment and peak protection.
- Visual feedback: separate performer and system status, an end-of-phrase silence indicator and a Memory Map of sounds and relationships.
- Temporary working memory: generated session files are cleaned up after successful shutdown; supplied corpus recordings are not rewritten.
Quick start
- Connect the microphone or instrument to the intended input device, and select an output device. Use headphones or isolated monitoring to reduce audio feedback into the microphone.
- Set input gain before starting. While you are silent, ordinary room noise should not trigger the detector. During normal playing, the input should register clearly without clipping. See Microphone setup and sensitivity below.
- In Praat, run
AudioTools_CallResponse.praatand choose Source: Live - continuous (v0.2). For the full memory system, choose Preset: Hybrid memory (default); the form's initial preset is Custom (form and dialogs). - Keep Transformation: Automatic (gesture classifier). You do not need a prepared corpus for Hybrid memory: leave
Corpus_C_folderempty to build memory from the performance. - Start the session and remain quiet while the display reads STAY QUIET (input calibration). Once it reads PLAY WHEN READY, you can begin.
- When it reads RECORDING YOUR PHRASE, finish the gesture and leave a pause below the end threshold. The default required quiet interval is 0.6 seconds. The display then shows PHRASE CAPTURED briefly.
- You may play again immediately, even while a response is sounding. Processing and playback are separate from the microphone's listening state.
- Use the on-screen STOP button or Esc / S (with the Demo window focused) to end the session and allow cleanup to finish.
Sensitivity_dB (for example, try 12 instead of 9). A larger sensitivity value means less sensitive onset detection; it does not reduce microphone gain. Recheck quiet gestures after every adjustment.Microphone setup, input gain and sensitivity
The phrase detector reacts to audio arriving at the input, not only to sounds intentionally performed by the musician. Footsteps, handling noise, air conditioning or nearby speech can therefore appear to be musical gestures, particularly with inappropriate microphone placement or gain. This is a practical limitation of energy-based phrase detection, not a feature of the Hybrid memory response mode.
| Control | What it actually changes | When to use it |
|---|---|---|
| Microphone / interface input gain | Amplifies or attenuates all incoming audio: the performer and the room together. | Reduce it when ordinary background events are entering the system at excessive levels. Do not reduce it so far that quiet musical gestures disappear. |
| Sensitivity_dB Default: 9 dB | Requires a phrase onset to rise farther above the calibrated noise floor. Higher = less sensitive; lower = more sensitive. | Try a modest increase if external noise still triggers the detector after gain is set correctly. Then test soft playing. |
| Min_phrase_s Default: 0.5 s | Rejects detected activity too short to count as a complete phrase. | Can help with brief clicks or knocks; it will not prevent longer external noises from triggering. |
| End_silence_s Default: 0.6 s | Sets how long the input must remain below the end threshold before a phrase is complete. | Change to shape the phrasing: shorter for quicker exchanges, longer to allow internal pauses. |
Practical sound-check
- With your instrument silent, observe the input meter and the
DETECTORvalues. Routine background noise should stay belowstart; the screen should remain at PLAY WHEN READY. - Play the quietest gesture you expect to use. Check that the screen changes to RECORDING YOUR PHRASE and that your full gesture is captured.
- Stop playing. The
quietcounter should advance toward the required duration, and PHRASE CAPTURED should appear. - Play a normal and a strong gesture. Confirm that the input is clear and not distorted or clipped. The meter is a detection guide, not a substitute for an audio-interface clipping indicator.
- If external noises trigger responses, adjust the hardware gain and, when necessary, increase
Sensitivity_dBin small steps. Restart the session after changing input gain so that the detector can recalibrate under the new conditions.
Sensitivity_dB govern what is detected. Level_matching and Follow_live_input govern the level of computer responses after a phrase has already been detected. Playback-level matching does not stop an external noise from becoming a phrase.Core concept: listen, transform, remember and spatialise
Python captures and analyses live sound, detects phrase boundaries, selects from memory, schedules responses and mixes playback. The existing Praat AudioTools scripts render the six transformations. These transformations act on completed phrases, rather than running as continuous sample-by-sample effects.
In Continuous mode the next phrase can begin while earlier answers play or render. Hybrid memory may produce a response, a later memory layer and an independent background, but those activities do not determine when the performer must play or stop.
Input and performance modes
| Source | How it behaves | Best use |
|---|---|---|
| Live - continuous (v0.2) | A persistent microphone stream captures successive phrases while analysis, memory search, rendering and playback proceed independently. | Interactive improvisation with memory, spatial voices and possible overlap. |
| Live - turn-taking (v0.1.3) | One phrase is listened to, processed and played before the next listening cycle. | Sequential demonstrations and clear one-to-one exchanges. |
| Selected Sound(s) | Processes selected Praat Sound objects without microphone recording; can test all six transformations. | Offline analysis and controlled comparisons. |
| List audio devices | Lists available input and output devices and their identifying numbers. | Routing and installation checks. |
The Transformation field may be automatic or forced to a particular script. Test all six is only for selected Sounds. A forced selection does not make ineligible material necessarily produce a valid transformation.
End_silence_s. The engine also has a Max_phrase_s safety limit (12 s by default): long gestures may be split at a relatively quiet point and carried into another phrase without demanding that the performer stop. The display distinguishes this maximum-duration split from a natural pause.Six gesture-dependent transformations
The automatic classifier compares several acoustic and morphological measurements rather than using a single instrument label. The following are musical tendencies, not promises that every example will select the named transformation. Several candidates can be plausible, and a candidate must meet its own eligibility requirements.
| Performed sound | AudioTools transformation | Musical response |
|---|---|---|
| Stable, sustained harmonic tone Clear pitch, high harmonicity, relatively few attacks. | Paulstretch | Extends time and unfolds a sustained spectral texture, with stretch parameters derived from the phrase. |
| Noisy or aperiodic texture Broadband energy, weak periodicity, changing timbre. | Markov Soundscape Weaver | Reorganises analysed grains or spectral states into a probabilistic soundscape. |
| Several discrete attacks Recognisable separate events with contrasting characteristics. | MDS Space Navigator | Reorders sound segments according to their measured timbral relationships. |
| Continuous glissando Coherent pitch movement across a sufficiently voiced phrase. | Spiral Pitch Dance | Derives pitch-motion and spiral parameters from the detected gesture. |
| Complex dynamic envelope Multiple amplitude peaks, swells and a substantial dynamic range. | 8-Channel Speed Deviations (MAX MC) | Disperses the source into eight varispeed voices. Each channel has a fixed, individually chosen playback speed; speed affects pitch and duration together. |
| Percussive phrase with changing density Recognisable transients and variable event spacing. | Percussive Groove Creator | Creates rhythmic reorganisation using detected attacks, density and tempo-related parameters. |
The system also considers pitch continuity, harmonic-to-noise ratio, spectral shape, MFCC-related timbre, onset density, envelope complexity, segmentation and other measurements. If no eligible transformation exceeds its confidence threshold, the source phrase can be returned unchanged instead of forcing an inappropriate effect. A rendering failure likewise has a documented passthrough fallback.
Three sonic-memory corpora
The memory engine distinguishes the origin of a stored sound. These collections are separate, but they share one similarity-search and response-selection system.
Corpus A · Live performance
Original phrases captured during the current session. Each phrase is analysed and added after the system has searched for its response, preventing immediate self-retrieval. This is the performer's unfolding musical history.
Corpus B · Processed memory
New audio rendered by Praat AudioTools. Every stored result is analysed from its actual processed sound, with a record of its parent phrase, effect and processing generation. This is a memory of what the computer has made.
Corpus C · Prepared reference material
An optional folder of existing recordings supplied by the musician. Longer recordings are divided into usable segments and indexed before the performance. The source files are treated as read-only.
Corpus_C_folder blank to improvise with only A and B. At the beginning those corpora are empty; the system creates new responses first, then gains more recall possibilities as the performance develops. When a corpus is empty or disabled, its selection weight is redistributed to the sources that are available.Corpus A is not the same as Corpus B. A played flute phrase may be stored in A, while an extended, noisy or varispeed-derived answer to that phrase enters B as a different sound with different acoustic measurements. Material from B can later return as a memory layer or be subjected to another appropriate transformation.
Stored items carry ancestry and generation information. The system excludes the currently analysed phrase, can avoid very recent material, enforces recall cooldowns and limits successive transformations. Simply replaying a stored phrase does not count as creating a new processed sound.
The live and processed corpora are held in RAM with limits on item count and total stored audio. An optional prepared corpus can be indexed in RAM and reread from its original files on demand when memory is constrained. The performance memory is session-specific: it is not automatically saved as a permanent sound library.
How sonic memory is retrieved
The engine describes each captured phrase using acoustic and temporal features. Candidate sounds in enabled memory corpora are compared on normalised timbre, pitch gesture, rhythmic pattern, amplitude envelope and duration. It can refine matches using time-varying pitch and envelope contours.
| Similarity mode | Primary emphasis | Possible musical relationship |
|---|---|---|
| Hybrid (default) | Timbre, pitch gesture, rhythm, envelope and duration combined. | A similar overall gesture from an earlier moment. |
| Timbre | MFCC and spectral properties. | A noisy sound retrieving related noisy material. |
| Pitch gesture | Pitch movement and contour when pitch is reliable; unpitched queries use a hybrid fallback. | An ascending contour finding a related pitch trajectory. |
| Rhythm | Onsets, inter-onset timing and density. | A repeated or accelerating rhythmic gesture. |
| Envelope | Amplitude pattern and energy development. | A swell retrieving a similar dynamic shape. |
| Contrast | Relatively different rather than nearest-match candidates. | A sustained tone suggesting a contrasting event. |
Candidate selection includes similarity thresholds, controlled randomness, recall cooldown and exclusion of very recent or closely related sources. The similarity scores describe measured acoustic relationships; they are not a semantic interpretation of a phrase's musical intention.
Phrase-level influence memory
New in v0.4.8, refined in v0.4.9. Retrieval is no longer based exclusively on the last phrase. The recent history of gestures can influence the next memory match. Each older gesture has a smaller weight, and its relevance decreases with elapsed time. This provides short-term contextual memory while preserving the priority of the most recent phrase.
| Control | Default | Meaning |
|---|---|---|
| Influence_depth | 3 | The latest phrase and up to two preceding phrases contribute. Set to 1 to use only the latest phrase. |
| Influence_decay | 0.5 | Reduces weight as a gesture moves farther back in the phrase sequence. |
| Trend_weight | 0 (off) | Optionally adds a query extrapolating a descriptor trend from the two most recent phrases. |
| Time decay | 45 s half-life | The influence of previous phrases also fades as actual performance time passes. This value is internal, not a separate form control. |
| Coherence gating | Automatic | Reduces an older phrase's influence when it is acoustically unrelated to the present gesture, helping a new idea take precedence. |
The system uses the phrase's actual ending time to age its influence, rather than the time an analysis thread happens to process it. The Memory Map can show pale-lilac influence arcs whose weights represent contributions to a chosen memory match.
Influence_depth = 1, then with the default value 3. The comparison isolates the effect of recent history on retrieval, without changing the six transformation scripts.How a new response is chosen
| Response mode | Behavior |
|---|---|
| Transform only | Analyse the latest phrase and attempt one appropriate Praat AudioTools transformation. |
| Recall | Play a qualified stored sound without additional transformation. If no match qualifies, the ordinary Recall mode may fall back to a new transformation. |
| Recall + Transform | Retrieve suitable memory and process that sound through an eligible transformation, subject to the generation limit. |
| Hybrid (default action mode) | Choose between new transformation, unprocessed recall and transformed recall, according to configurable weights and available material. |
| Corpus only - unprocessed recall | Strict corpus-only mode: play matching prepared Corpus C sounds without Praat effects. If no match qualifies, remain silent and keep listening; no transformation or phrase passthrough fallback. |
The default Hybrid action weights are 40 : 30 : 30 (Transform : Recall : Recall + Transform). They are conditional weights, not guaranteed playback percentages. By default, corpus source priorities are A 40, B 30, C 30; unavailable corpora do not supply candidates. Corpus-only recall bypasses the transformations and automatic memory layers/background.
Performance presets
The form's Preset menu provides ready-made musical configurations for Continuous mode. The first choice, Custom (form and dialogs), uses the current form/dialog settings. A named preset pre-fills and overrides the associated Sonic Memory and Playback values; tick Memory_settings or Playback_settings to inspect and fine-tune those values before starting. Presets do not replace the selected input device or microphone sensitivity.
| Preset | Principal behavior |
|---|---|
| Classic transform (v0.2) | One new transformation per phrase, no Sonic Memory, no polyphony or background. |
| Transform + ambience | Transform-only responses over a quiet texture built from sound accumulated during the session. |
| Hybrid memory (default) | Transform, recall and transformed recall with memory A/B and optional C; polyphony and background enabled. |
| Echo memory (recall own phrases) | Emphasises recalling material gathered from the performance; no preloaded Corpus C retrieval. |
| Corpus only - hybrid / timbre / pitch gesture / rhythm / contrast | Strict unprocessed recalls from prepared Corpus C, using the named matching strategy. No matching candidate means silence. |
| Corpus re-composed (corpus + transform) | Retrieves prepared C material and transforms it with one of the six Praat engines. |
| Dense ensemble | More simultaneous voices, frequent memory layers and a wider, more mobile stereo image. |
| Sparse / intimate | Fewer voices, little layering, reduced space and no background. |
| Ambient bed | More present, slowly changing background, longer fades and evolving memory priorities. |
| Percussive / rhythmic | Rhythm-oriented memory matching, short envelopes and preserved attacks. |
Corpus_C_folder. For a first session without prepared recordings, use Hybrid memory (default) or Classic transform.Polyphony: responses, layers and background
In Continuous mode, foreground answers can overlap. The mixer also supports lower-priority secondary memory layers and an evolving background, creating an autonomous sonic environment based on previously heard material.
Foreground response
The main answer to a completed performer phrase. It has highest priority, can overlap earlier foreground answers and is not routinely stolen by lower-priority layers.
Secondary memory layer
An additional sound from available memory, often arriving 0.6-3.5 s after an answer. It may follow the phrase's rhythmic pulse and occupies a different stereo position.
Background texture
Quiet, evolving sound drawn from memory and recent computer answers. It continues independently of detected phrase starts and ends, and recedes under stronger activity.
Polyphonic_density controls how often a secondary layer is attempted; eligibility and mixer capacity also matter. Max_voices defaults to four. When resources are crowded, a new high-priority response may fade out an older background or secondary voice. A departing voice may remain audible briefly during its fade.
Layer_shape defaults to Whole sounds: recalled and layered sounds are played in their entirety where possible. The alternative Excerpts (onset -> natural end) starts at an onset earlier in the sound and continues to its natural end. Processed Corpus B retains complete rendered answers up to the playback cap, rather than unconditionally keeping only the first 15 seconds.
Turn off Polyphony for one computer answer at a time; the evolving background is also inactive in that mode. This is useful for a controlled comparison but is not required for normal interaction.
Stereo space, dynamics and level protection
The mixer positions answers independently of the transformation engine. It preserves genuine stereo sources, pans mono material using equal-power placement, and optionally moves voices smoothly over time.
| Mechanism | What it does |
|---|---|
| Equal-power placement | Places mono sources across stereo without adding delays or synthetic decorrelation. |
| Preserved stereo material | Maintains the existing left-right character while permitting bounded width and balance adjustments. |
| Spatial_movement | Creates slow, smooth movement; zero leaves sources fixed. |
| Fade envelopes | Controls soft entrances and exits, with shorter attack fades for transient material. |
| Level_matching | Uses stereo-aware, K-weighted active loudness to balance roles. Default role targets are approximately -18 dB (foreground), -24 dB (secondary) and -33 dB (background). |
| Burst safeguard | Limits gain for sounds with especially intense 100 ms bursts, such as some percussive results; this is a static adjustment per sound, not a dynamic compressor. |
| Per-voice peak control | Checks peaks after spatial placement; the summed stereo mix has an additional limiter for overlaps. |
| Follow_live_input | Optionally shifts response targets according to a smoothed relative change in the performer's captured loudness. Off by default; it does not control onset sensitivity. |
| Corpus_C_balance_dB | Optional balance offset for preloaded Corpus C material at playback, without rewriting corpus recordings. |
The system applies one gain to each sound to preserve its internal dynamics as far as possible. Gain caps and a peak ceiling still constrain the result. Level matching cannot prevent false phrase detection caused by external microphone noise.
Spatial_movement = 0 and then with the default value. You can also compare Level_matching on and off to hear how loudness balancing affects timbral and dynamic contrasts.Evolving background texture
With Background_layer enabled, the system can construct low-level textures from its sonic memory. It selects available source material, favours suitable sustained sounds, combines overlapping excerpts or grains and gently filters and moves the result. New textures replace old ones through overlapping fades rather than hard switching.
The default reference level is −33 dBFS (a low active-RMS target when level matching is enabled). The background is reduced while the performer is active or when foreground answers occupy the space; it gradually returns when the foreground becomes less busy. If microphone leakage becomes strong, the background may pause to avoid repeatedly exciting the phrase detector.
From a compositional perspective, Background ON creates an environment with continuity; Background OFF allows silence to remain a more explicit part of the musical dialogue. Both are useful, and neither changes the source sounds stored in memory.
Main Praat interface
Performance and listening controls
| Field | Function |
|---|---|
| Preset | Choose Custom or a prepared musical configuration. Named presets mainly affect Sonic Memory and Playback; see Performance presets. |
| Source | Continuous microphone, sequential turn-taking, selected Praat Sounds or device listing. |
| Transformation | Automatic classifier, specific processor or Test all six (selected Sounds only). |
| Cycles | Number of turns in turn-taking or selected-Sound modes; not the number of gestures in a Continuous session. |
| Input_device / Output_device | Use default, a device index or a distinctive part of the audio device name. |
| Sensitivity_dB | Onset level required above the calibrated background. Higher values make the detector less sensitive; default 9 dB. |
| Min_phrase_s | Shortest accepted phrase; default 0.5 s. |
| End_silence_s | Quiet interval needed for a natural phrase ending; default 0.6 s. |
| Max_phrase_s | Maximum capture length; long gestures can be split and continued. Default 12 s. |
| Sonic_memory | Enable memory and corpus-based decisions for Continuous performance. |
| Response_mode | Hybrid, Transform only, Recall, Recall + Transform or strict Corpus-only unprocessed Recall. |
| Corpus_C_folder | Prepared recordings directory (optional except for the corpus presets). |
| Memory_settings | Open corpus, similarity, action-weight, limits and influence dialogs. |
| Playback_settings | Open polyphony, layer shape, background, space, fades and level controls. |
| Debug_log | Store session diagnostics temporarily; logs are intended to be removed during successful cleanup. |
| Advanced_settings | Set audio rate/channels, queue limits, timing, output and leakage controls. |
Sensitivity_dB. For detailed instructions see Microphone setup and sensitivity.Sonic Memory settings
Corpora, similarity and decision weights
| Control | Meaning |
|---|---|
| Use_live_corpus_A | Store accepted performer phrases for later recall. |
| Use_processed_corpus_B | Store and analyse newly rendered answers as independent memory items. |
| Use_preloaded_corpus_C | Search a prepared, read-only folder when supplied. |
| Similarity_mode | Hybrid, Timbre, Pitch gesture, Rhythm, Envelope or Contrast. |
| Minimum_similarity | Similarity required for recall; higher values exclude more distant candidates. |
| Weight_A_live / Weight_B_processed / Weight_C_preloaded | Relative recall preferences for available corpora; defaults 40 / 30 / 30. |
| Weight_transform / Weight_recall / Weight_recall_transform | Relative Hybrid action weights; defaults 40 / 30 / 30. |
| Evolving_memory | Optionally change corpus selection priorities over the session. |
| Layered_response | Encourage secondary memory entrances; separate from Background_layer. |
Memory limits and influence
| Control | Default | Purpose |
|---|---|---|
| Max_generation | 2 | Restrict recursive reprocessing of previously transformed material. |
| Max_live_phrases | 100 | Maximum retained live Corpus A items. |
| Max_processed_responses | 100 | Maximum retained processed Corpus B items. |
| Max_audio_memory_min | 30 | Aggregate audio duration permitted in RAM. |
| Max_item_s | 15 | Length limit for live Corpus A storage and segmentation of prepared Corpus C material. Processed B answers are kept whole, subject to their separate response-duration cap. |
| Candidates | 5 | Top-ranked possible memory matches considered for retrieval. |
| Cooldown_recalls | 4 | Discourage recalling the same sound repeatedly in a short span. |
| Exclude_recent_phrases | 2 | Reduce immediate repetition of the newest captured phrases. |
| Same_family_exclusion | Off | Optionally exclude related recent source families. |
| Influence_depth | 3 | Number of recent phrases used as a context for memory search. |
| Influence_decay | 0.5 | Weight reduction by phrase age in the history. |
| Trend_weight | 0 | Optional forward projection of the most recent descriptor change; off by default. |
Older items can be evicted as memory limits are reached. The limits control the in-session model, not the user's prepared source files. See Phrase-level influence memory for the musical role of the additional context.
Playback settings
| Control | Default | Function |
|---|---|---|
| Polyphony | On | Allow overlapping computer responses and memory layers. |
| Max_voices | 4 | Target mixer voice count, allowing brief fades after voice replacement. |
| Polyphonic_density | 0.5 | Influence the probability of an additional memory layer. |
| Layer_shape | Whole sounds | Choose complete sounds or excerpts from an onset to the natural end. |
| Background_layer | On | Enable low-level evolving material made from memory. |
| Background_level_dB | -33 | Quiet background reference target when level matching is active. |
| Stereo_width | 1.0 | Spatial spread of genuine stereo or mono material. |
| Spatial_movement | 0.3 | Degree of slow automatic spatial movement. |
| Pan_variation | 0.5 | Variation of positions among successive voices. |
| Fade_in_ms / Fade_out_ms | 30 / 400 | Envelope times, adapted to source duration and attack type. |
| Preserve_transients | On | Shorten entrance fades for sharp attacks. |
| Level_matching | On | Stereo-aware, K-weighted role balancing with burst and peak safeguards. |
| Follow_live_input | Off | Optionally track relative live-performance loudness in the response mix. |
| Follow_range_dB | 9 | Maximum positive or negative target change when follow-live is enabled. |
| Corpus_C_balance_dB | 0 | Extra balance adjustment for playback of prepared Corpus C sounds. |
All playback gains are applied to in-memory signals; the original Corpus C files are not modified. These controls do not change microphone input sensitivity. Use input gain and Sensitivity_dB for unwanted background-noise triggers.
Advanced performance settings
| Control | Default | Purpose |
|---|---|---|
| Sample_rate | 44,100 Hz | Audio sample rate for input and output. |
| Channels | 1 | Captured input channels; the playback engine is stereo. |
| Play_response | On | Whether the computer plays audible responses. |
| Max_pending_phrases / Max_pending_responses | 3 / 3 | Queue capacity for phrases and prepared responses. |
| Overflow_policy | Drop oldest | Choose whether to discard an old pending job or refuse a new one when full. |
| Max_response_s | 20 s | Planned cap for generated answers; playback allows a small grace margin and uses quiet-point cuts and fades if required. |
| Session_minutes | 60 | Maximum scheduled session length. |
| Idle_stop_s | 300 s | Stop after sustained inactivity. |
| Leakage_guard | On | Estimate output-to-microphone leakage and reduce feedback retriggers when necessary. |
Live performer display and stopping
New in v0.4.12. The Praat Demo interface deliberately separates the performer's recording state from the computer's response state. Playback or processing does not mean that you must stop, and a background layer is not a new microphone event.
| YOUR PERFORMANCE | What it means for the performer |
|---|---|
| STAY QUIET | The system is calibrating the microphone and background level. Remain quiet for a short moment. |
| PLAY WHEN READY | The microphone is listening and awaits a new gesture. Start at any moment, including during a computer response. |
| RECORDING YOUR PHRASE | The detector has recognised activity and is capturing a phrase. Finish when musically appropriate; a quiet interval completes it. A progress indicator shows the accumulated quiet time. |
| PHRASE CAPTURED | The phrase has been submitted. The message is held for about 2 s, but does not block the next phrase. |
AudioTools Call & Response 0.4.12
MODE: CONTINUOUS PRESET: Hybrid memory (default)
YOUR PERFORMANCE
RECORDING YOUR PHRASE
Stop playing for 0.6 s when your gesture is complete.
[quiet progress toward phrase end]
SYSTEM RESPONSE
PLAYING: Markov Soundscape Weaver
VOICES: 3/4 (response, memory layer, background)
MEMORY: A 18 | B 12 | C 0
RECALL: Corpus B MATCH: 0.82 (3 phrases)
ACTION: Recall
DETECTOR: input -28 dB | start -46 | end -50 | floor -55
quiet 0.2 / 0.6 sThe technical DETECTOR line shows measured input level, onset threshold (start), end threshold (end), estimated background floor and elapsed quiet time. The level meter has threshold marks. A LAST event briefly distinguishes a genuine pause from split at Max_phrase_s (continues), ignored noise or rejected short input.
The independent SYSTEM RESPONSE area shows what is processing or sounding, voice count, memory contents and recent selection. These are descriptions of computer activity, not cues telling the performer when to play.
| Action | How to do it |
|---|---|
| Stop the session | Use the red STOP control, or Esc / S in the focused Praat Demo window. |
| Switch visualisation | Press G in the Demo window to toggle between the full status view and the Memory Map when Sonic Memory is enabled. |
| Check the phrase detector | Observe input relative to start/end thresholds and watch the quiet counter while you stop playing. |
| Verify a shutdown | Allow the audio streams and owned render processes to close; wait for the cleanup report. |
On some Praat versions a Demo-window click may produce a Mouse click not completely handled message; dismissing that message allows the stop operation to finish. The normal session does not require saving any intermediate Sound objects.
Memory Map visualisation
Introduced in v0.4.6 and extended in v0.4.8-0.4.9. The Memory Map is an arc-based view of the sounds collected or loaded during the session and the relationships among them. When Sonic Memory is on it is the default visualisation; press G to switch to the technical status view. The performer headline remains visible above the map.
| Graph element | Interpretation |
|---|---|
| Horizontal memory line | Prepared Corpus C material at the left, the unfolding live performance and processed memory at the right. |
| Memory points | Corpus A = live phrases (blue); Corpus B = processed answers (orange); Corpus C = prepared recordings (grey). A light point can represent an observed live phrase not stored in A. |
| Upper arcs | Acoustic similarity links between stored sounds. Colour relates to gesture class, paleness indicates a weaker relation. |
| Lower arcs | Actual actions: recall (purple), recalled sound transformed (magenta), or a new transformation from a phrase (teal). |
| Pale lilac influence arcs | Contributions from earlier phrases to the selected sound's memory score, not merely the original weights in the influence model. |
| Red ring / red tick | Currently sounding memory material / latest performer phrase. |
The map provides an interpretable picture of retrieval and action. It is a visual account of the memory relationships, not itself a separate sequencing engine or a Factor Oracle. It does not instruct the performer to wait for the displayed links before starting another gesture.
Compositional workflows
| Workflow | Suggested exploration |
|---|---|
| A - Gesture and transformation | Use Classic transform (v0.2). Play a sustained tone, breath/noise, grouped attacks and a glissando. Compare the six automatic transformation choices without memory layers. |
| B - Self-growing musical memory | Use Hybrid memory (default), with no prepared Corpus C. Build up A and B over several phrases; repeat or vary earlier gestures and listen for recalls. |
| C - The computer remembers itself | Allow processed Corpus B and Recall + Transform; audition how a processed answer becomes material for later generations. |
| D - Strict acoustic corpus dialogue | Supply a Corpus C folder and use a Corpus only preset. The live performer steers unprocessed recordings using timbre, pitch, rhythm, hybrid similarity or contrast; no match yields silence. |
| E - Transforming the corpus | Use Corpus re-composed to search a prepared sound library and then transform selected material through Praat. |
| F - Phrase-level contextual memory | Compare Influence_depth = 1 and 3 on related gesture sequences. Optionally explore Trend_weight, which is off by default. |
| G - Spatial counterpoint | Enable polyphony and memory layers, turn Background off initially, and begin new phrases while earlier answers sound. |
| H - An evolving environment | Enable Background and slow spatial movement; observe the Memory Map as the performance and the machine-generated memory develop. |
Performance study: from dialogue to ecosystem
First use Classic transform for a one-to-one relationship. Then compare Hybrid memory with polyphony and background. Finally inspect the Memory Map to see which earlier phrases and transformed results contributed to later answers. Throughout the experiment, the YOUR PERFORMANCE heading, not the playback activity, tells you whether a phrase is being captured.
Requirements and installation
| Component | Requirement |
|---|---|
| Praat | A recent installation supporting scripted subprocesses, audio file access, the clock and sleep functions, and (where requested) Full Trust for local file and process operations. |
| Praat AudioTools | The six processing scripts must be present at their normal library locations. The special MAX MC preset and non-visual MDS execution must be supported by the installed scripts. |
| Python | Python with numpy, scipy, soundfile and sounddevice. |
| Audio interface | A functioning input device for live performance and a stereo output device for the spatial mixer. |
| Operating environment | Local execution on the musician's computer. Audio rendering and retrieval do not require a network service. |
Place the two application files in the existing AudioTools library:
plugin_AudioTools/
Vector Chain/
AudioTools_CallResponse.praat
py/
audiotools_call_response.py
Install any missing Python dependencies into the interpreter used by the Praat launcher:
python -m pip install numpy scipy soundfile sounddevice
The launcher first tries its configured Python interpreter and then common system Python commands. When necessary, set the pyCandidate1$ path near the beginning of the Praat script. The praatExe$ setting can identify the executable for the independent, headless rendering process; when empty, the system attempts to find Praat automatically.
The six transformation scripts remain in their regular AudioTools locations; do not move or rename them merely to run Call & Response. The two launcher files must belong to the same installation and remain compatible with one another.
Diagnostics: the Python file has a command-line self-test command for synthetic classification, memory and mixer checks. These tests are useful for installation troubleshooting but do not replace a live sound-card test.
Session files, privacy and cleanup
Most musical memory resides in RAM. However, the system must sometimes exchange audio and job instructions with Praat through files. It creates a private temporary working directory for each session, normally under the operating system's temporary directory, and may write temporary WAVs, job descriptions, status files and optional diagnostic logs.
On an ordinary, successful stop, the engine is designed to close streams, release or terminate its own rendering processes and remove the session directory and its generated contents. If cleanup cannot finish because a process is still active or a file remains locked, the system should report CLEANUP INCOMPLETE rather than pretend that the files were deleted. Recovery at a later launch can remove abandoned sessions after checking that they are no longer active.
Limitations and performance considerations
- Not zero-latency effects: the system analyses completed phrases and may need time for corpus search and headless Praat rendering before a newly transformed response can sound.
- Microphone setup is essential: a detector based primarily on level and background estimation cannot always tell intended music from a loud external noise. Reduce excessive microphone input gain and adjust
Sensitivity_dBbefore performance. - Quiet or noise-based gestures need testing: a soft crescendo, sustained noisy texture or very quiet tail can resemble changes in background level. The calibrated detector and background-release safeguards improve reliability but do not give perfect musical segmentation.
- Long phrases can be split:
Max_phrase_sis a safety boundary, not a musical command to stop. The system seeks a quiet point and continues the remainder when appropriate. - Memory similarity is acoustic: retrieval estimates resemblance in timbre, contour, rhythm and envelope, not semantic meaning, harmonic function or long-form musical intention.
- Finite computer resources: bounded queues, memory duration and voice count can cause pending items to be omitted during heavy performance load.
- No full echo cancellation: leakage detection estimates playback reaching the microphone; it does not remove or perfectly reject acoustic spill. Headphones or isolated routing are recommended.
- Stereo output: the main mixer has two channels, even though one of its transformation scripts computes eight internal varispeed voices.
- Audible level decisions: role-based matching, peak trims and limiting can change the resulting balance. All these changes act in memory and do not rewrite Corpus C sources.
- No automatic permanent archive: Sonic Memory and generated session files are temporary unless you separately arrange to record the performance.
- Offline self-tests are not a hardware test: confirm input routing, phrase thresholds, actual Praat rendering, monitoring and cleanup on the intended performance machine.
Practical recommendation: start with a short sound-check; establish a reliable balance between quiet musical gestures and background noise. Once the detector behaves well, explore memory weights, influence depth, spatial density and background layering one control at a time.