Procedures

ProcedureLocationProcedure TypeDescription
add_bell signals Subroutine

Adds a Risset bell sound on the track at t1. Jean-Claude Risset, An Introductory Catalogue Of Computer Synthesized Sounds, Bell Telephone Laboratories Murray Hill, New Jersey, 1969.

add_broken_chord music Subroutine

Writes a broken chord using an array containing the intervals (see the music_common module). It uses plucked strings (Karplus-Strong). For the moment, each note has the same duration. https://en.wikipedia.org/wiki/Arpeggio

add_chord music Subroutine

Writes a chord using an array containing the intervals (see the music_common module)

add_geiger_ping radioactivity Subroutine

Adds the signal of a radioactive decay heard with a Geiger counter.

add_karplus_strong signals Subroutine

Karplus and Strong algorithm (1983), for plucked-string http://crypto.stanford.edu/~blynn/sound/karplusstrong.html https://en.wikipedia.org/wiki/Karplus%E2%80%93Strong_string_synthesis

add_karplus_strong_drum signals Subroutine

Karplus and Strong (1983) algorithm for obtaining a percussion sound. Typically, P is taken to be between 150 and 1000. Caution: this algorithm overwrites what may have existed on the track at the chosen location. You may also want to modify the b parameter to make some weird sounds, somewhere between percussion and guitar... http://crypto.stanford.edu/~blynn/sound/karplusstrong.html https://en.wikipedia.org/wiki/Karplus%E2%80%93Strong_string_synthesis

add_karplus_strong_drum_stretched signals Subroutine

Karplus and Strong (1983) stretched algorithm for obtaining a percussion sound.

add_karplus_strong_stretched signals Subroutine

Karplus and Strong stretched algorithm (1983), for plucked-string.

add_misc_signal misc_sounds Subroutine

Add on the track a signal choosen by its number:

add_morse_code morse_code Subroutine

Adds on the specified track a Morse code translation of the string, starting at time t1. The frequency f must correspond to a high tone, for example 880 Hz.

add_noise signals Subroutine

Add white noise on the track:

add_note music Subroutine

A note of fundamental frequency f with harmonics, based on sine waves. https://en.wikipedia.org/wiki/Harmonic

add_sawtooth_wave signals Subroutine

Adds on the track a sawtooth wave with an ADSR envelope:

add_sine_wave signals Subroutine

Adds on the track a sine wave with an ADSR envelope:

add_square_wave signals Subroutine

Adds on the track a square wave with an ADSR envelope:

add_triangle_wave signals Subroutine

Adds on the track a triangle wave with an ADSR envelope:

add_weierstrass signals Subroutine

Add a fractal signal on the track with an envelope:

ADSR_level envelopes Function

Returns the level in [0, 1] of the ADSR envelope at time t1 < t < t2

ADSR_new envelopes Subroutine

Create a new ADSR envelope object.

amplitude shepard_risset_glissando Function

Envelope of the glissando. A gaussian, plus linear sections at the extremities, to reach the 0 level.

apply_autopan_effect audio_effects Subroutine

Make the sound move from one channel to the other one at a frequency f and with an amplitude AmpLFO in [0 ; 1].

apply_delay_effect audio_effects Subroutine

Add the sound from "delay" seconds before, and multiply by Amp<1 for dampening.

apply_dynamic_effect audio_effects Subroutine

A basic dynamic effect with hard knee, and only two parameters : the threshold > 0 expressed linearly (not in dB) and the ratio. It is a compressor if the ratio is > 1. It can also be used as a limiter with a ratio >= 10. Or an upward expander with a ratio < 1. By default, the ratio is applied above the threshold, but the "below" optional parameter can be used to reverse it and obtain: - an upward compressor with ratio < 1 - a (downward) expander with ratio > 1. There are no attack and release parameters at this time. https://en.wikipedia.org/wiki/Dynamic_range_compression

apply_fade_in envelopes Subroutine

A linear fade in, from relative level 0 to 1:

apply_fade_out envelopes Subroutine

A linear fade out, from relative level 1 to 0:

apply_fuzz_effect audio_effects Subroutine

Apply distorsion with hard clipping https://en.wikipedia.org/wiki/Distortion_(music)

apply_reverse_effect audio_effects Subroutine

Copy the samples at the same t1 but in reverse order:

apply_tremolo_effect audio_effects Subroutine

