Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
real(kind=wp), | public | :: | duration |
Duration in seconds: |
|||
character(len=:), | public, | allocatable | :: | filename | |||
integer, | public | :: | fileunit | ||||
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): |
Erase all tracks on all the channels of the tape.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(tape_recorder), | intent(inout) | :: | self |
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.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(WAV_file), | intent(inout) | :: | self |
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.
Type | Intent | Optional | 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 |
Create a WAV file with a header:
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(WAV_file), | intent(inout) | :: | self | |||
character(len=*), | intent(in) | :: | filename | |||
integer, | intent(in) | :: | tracks | |||
real(kind=wp), | intent(in) | :: | duration |
Called by the close_WAV_file() method.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(tape_recorder), | intent(inout) | :: | self |
Tracks 1 to tracks-1 are mixed on track 0.
Type | Intent | Optional | 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 |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(tape_recorder), | intent(inout) | :: | self | |||
integer, | intent(in) | :: | tracks | |||
real(kind=wp), | intent(in) | :: | duration |
Creates the 44 bytes WAV header and prints some information:
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(WAV_file), | intent(inout) | :: | self |
WAV parameters: |
This method normalizes the sound amplitude on track 0, before saving the left and right channels in the WAV file.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(WAV_file), | intent(inout) | :: | self |
type, extends(tape_recorder) :: WAV_file character(len=:), allocatable :: filename integer :: fileunit contains procedure :: create_WAV_file procedure :: close_WAV_file procedure :: get_name procedure, private :: write_header procedure, private :: write_normalized_data end type WAV_file