Sound as Form

Sing a gesture. Shape a synthetic composition. Read its form. A native Praat instrument that turns one vocal performance into four continuously mixed synthesis identities, gesture-derived spatial motion and an electroacoustic graphic listening score.

Author: Shai CohenAffiliation: Department of Music, Bar-Ilan University, IsraelCategory: Generative & SynthesisLicense: MIT LicenseRepo: Praat AudioTools
Contents:

What this does

Sound as Form is a voice-controlled synthesis instrument, not a voice effect. You sing a single phrase into a microphone; Praat extracts the phrase's pitch movement, intensity, resonance, articulation and spectral character. The script then synthesizes four new sounds, mixes their contributions continuously through a gesture-controlled vector and organizes them in stereo, four-channel or eight-channel space.

The original recording is a source of control information only. Its recorded samples do not become part of the finished music. What the output retains is the shape of the performance: for example, an upward glide, a dynamic swell, a sustained vowel, a sequence of articulations or a breathy ending.

When Show_graphic_score is enabled, the script also draws a Spectromorphological Listening Score in the Praat Demo window. Its notation combines tonal ribbons, resonant ellipses, pluck strokes, noise textures and spatial trajectories, all derived from actual synthesis events and control data rather than decorative animation.

Compositional idea: the performer does not choose a sound by pressing a synthesizer key. The performed voice becomes a moving score that simultaneously shapes pitch, timbre, density, dynamics and spatial form. The four synthesis methods supply the sound; the voice supplies its morphology.

Key features:

Quick start

  1. Connect a microphone and confirm that Praat can record from it. In the Praat Objects window, launch Sound_as_Form.praat from your AudioTools installation. You do not need to select a Sound: ordinary operation records a new phrase.
  2. Keep the initial settings for a first trial: 6 seconds, 44,100 Hz, Stereo (2), full pitch following and full envelope influence.
  3. Leave Show_graphic_score enabled to generate the listening score, or untick it if you only want the synthesized audio.
  4. Confirm the settings. At the Sound as Form – ready prompt, choose Record and sing one phrase. The recording runs for the selected fixed duration; the script does not listen continuously.
  5. Allow Praat to analyse the gesture and render the four synthesis engines, their evolving vector mix and the output channels.
  6. The result appears as a new Sound in Praat Objects. The script opens the Demo score if requested and then calls Play on the finished Sound.
  7. Keep working with the output in Praat. Save or export it manually only if you want to preserve it outside the current Praat session.
First vocal experiment: sing a clear sustained vowel, move gradually upward in pitch, then end with a diminuendo. Notice how the melodic contour follows the voice while the balance of the four synthetic timbres and their spatial placements can evolve independently. For a second test, sing several separated notes or use a breathy ending; the notation and sound should respond differently.
Recording is not automatic until you confirm: the initial settings dialog is followed by a separate Record / Cancel prompt. If your microphone is muted or the captured sound is extremely weak, the script stops rather than creating a misleading result.

Core concept: the voice becomes the form

ONE VOCAL PERFORMANCE (microphone) | Praat acoustic analysis | F0 / envelope / articulation / resonance / spectral character | shared 10 ms control grid | +----------+----------+----------+ | | | | FM Formant Modal Stochastic | | | | +----------+----------+----------+ | Gesture-driven vector mixer X(t), Y(t), four weights | Gesture-driven spatial renderer 2 / 4 / 8 channels | Final performance envelope + common peak scaling | ONE NEW PRAAT SOUND OBJECT | Optional listening score + Play

The process is offline and phrase-based. The input recording is completed before synthesis begins; this is not a low-latency voice-to-sound live instrument or a continuous microphone effect. The control information is sampled on a common 10 ms timeline, with the resulting sound synthesized at the chosen audio sampling rate.

The four sound generators are implemented inside the same Praat script. They are not launched as four external AudioTools scripts and do not require Python. The microphone waveform is analysed but never mixed as a dry component into the output.

One gesture, several layers of meaning: F0 can shape the tones; vocal articulation can excite resonances and particles; spectral characteristics can move the timbral vector; and melodic movement, dynamics and articulation can organize the synthetic voices around a multichannel listening field.