A sinusoidal modulation of the amplitude of a signal (tremolo) : f : tremolo frequency (typically a few Hz) AmpLFO : tremolo amplitude in [0 ; 1] https://en.wikipedia.org/wiki/Vibrato#Vibrato_and_tremolo/

auto_finalize tape_recorder_class Subroutine

An automatic finalizer, by security.

clear_tracks tape_recorder_class Subroutine

Erase all tracks on all the channels of the tape.

close_WAV_file wav_file_class Subroutine

Must be called at the end. It normalizes the channels, writes them in the WAV file and closes it. It also deallocate the tape arrays.

copy_section tape_recorder_class Subroutine

Copy section t1...t2 at t3, either on the same track or another one. The content already present at t3 is overwritten. The code suppose that t1 < t2 < t3.

create_WAV_file wav_file_class Subroutine

Create a WAV file with a header:

dB_to_linear acoustics Function

This function converts dB to an amplitude. At 0 dB, our amplitude reference value is 1. -6 dB is approximately 1/2 (~0.50118...). -20 dB is 1/10. https://en.wikipedia.org/wiki/Decibel

finalize tape_recorder_class Subroutine

Called by the close_WAV_file() method.

fit_exp envelopes Function

Returns an exponential interpolation y(x) between (x1,y1) and (x2,y2). Useful for computing an exponentially decreasing enveloppe.

fr music Function

Returns the frequency of the note. The note name is composed of two or three characters, for example "A4", "A#4", "Ab4", where the final character is the octave.

get_name wav_file_class Function

Returns the name of the WAV file:

linear1 shepard_risset_glissando Function

Returns an amplitude rising from 0 to 1, from f1 to f2. And 0 outside.

linear2 shepard_risset_glissando Function

Returns an amplitude falling from 1 to 0, from f1 to f2. And 0 outside.

linear_to_dB acoustics Function

This function converts an amplitude (>=0) to dB. https://en.wikipedia.org/wiki/Decibel

mix_tracks tape_recorder_class Subroutine

Tracks 1 to tracks-1 are mixed on track 0.

new tape_recorder_class Subroutine

Create a tape object with N tracks. The duration is expressed in seconds.

print_copyright sonify Subroutine
print_options sonify Subroutine
read_argument sonify Function

Returns the argument number i of the command line.

sonify_from_array sonification Subroutine

Convert an array of reals to a WAV file, using RATE samples per second (44,100 by default). - If your signal is not centered around zero, you can use the autocenter option. - Downsampling allows to take only each Mth sample and can be used to make a low tone higher. - The repetitions argument allows to repeat the signal N times, which can be interesting if it is too short.

sonify_from_file sonification Subroutine

Read a text file containing only one column of reals, without header, and convert it to a WAV file. If your file contains several fields (columns), you must extract the field to sonify. In Unix-like systems, it can be easily done, for example: $ cut -f 4 -d " " data.txt > column.txt The file should contain several 100,000 lines as the WAV will use generally 44,100 samples per second. - If your signal is not centered around zero, you can use the autocenter option. - Downsampling allows to take only each Mth sample and can be used to make a low tone higher. - The repetitions argument allows to repeat the signal N times, which can be interesting if it is too short.

string_to_morse morse_code Function

This function receives a string and returns its Morse code translation. The input string can contain only alphabetic characters in upper or lower case, digits 0..9 and spaces. All other characters will be considered as spaces. Characters inside words are separated by one space, and words by two spaces.

test_the_machine forsynth Subroutine

A WAV file contains 64, 32 and 16 bits data or metadata, so we need those kinds.

the_solution doppler_effect Function

We solve the Quadratic equation, but physically one and only one solution can exist: we know the sound was emitted before we hear it!>

weierstrass signals Function

https://en.wikipedia.org/wiki/Weierstrass_function

write_amplitude_envelope shepard_risset_glissando Subroutine

Useful for debugging and setting the envelope parameters:

write_header wav_file_class Subroutine

Creates the 44 bytes WAV header and prints some information:

write_normalized_data wav_file_class Subroutine

This method normalizes the sound amplitude on track 0, before saving the left and right channels in the WAV file.

