Skip to main content

ptracks2buf

ptracks2buf(
@frequencies ? ## llll (required)
@magnitudes ? ## llll (required)
@phases ? ## llll (required)
@framesize 2048
@hopsize 512
@ampunit 0
@antimeunit 1
@angleunit 0
@frequnit 0
) -> llll

Converts a partial track analysis, which can be generated via the buf2ptracks function, into a buffer.

warning

buf2ptracks is computationally expensive and can take a long time.


Arguments

  • @frequencies ? [llll]: frequency bins. (required)
  • @magnitudes ? [llll]: magnitude bins. (required)
  • @phases ? [llll]: phases bins. (required)
  • @framesize [int]: frame size. (default: 2048).
  • @hopsize [int]: hop size. (default: 512).
  • @ampunit [int]: amplitude unit. (default: 0).
    • 0: linear
    • 1: decibels
  • @antimeunit [int]: analysis time unit. (default: 1).
    • 0: milliseconds
    • 1: samples
    • 2: duration ratio
    • 3: milliseconds difference
    • 4: samples difference
  • @angleunit [int]: angle unit. (default: 0).
    • 0: radians
    • 1: degrees
    • 2: turns
  • @frequnit [int]: unit for frequency components in @func. (default: 0).
    • 0: Hertz
    • 1: BPM
    • 2: midicents
    • 3: MIDI

Output

buffer [llll]


Usage

$buffer = importaudio('poem.wav').setkey('duration', 1500); ## input buffer
$ptracks = $buffer.buf2ptracks(@magnitudethreshold 0.001); ## extract partial tracks
## unpack frequency, magnitude, and phase tracks
$freqs = $ptracks.getkey('frequencies');
$mags = $ptracks.getkey('magnitudes');
$phases = $ptracks.getkey('phases');
## resynthesize to buffer
$resynth = ptracks2buf(
@frequencies $freqs
@magnitudes $mags
@phases $phases
);
## transcribe and render
$resynth.transcribe();
render(@play 1)