How the voice is analysed

The script calculates several complementary descriptors. These describe what changes during the performance, not merely a single average pitch or loudness value. The trajectories are aligned on one timing grid so that events in the voice can affect multiple synthesis and spatial processes coherently.

Vocal informationHow it is used
Fundamental frequency (F0)A pitch trajectory drives pitched synthesis. A two-pass pitch analysis, octave-jump correction and smoothing help preserve melodic movement, including glissando and vibrato.
Amplitude envelopeA fast attack/longer release follower extracts dynamics and silences. Its normalized shape can control the final synthetic amplitude.
Spectral brightness and variabilityCentroid, spectral-band changes and local variability affect FM complexity, stochastic frequency spread, modal character and vector motion. Brightness is considered relative to tracked F0.
Vocal formantsValid, smoothed estimates of the first three formants steer the artificial resonant voice. Invalid estimates are not allowed to create abrupt jumps.
Voicing and harmonicityHelp distinguish sustained pitched singing from breathy or noisy regions, and influence periodic/noisy excitation and the vector's vertical coordinate.
Onsets, novelty and densityIdentify articulations, trigger modal excitations and influence stochastic event rate and spatial separation.
Melodic movement and vibratoContribute to the spatial rotation of the synthetic sound field without simply copying the timbral-vector motion.

When pitch is uncertain: unvoiced and noisy portions do not receive an invented sung melody. The synthesis engine uses a slowly smoothed centroid-derived tonal reference where necessary; the listening score distinguishes reliable pitched regions from inferred or bridged pitch. Long or brief unvoiced gaps may be held or interpolated for control continuity.

Why normalization matters: timbral and dynamic descriptors are normalized within the recorded performance. This lets a relatively restrained singer still produce meaningful vector changes instead of forcing every performance into one fixed timbral corner.

Four native synthesis engines

Each engine generates new audio from the same vocal analysis, but uses a different synthesis method. The vector mixer then controls how strongly each contributes throughout the composition. All four operate on the same duration and time base.

A · FM synthesis

A phase-continuous frequency-modulated sound follows the controlled pitch trajectory. Relative spectral brightness and vocal dynamics influence modulation depth, while spectral variability changes the balance between harmonic and inharmonic modulation. It tends toward sustained, moving pitched textures.

B · Formant synthesis

A newly generated glottal-type excitation, blended with synthesized noise according to voicing, passes through a moving FormantGrid. Resonances are deliberately shifted and narrowed to create an artificial vocal-like instrument rather than replay the recorded voice.

C · Modal / Karplus–Strong

Vocal attacks trigger resonant, string-like excitations. A changing-delay Karplus–Strong component is combined with two inharmonic modal resonators. Sustained vowels can also keep the system sounding through gentle repeated excitation and continuous low-level noise.

D · Stochastic synthesis

Ten drifting oscillators, short synthesized sine particles and a noise field generate changing clouds and textures. Articulation influences particle density, spectral brightness affects frequency distribution and voicing influences tonal-versus-noisy balance. No grains from the microphone recording are reused.

A comparison worth hearing: sing one long vowel, then several strongly articulated syllables. The Modal engine can emphasize the attacks, while the stochastic particles respond to gesture density; FM and Formant contribute different kinds of pitched continuity. They are not four presets of one oscillator.

Gesture-driven vector synthesis

Sound as Form uses one vector mode only: Gesture-Driven Vector. There is no manual XY joystick, drawn trajectory or preset vector sequence. The singing controls a point (X(t), Y(t)) that moves continuously among the four synthesis identities.

Y = 1 FM FORMANT (X=0) (X=1) +----------------+ | | | VOICE-DRIVEN | | X(t),Y(t) | | | +----------------+ MODAL STOCHASTIC Y = 0

X primarily reflects pitch-corrected spectral brightness and movement of the second formant. Y combines voicing, continuity, novelty and pitch stability. Descriptors are robustly normalized per performance and smoothed before mixing; silent regions hold the most recent active vector rather than jumping to an arbitrary position.

Synthesis cornerContribution weight
FM, upper-left(1 − X) × Y
Formant, upper-rightX × Y
Modal, lower-left(1 − X) × (1 − Y)
Stochastic, lower-rightX × (1 − Y)