call~~graph~~CallGraph proc~add_bell add_bell proc~fit_exp fit_exp proc~add_bell->proc~fit_exp proc~add_broken_chord add_broken_chord proc~add_karplus_strong add_karplus_strong proc~add_broken_chord->proc~add_karplus_strong proc~add_chord add_chord proc~add_note add_note proc~add_chord->proc~add_note proc~add_geiger_ping add_geiger_ping proc~add_karplus_strong_drum add_karplus_strong_drum proc~add_karplus_strong_drum_stretched add_karplus_strong_drum_stretched proc~add_karplus_strong_stretched add_karplus_strong_stretched proc~add_misc_signal add_misc_signal proc~add_morse_code add_morse_code proc~add_sine_wave add_sine_wave proc~add_morse_code->proc~add_sine_wave proc~add_noise add_noise proc~adsr_level ADSR_envelope%ADSR_level proc~add_noise->proc~adsr_level proc~add_note->proc~add_sine_wave proc~add_sawtooth_wave add_sawtooth_wave proc~add_sawtooth_wave->proc~adsr_level proc~add_sine_wave->proc~adsr_level proc~add_square_wave add_square_wave proc~add_square_wave->proc~adsr_level proc~add_triangle_wave add_triangle_wave proc~add_triangle_wave->proc~adsr_level proc~add_weierstrass add_weierstrass proc~add_weierstrass->proc~adsr_level proc~weierstrass weierstrass proc~add_weierstrass->proc~weierstrass proc~adsr_new ADSR_envelope%ADSR_new proc~amplitude amplitude proc~linear1 linear1 proc~amplitude->proc~linear1 proc~linear2 linear2 proc~amplitude->proc~linear2 proc~apply_autopan_effect apply_autopan_effect proc~apply_delay_effect apply_delay_effect proc~apply_dynamic_effect apply_dynamic_effect proc~db_to_linear dB_to_linear proc~apply_dynamic_effect->proc~db_to_linear proc~linear_to_db linear_to_dB proc~apply_dynamic_effect->proc~linear_to_db proc~apply_fade_in apply_fade_in proc~apply_fade_out apply_fade_out proc~apply_fuzz_effect apply_fuzz_effect proc~apply_reverse_effect apply_reverse_effect proc~apply_tremolo_effect apply_tremolo_effect proc~auto_finalize auto_finalize proc~clear_tracks tape_recorder%clear_tracks proc~close_wav_file WAV_file%close_WAV_file proc~finalize tape_recorder%finalize proc~close_wav_file->proc~finalize proc~write_normalized_data WAV_file%write_normalized_data proc~close_wav_file->proc~write_normalized_data proc~copy_section tape_recorder%copy_section proc~create_wav_file WAV_file%create_WAV_file proc~new tape_recorder%new proc~create_wav_file->proc~new proc~write_header WAV_file%write_header proc~create_wav_file->proc~write_header proc~fr fr proc~get_name WAV_file%get_name proc~mix_tracks tape_recorder%mix_tracks proc~new->proc~clear_tracks proc~print_copyright print_copyright proc~print_options print_options proc~read_argument read_argument proc~sonify_from_array sonify_from_array proc~sonify_from_array->proc~close_wav_file proc~sonify_from_array->proc~create_wav_file proc~sonify_from_array->proc~get_name proc~sonify_from_array->proc~mix_tracks proc~sonify_from_file sonify_from_file proc~sonify_from_file->proc~sonify_from_array proc~string_to_morse string_to_morse proc~test_the_machine test_the_machine proc~the_solution the_solution proc~write_amplitude_envelope write_amplitude_envelope proc~write_amplitude_envelope->proc~amplitude program~all_signals all_signals program~all_signals->proc~add_bell program~all_signals->proc~add_karplus_strong program~all_signals->proc~add_karplus_strong_stretched program~all_signals->proc~add_noise program~all_signals->proc~add_sawtooth_wave program~all_signals->proc~add_sine_wave program~all_signals->proc~add_square_wave program~all_signals->proc~add_triangle_wave program~all_signals->proc~add_weierstrass program~all_signals->proc~adsr_new program~all_signals->proc~close_wav_file program~all_signals->proc~create_wav_file program~all_signals->proc~fr program~all_signals->proc~get_name program~all_signals->proc~mix_tracks program~arpeggios arpeggios program~arpeggios->proc~add_broken_chord program~arpeggios->proc~add_karplus_strong program~arpeggios->proc~apply_fade_out program~arpeggios->proc~close_wav_file program~arpeggios->proc~create_wav_file program~arpeggios->proc~fr program~arpeggios->proc~get_name program~arpeggios->proc~mix_tracks program~blues blues program~blues->proc~add_karplus_strong program~blues->proc~apply_tremolo_effect program~blues->proc~close_wav_file program~blues->proc~create_wav_file program~blues->proc~fr program~blues->proc~get_name program~blues->proc~mix_tracks program~chords_and_melody chords_and_melody program~chords_and_melody->proc~add_chord program~chords_and_melody->proc~add_karplus_strong program~chords_and_melody->proc~adsr_new program~chords_and_melody->proc~apply_delay_effect program~chords_and_melody->proc~close_wav_file program~chords_and_melody->proc~copy_section program~chords_and_melody->proc~create_wav_file program~chords_and_melody->proc~fr program~chords_and_melody->proc~get_name program~chords_and_melody->proc~mix_tracks program~demo_effects demo_effects program~demo_effects->proc~add_chord program~demo_effects->proc~adsr_new program~demo_effects->proc~apply_autopan_effect program~demo_effects->proc~apply_delay_effect program~demo_effects->proc~apply_dynamic_effect program~demo_effects->proc~apply_fuzz_effect program~demo_effects->proc~apply_tremolo_effect program~demo_effects->proc~close_wav_file program~demo_effects->proc~copy_section program~demo_effects->proc~create_wav_file program~demo_effects->proc~fr program~demo_effects->proc~get_name program~demo_effects->proc~mix_tracks program~doppler_effect doppler_effect program~doppler_effect->proc~close_wav_file program~doppler_effect->proc~create_wav_file program~doppler_effect->proc~get_name program~doppler_effect->proc~mix_tracks program~doppler_effect->proc~the_solution program~drone_music drone_music program~drone_music->proc~apply_fade_in program~drone_music->proc~apply_fade_out program~drone_music->proc~close_wav_file program~drone_music->proc~create_wav_file program~drone_music->proc~get_name program~drone_music->proc~mix_tracks program~drum_machine drum_machine program~drum_machine->proc~add_karplus_strong_drum program~drum_machine->proc~add_karplus_strong_drum_stretched program~drum_machine->proc~close_wav_file program~drum_machine->proc~create_wav_file program~drum_machine->proc~get_name program~drum_machine->proc~mix_tracks program~four_thirty_three four_thirty_three program~four_thirty_three->proc~close_wav_file program~four_thirty_three->proc~create_wav_file program~four_thirty_three->proc~get_name program~four_thirty_three->proc~mix_tracks program~misc_sounds misc_sounds program~misc_sounds->proc~add_misc_signal program~misc_sounds->proc~close_wav_file program~misc_sounds->proc~create_wav_file program~misc_sounds->proc~fr program~misc_sounds->proc~get_name program~misc_sounds->proc~mix_tracks program~multiplication_bells multiplication_bells program~multiplication_bells->proc~add_bell program~multiplication_bells->proc~close_wav_file program~multiplication_bells->proc~create_wav_file program~multiplication_bells->proc~get_name program~multiplication_bells->proc~mix_tracks program~radioactivity radioactivity program~radioactivity->proc~add_chord program~radioactivity->proc~add_geiger_ping program~radioactivity->proc~add_morse_code program~radioactivity->proc~adsr_new program~radioactivity->proc~close_wav_file program~radioactivity->proc~create_wav_file program~radioactivity->proc~fr program~radioactivity->proc~get_name program~radioactivity->proc~mix_tracks program~radioactivity->proc~string_to_morse program~shepard_risset_glissando shepard_risset_glissando program~shepard_risset_glissando->proc~amplitude program~shepard_risset_glissando->proc~apply_fade_in program~shepard_risset_glissando->proc~apply_fade_out program~shepard_risset_glissando->proc~close_wav_file program~shepard_risset_glissando->proc~create_wav_file program~shepard_risset_glissando->proc~get_name program~shepard_risset_glissando->proc~mix_tracks program~shepard_risset_glissando->proc~write_amplitude_envelope program~shepard_scale shepard_scale program~shepard_scale->proc~apply_reverse_effect program~shepard_scale->proc~close_wav_file program~shepard_scale->proc~create_wav_file program~shepard_scale->proc~db_to_linear program~shepard_scale->proc~get_name program~shepard_scale->proc~mix_tracks program~sonify sonify program~sonify->proc~print_copyright program~sonify->proc~print_options program~sonify->proc~read_argument program~sonify->proc~sonify_from_file
Help