General Utilities

asmd.utils.f0_to_midi_pitch(f0)[source]

Return a midi pitch (in 0-127) given a frequency value in Hz

asmd.utils.frame2time(frame: int, hop_size=3072, win_len=4096) → float[source]

Takes frame index (int) and returns the corresponding central sample The output will use the same unity of measure as hop_size and win_len (e.g. samples or seconds). Indices start from 0.

Returns a float!

asmd.utils.mat2midipath(mat, path)[source]

Writes a midi file from a mat like asmd:

pitch, start (sec), end (sec), velocity

If mat is empty, just do nothing.

asmd.utils.mat_stretch(mat, target)[source]

Changes times of mat in-place so that it has the same average BPM and initial time as target.

Returns mat changed in-place.

asmd.utils.midi_pitch_to_f0(midi_pitch)[source]

Return a frequency given a midi pitch (in 0-127)

asmd.utils.midipath2mat(path)[source]

Open a midi file with one instrument track and construct a mat like asmd:

pitch, start (sec), end (sec), velocity

Rows are sorted by onset, pitch and offset (in this order)

asmd.utils.nframes(dur, hop_size=3072, win_len=4096) → float[source]

Compute the numbero of frames given a total duration, the hop size and window length. Output unitiy of measure will be the same as the inputs unity of measure (e.g. samples or seconds).

N.B. This returns a float!

asmd.utils.open_audio(audio_fn: Union[str, pathlib.Path]) → Tuple[numpy.ndarray, int][source]

Open the audio file in audio_fn and returns a numpy array containing it, one row for each channel (only Mono supported for now) and the orginal sample_rate

asmd.utils.time2frame(time, hop_size=3072, win_len=4096) → int[source]

Takes a time position and outputs the best frame representing it. The input must use the same unity of measure for time, hop_size, and win_len (e.g. samples or seconds). Indices start from 0.

Returns and int!

Utilities for statistical analysis