These four nonnegative weights always add up to one. The engines are first brought to comparable working RMS levels, then mixed with gains related to the square roots of their weights, so the weights function as intended energy shares. The result is a continuously changing combination of sound generators—not a series of hard switches.

Vector_motion_depth determines how far the singing can move away from the performance's automatically estimated reference vector. At 0% the reference mix is held; near 100% the measured trajectory moves naturally, and values above 100% can exaggerate the movement subject to bounded coordinates.

Listen for transformation, not alternation: a phrase can gradually move from sustained FM/formant qualities toward modal and stochastic activity as its articulation and spectrum change. The four methods are combined continuously even when one dominates locally.

Gesture-driven spatial composition

The spatial engine is not simply a final pan applied to a mono synthesis mix. Each of the four synthesis engines has its own spatial position, and each output channel receives a changing combination of the engines.

Vocal featureSpatial tendency
Melodic positionMoves the shared rotation of the four-engine field. A rise and a fall can turn the field in opposite directions; the mapping is relative to the performance's median pitch.
Vibrato residualAdds subtle spatial oscillation after the slower trajectory is smoothed.
Articulation density and spectral variabilityChange the angular separation of the four engines. Articulated and variable phrases can create more widely separated identities.
Dynamic envelopeControls spatial spread: stronger passages can expand the diffuse distribution and quieter passages can concentrate it.

The four engines occupy distinct reference directions around a moving centre. Their actual positions combine that reference layout with a shared gesture-derived rotation and a changing separation. The spatial motion is related to, but distinct from, the sonic XY vector: a change of timbre does not automatically mean an identical move in space.

For multichannel rings, speaker contributions follow a circularly distributed, smooth gain function rather than hard channel switching. The gains for a given engine are normalized in squared sum, helping preserve its energy through spatial movement. Stereo uses an equal-power pan with controllable spread.

Stereo, Quad and Octophonic output

The Output_channels setting chooses one finished Praat Sound with exactly 2, 4 or 8 channels. A multichannel result is not an export file or a collection of separate mono objects; it is an ordinary Sound object that the user can subsequently inspect, transform or export.

ModeChannel order / intended speaker layout
Stereo (2)1: Left; 2: Right. A circular azimuth is mapped to a left–right position rather than physical rear speaker positions.
Quadraphonic (4)1: Front-left (−45°); 2: Front-right (+45°); 3: Rear-right (+135°); 4: Rear-left (−135°).
Octophonic (8)1: −22.5°; 2: +22.5°; 3: +67.5°; 4: +112.5°; 5: +157.5°; 6: −157.5°; 7: −112.5°; 8: −67.5°.

Angles are measured clockwise from the front of the listening field, with the listener conceptually at the centre. The specified channel order is important if you later route the Sound to a physical loudspeaker array in another application.

Output versus audition: the script creates all selected channels in Praat and calls Play at the end. The capabilities and routing of the current audio device determine what can be heard directly. The finished Sound remains available for your own multichannel workflow regardless of the playback configuration.

Spectromorphological Listening Score

The optional Demo-window display is a graphic listening score of the resulting electroacoustic work. Its visual language is inspired by graphic notation and spectromorphological thinking: the important objects are moving sonic gestures, resonances, attacks, textures and spatial relationships—not staves, note names or conventional audio-editor waveforms.

The score combines a broad main time–frequency field with a smaller spatial notation strip beneath it. Both read from left to right. The main field's vertical axis is logarithmic frequency, from approximately 60 Hz to 8 kHz (or the available upper frequency limit). Light grid lines give temporal and frequency references without becoming the principal image.

Read horizontally

Time moves from the beginning of the vocal gesture to its end. Left-to-right continuities show sustained processes; discrete marks identify events such as modal excitations and generated particles.

Read vertically

Higher positions correspond to higher frequency regions on a logarithmic axis. Pitch-following ribbons, formant resonances, modal frequencies and particle positions share a common frequency reference.

Read colour as identity

Each synthesis family retains one consistent colour. Mixing happens visually through the changing prominence and overlap of different kinds of marks, not by assigning new colours to loudness or space.

Read density and opacity as contribution

