68 lines
1.9 KiB
Fortran
68 lines
1.9 KiB
Fortran
program twavm
|
|
|
|
! new: Wed Feb 7 01:27:48 UTC 2024
|
|
|
|
use mathstuff2
|
|
use wavmetrics
|
|
implicit none
|
|
|
|
write(0, *) "----------------- twavm -------------------"
|
|
|
|
call run_second_test(44100/30)
|
|
|
|
contains
|
|
!-----------------------------------------------------------------------
|
|
|
|
subroutine run_first_test(nbs)
|
|
integer, intent(in) :: nbs ! nombre d'echantillons
|
|
|
|
type(intsample), allocatable :: samples(:)
|
|
type(wavmetric) :: metrics
|
|
integer :: foo, bar
|
|
|
|
write(0, '(1X, "first test on ", I0, " samples.")') nbs
|
|
|
|
! create the buffer, and fill it with garbage
|
|
allocate(samples(nbs))
|
|
do foo=1, nbs
|
|
samples(foo)%left = mod(irand(), 65534) - 32700
|
|
samples(foo)%right = mod(irand(), 60000) - 29999
|
|
enddo
|
|
|
|
! compute and display the metrics (gi-go)
|
|
call compute_wavmetric(samples, nbs, metrics)
|
|
call display_wavmetrics(metrics)
|
|
|
|
end subroutine
|
|
!-----------------------------------------------------------------------
|
|
!-----------------------------------------------------------------------
|
|
!-
|
|
!- we read the datas from stdin
|
|
!-
|
|
subroutine run_second_test(nbs)
|
|
integer, intent(in) :: nbs ! nombre d'echantillons
|
|
|
|
type(intsample), allocatable :: samples(:)
|
|
type(wavmetric) :: metrics
|
|
integer :: foo, bar
|
|
integer :: vl, vr
|
|
|
|
write(0, '(1X, "second test on ", I0, " samples.")') nbs
|
|
|
|
! create the buffer, and fill it with stdin
|
|
allocate(samples(nbs))
|
|
do foo=1, nbs
|
|
read(5, *) vl, vr
|
|
! print '(1X, 2I16)', vl, vr
|
|
samples(foo)%left = vl
|
|
samples(foo)%right = vr
|
|
enddo
|
|
|
|
! compute and display the metrics (gi-go)
|
|
call compute_wavmetric(samples, nbs, metrics)
|
|
call display_wavmetrics(metrics)
|
|
|
|
end subroutine
|
|
!-----------------------------------------------------------------------
|
|
end program
|