tape_recorder Derived Type

type, public :: tape_recorder


Inherited by

type~~tape_recorder~~InheritedByGraph type~tape_recorder tape_recorder type~wav_file WAV_file type~wav_file->type~tape_recorder

Components

Type Visibility Attributes Name Initial
real(kind=wp), public :: duration

Duration in seconds:

real(kind=wp), public, dimension(:, :), allocatable :: left

Two arrays stocking the stereo tracks:

real(kind=wp), public, dimension(:, :), allocatable :: right

Two arrays stocking the stereo tracks:

integer, public :: samples

Number of samples:

integer, public :: tracks

Number of audio tracks (excluding track 0 reserved for the final mix):


Finalization Procedures

final :: auto_finalize

  • public subroutine auto_finalize(self)

    An automatic finalizer, by security.

    Arguments

    Type IntentOptional Attributes Name
    type(tape_recorder), intent(inout) :: self

Type-Bound Procedures

procedure, public :: clear_tracks

  • public subroutine clear_tracks(self)

    Erase all tracks on all the channels of the tape.

    Arguments

    Type IntentOptional Attributes Name
    class(tape_recorder), intent(inout) :: self

procedure, public :: copy_section

  • public subroutine copy_section(self, from_track, to_track, t1, t2, t3)

    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.

    Arguments

    Type IntentOptional Attributes Name
    class(tape_recorder), intent(inout) :: self
    integer, intent(in) :: from_track
    integer, intent(in) :: to_track
    real(kind=wp), intent(in) :: t1
    real(kind=wp), intent(in) :: t2
    real(kind=wp), intent(in) :: t3

procedure, public :: finalize

  • public subroutine finalize(self)

    Called by the close_WAV_file() method.

    Arguments

    Type IntentOptional Attributes Name
    class(tape_recorder), intent(inout) :: self

procedure, public :: mix_tracks

  • public subroutine mix_tracks(self, levels, pan)

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

    Arguments

    Type IntentOptional Attributes Name
    class(tape_recorder), intent(inout) :: self
    real(kind=wp), intent(in), optional, dimension(1:self%tracks) :: levels
    real(kind=wp), intent(in), optional, dimension(1:self%tracks) :: pan

procedure, public :: new

  • public subroutine new(self, tracks, duration)

    Arguments

    Type IntentOptional Attributes Name
    class(tape_recorder), intent(inout) :: self
    integer, intent(in) :: tracks
    real(kind=wp), intent(in) :: duration

Source Code

    type tape_recorder
        !> Number of audio tracks (excluding track 0 reserved for the final mix):
        integer  :: tracks
        !> Duration in seconds:
        real(wp) :: duration
        !> Number of samples:
        integer  :: samples
        !> Two arrays stocking the stereo tracks:
        real(wp), dimension(:, :), allocatable :: left, right
    contains
        procedure :: new
        procedure :: clear_tracks
        procedure :: mix_tracks
        procedure :: copy_section
        procedure :: finalize
        final     :: auto_finalize
    end type tape_recorder