The prominence of graphic material is influenced by each engine's actual sound level, its vector weight and the final performance envelope. Crescendos and pauses therefore affect how strongly the notation appears.

The score is constructed using measured envelope-like activity from the actual synthesized engines; the spatial strip additionally uses energy measured in the completed multichannel result. This makes it more informative than a decorative animation.

A graphic score, not a literal spectrogram: some symbols describe control relationships and synthesis events rather than measured spectral peaks. For example, an FM strand illustrates modulation-related spectral activity; it should not be interpreted as an exact Fourier analysis of every audible sideband. Interpret the drawing as an analytical listening score, not a complete reconstruction of the audio.

How to read the four graphic vocabularies

The drawing uses four distinct visual families. Unlike a conventional timeline with one separate lane per algorithm, they can overlap in the same score space as the vector mixer combines the sounds.

Family and colourWhat its graphic symbols meanWhat to listen for
FM · violetContinuous ribbons follow the controlled pitch trajectory. Additional thin strands indicate modulation complexity; a dashed strand indicates an inharmonic modulation component. A dotted trace distinguishes bridged or inferred pitch from confidently voiced melody.Glissandi, sustained pitched material and changing harmonic/inharmonic colour.
Formant · amberNested ellipses occupy the synthetic formant-frequency regions; their vertical extent is related to resonance bandwidth. A connected line follows the second-formant region, giving a vowel-like continuity.Moving vocal-type resonances and transitions between artificial vowel colours.
Modal · tealVertical strokes identify actual detected attacks and generated re-plucks. Tapered lines follow the string frequency and two inharmonic modal frequencies, suggesting decays. A faint dotted trace represents sustained excitation.Plucked or struck events, ringing modes, sustained string-like resonance.
Stochastic · greyDots correspond to the generated particles at their creation times and frequencies. Fine hatching represents the oscillator-bank range; regularly arranged stipple represents the changing noise contribution.Grains, swarms of oscillators, breath-like noise and diffuse textures.

Meaning of graphic intensity

Thicker or more visible marks generally indicate a stronger engine contribution at that moment, taking into account its synthesized level, vector weight and the final envelope. A quiet passage may contain the same synthesis family as a loud passage but show it much more faintly. Where an engine is nearly inaudible, its marks can disappear entirely.

Events versus textures: a teal attack stroke corresponds to an actual excitation event; a grey particle dot corresponds to a synthesized grain. In contrast, the noise stipple is a controlled graphic texture that summarizes noise presence rather than depicting every individual noise sample.

One example of reading a phrase

Imagine singing a rising vowel with a gradual crescendo and ending on a breathy consonant. The pitch-following violet ribbon may rise across the score, amber resonance forms may shift with the vowel, teal excitation strokes may punctuate new articulations and the grey texture may become more apparent as voicing weakens. The exact balance depends on the acoustic analysis; the example describes how to interpret the score, not a guaranteed graphic pattern.

Why the score belongs to the composition: a continuous line is not just a measurement curve; an ellipse identifies resonant behaviour; an attack stroke marks excitation; and a cloud communicates synthetic density. Together they form a readable visual account of an electroacoustic phrase.

Reading the spatial notation strip

The narrow strip below the main score describes the spatial organization of the same phrase. It is not an unrelated XY display; it shares the score's horizontal time axis and is informed by both the gesture-derived spatial controls and the measured output-channel energy.

Visual elementInterpretation
Four coloured trajectoriesThe actual angular positions of the FM, Formant, Modal and Stochastic engines, following the same colour key used in the main score.
Dashed dark trajectoryAn overall direction estimated from the energy distribution in the rendered multichannel audio. It is not the position of any one engine.
Grey surrounding bandA summary of spatial diffuseness or lack of directional concentration in the rendered channel energies; a broader band suggests a less focused spatial image.
Speaker referencesIn Quad and Octophonic modes, speaker-number guide lines refer to the script's documented circular channel order.
Stereo labelsIn Stereo mode, the strip becomes a left–centre–right scale rather than a full-circle azimuth plot.

Important distinction: the coloured lines represent where the internal engines are directed. The dashed line and grey band are derived from the finished multichannel mixture. These can differ because the four engines contribute different amounts of energy at any moment.

