Procedures

ProcedureLocationProcedure TypeDescription
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_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
add_karplus_strong_stretched signals Subroutine
add_misc_signal misc_sounds Subroutine

Add on the track a signal choosen by its number:

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
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_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:

finalize tape_recorder_class Subroutine

Called by the close_WAV_file() method.

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:

initialize_frequencies shepard_risset_glissando Subroutine
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.

mix_tracks tape_recorder_class Subroutine

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

new tape_recorder_class Subroutine
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_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_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_noise add_noise proc~adsr_level ADSR_envelope%ADSR_level proc~add_noise->proc~adsr_level proc~add_sine_wave add_sine_wave 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_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~initialize_frequencies initialize_frequencies proc~mix_tracks tape_recorder%mix_tracks proc~new->proc~clear_tracks 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_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_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~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~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~initialize_frequencies program~shepard_risset_glissando->proc~mix_tracks 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~get_name program~shepard_scale->proc~mix_tracks
Help