Interpreting diffuse sound: a strongly diffuse or nearly symmetrical multichannel field does not have a perceptually unique dominant direction. In such cases, read the grey diffuseness indication as more informative than the precise position of the dashed direction line.

Channel and angular values in the strip are references for a multichannel sound object; the score is not a substitute for testing a finished work in a physical loudspeaker installation.

Main Praat interface and controls

The user dialog is intentionally compact. It does not ask you to select one of the four engines or to move a vector manually. The voice always drives the synthesis vector and spatial behavior.

ControlDefaultWhat it changes
Recording_duration_s6 sFixed duration of the single microphone recording. Accepted range: 0.5–120 seconds.
Sampling_frequency44,100 HzSelect 32,000, 44,100 or 48,000 Hz for capture and synthesis.
Output_channelsStereo (2)Create one Sound in Stereo (2), Quadraphonic (4) or Octophonic (8).
Pitch_following_strength100%How closely the controlled pitch follows the performed melodic movement. Lower settings move the pitched synthesis toward a stable reference pitch.
Envelope_influence100%How strongly the original performance envelope shapes the final synthetic audio. At zero the final gate/envelope influence is removed, though individual engines still respond to performance descriptors.
Vector_motion_depth100%How far the analysis-derived vector can travel from its own reference position. Zero holds a fixed automatically determined blend.
Vector_smoothing_ms120 msControls the temporal smoothness of the timbral-vector motion. Higher values give slower transitions between synthesis identities.
Spatial_motion_depth70%Controls the amount of gesture-derived field rotation and change of engine separation.
Spatial_spread60%Controls how broadly the engines are distributed to the output channels, with a contribution from vocal dynamics.
Spatial_smoothing_ms250 msSmooths spatial rotation, separation and spread. A longer time produces less abrupt motion.
Peak_ceiling0.99Target sample-peak magnitude for common final scaling of the complete multichannel Sound.
Show_graphic_scoreOnDraw the integrated listening score in the Demo window after synthesis. Turning it off leaves sound synthesis and output unchanged.
No presets: there is no sound-preset selector, no separate engine-selection menu, and no manual vector drawing. This is deliberate: changing how you sing is the primary way to change the synthetic composition.

Playback and graphic-score display

After the multichannel Sound has been rendered and all intermediate objects have been removed, the script selects the result and calls the existing Play command. The completed Sound is therefore auditioned automatically; a separate playback setting is not needed.

When Show_graphic_score is on, the Demo-window listening score is drawn after the temporary-object cleanup and before the final Play call. The score remains visible without a blocking event loop, while the resulting Sound stays selected in Praat Objects.

SettingBehavior
Show_graphic_score: OnGenerate the score from internal control and sound measurements, clean up intermediate objects, draw the Demo score and play the new Sound.
Show_graphic_score: OffGenerate, clean up and play the new Sound without drawing the graphic score.

The Demo image is a temporary, on-screen listening aid. The script does not automatically export it as an image or create a graphics file. It does not add any score-specific objects to the Praat Objects list.

Practical listening comparison: the same settings and performed phrase drive both the audio result and its score. Use the visual vocabulary to identify which families are active, then listen for their changing contribution and spatial movement.

Compositional explorations

StudyHow to explore it
A · Singing becomes synthesisSing one relatively steady vowel with a clearly defined F0 and smooth dynamics. Use Stereo and default settings. Follow the violet ribbon and the amber resonance shapes as you listen to the synthetic result.
B · Glissando as formSing a slow continuous glide. Compare full pitch following with a lower value. Listen for differences in synthetic pitch movement and examine how the ribbon and spatial motion respond.
C · Articulation and resonanceSing a phrase of separated syllables, with clear beginnings and internal pauses. Look for teal excitation strokes and resulting decay trails, as well as changes in grey particle density.
D · Vector as timbral dramaturgyPerform a phrase that begins harmonically and becomes increasingly breathy. Compare a normal vector depth with a reduced depth on comparable performances. Listen for how much the four synthetic identities move in and out of prominence.
E · Spatial counterpointCreate a Quad or Octophonic result and examine the coloured trajectories in the spatial strip. Compare spatial motion depth near zero with a higher value, leaving the synthetic engine balance unchanged.
F · Reading the electronic scorePerform several contrasting short phrases separately. For each finished Sound, interpret its dominant graphic marks before listening again. Compare what the score suggests with the details you hear.

Listening-score study · One gesture, four identities

Sing a phrase that begins on a sustained pitched vowel, introduces two or three articulate attacks, then fades into a breathy ending. The resulting graphic score can show continuity, resonant motion, excitation strokes and distributed noise texture in one common temporal field. Observe which layers actually appear and how their thickness and spatial trajectories relate to what you hear. Repeat the gesture with a different articulation or dynamic shape instead of choosing a synthesis preset.

Output, object management and privacy

On a successful run the script creates exactly one new multichannel Sound object. The names follow the chosen output arrangement; if a name already exists, a collision-safe numeric suffix is added.

Output configurationResult in Praat Objects
StereoSound_as_Form_Stereo
QuadraphonicSound_as_Form_Quad
OctophonicSound_as_Form_8ch

Every original user object that was present in Praat before the script is intended to remain untouched. The newly recorded microphone Sound and all temporary analysis, synthesis and spatial-control objects are tracked and removed before the script completes. The listener score uses internal arrays and the Demo display; no persistent score objects or exported graphics are created.

Nothing is saved automatically. The script does not write WAV, audio stems, images, text, logs, temporary sessions or project files to disk. The finished Sound exists in the current Praat session until you explicitly save/export it or close Praat.
Failure limits: anticipated failures trigger best-effort cleanup and a clear message. An unexpected Praat execution error or crash may interrupt cleanup; no script can guarantee removal of in-memory objects after a forced termination.

Requirements and installation

ComponentRequirement
PraatPraat 6.4 or newer, including native filtered-autocorrelation Pitch analysis and microphone recording commands.
Audio inputA connected, accessible microphone or audio input selected through the operating system/Praat recording environment.
Praat AudioToolsPlace Sound_as_Form.praat within the plugin's Generative & Synthesis collection, or run it as a standalone Praat script.
Python and external packagesNot required. Analysis, all four synthesis methods, multichannel rendering and the Demo score are implemented natively in Praat.
Disk and networkNo network service, external corpus or working directory required for sound generation. The script intentionally does not write files.

Keep the script in the library's normal synthesis location. It does not depend on calling four separate synthesis scripts, nor does it need a Python helper beside it.

plugin_AudioTools/
  Generative & Synthesis/
    Sound_as_Form.praat

The recording begins only after the settings dialog and the subsequent Record confirmation. Praat's microphone and sound-device permissions must be configured on the target computer.

Limitations and interpretation

Practical troubleshooting

ObservationWhat to check
Recording fails or no input arrivesVerify microphone permissions and the active audio input. Choose Record at the second prompt, not Cancel.
"Silent or extremely weak" messageSing closer to the microphone or adjust input gain. The script deliberately rejects very low-level recordings.
Output pitch seems unrelated to the voiceUse a clear voiced vowel in the microphone. When reliable F0 is unavailable, a spectral-centroid-derived tonal reference is used instead.
The timbre changes very littleTry varying vowels, brightness and articulation. Check that Vector_motion_depth is above zero and Vector_smoothing_ms is not excessively high.
The sound seems too spatially stationaryChoose Quad or Octophonic output, increase Spatial_motion_depth, and perform a wider melodic contour. Inspect the spatial strip to distinguish the individual engine trajectories from the rendered direction.
The score appears crowdedUse a shorter phrase or listen for individual motifs in the notation rather than interpreting every mark as a separate musical note. The display reduces drawing density for long recordings.
No score appearsVerify that Show_graphic_score is checked. The score appears only after the synthesis has finished.
Direct playback is incomplete on 4/8 channelsThe object can still contain all requested channels. Inspect the Sound in Praat or use an appropriate multichannel playback/export environment.

Practical recommendation: begin with a six-second stereo phrase and leave the graphic score enabled. Once pitch tracking and the relationship between sung morphology and synthesized sound are clear, explore longer forms and Quad or Octophonic output. Change one musical parameter at a time to hear its contribution.