Compare commits

..

No commits in common. "25b2f353cd908ffe5417cfd5ea0a76e42194abd0" and "0f92d09d5ef8dda141e8ed2e1043da770abf46cd" have entirely different histories.

32 changed files with 50 additions and 400 deletions

View File

@ -293,6 +293,7 @@ module bloubspace
end subroutine end subroutine
! ---------------------------------------------------------------- ! ----------------------------------------------------------------
end module end module

View File

@ -18,13 +18,12 @@ program movebloubs
call getarg(1, infile) call getarg(1, infile)
write (0, '(A)') & write (0, '(A)') &
"***** listing bloubs from "//trim(infile) "*** listing bloubs from "//trim(infile)
allocate (bloubs(NB_MAX_BLOUBS), stat=errcode) allocate (bloubs(NB_MAX_BLOUBS), stat=errcode)
if (0 .NE. errcode) then if (0 .NE. errcode) then
STOP " : NO ENOUGH MEMORY" STOP " : NO ENOUGH MEMORY"
endif endif
! run a molly-guard
do i = 1, NB_MAX_BLOUBS do i = 1, NB_MAX_BLOUBS
bloubs(i)%alive = .FALSE. bloubs(i)%alive = .FALSE.
enddo enddo

View File

@ -74,7 +74,6 @@ do
# mv ${BLBS_OUT} ${BLBS_IN} # mv ${BLBS_OUT} ${BLBS_IN}
echo echo
sleep 90
done done

View File

@ -7,7 +7,6 @@ evolvopick
henon henon
essai essai
frames/*
WS/*.dat WS/*.dat
WS/*.txt WS/*.txt
WS/*.inc WS/*.inc

View File

@ -11,14 +11,10 @@ mods/spitpgm.o: mods/spitpgm.f90 Makefile
mods/points3d.o: mods/points3d.f90 Makefile mods/points3d.o: mods/points3d.f90 Makefile
gfortran $(GFOPT) -c $< -o $@ gfortran $(GFOPT) -c $< -o $@
mods/xperiment.o: mods/xperiment.f90 Makefile
gfortran $(GFOPT) -c $< -o $@
fraktals.o: fraktals.f90 Makefile fraktals.o: fraktals.f90 Makefile
gfortran $(GFOPT) -c $< gfortran $(GFOPT) -c $<
OBJS = mods/spitpgm.o mods/points3d.o mods/xperiment.o \ OBJS = mods/spitpgm.o mods/points3d.o fraktals.o
fraktals.o
# --------------------------------------------- # ---------------------------------------------

View File

@ -8,8 +8,8 @@ qui montre ma première expérience dans ce domaine.
## La technique ## La technique
Le gros des calculs de fractales est fait dans `mods/fraktals.f90`, Le gros des calculs de fractales est fait dans XXX, et la gestion
et la gestion des pixels 'physiques' est fait dans `mods/spitpgm`. des pixels 'physiques' est fait dans YYY
Les fonctions d'usage général sont dans Les fonctions d'usage général sont dans
[mods/](répertoire mods/) ave trop peu [mods/](répertoire mods/) ave trop peu

View File

@ -1,36 +1,9 @@
!----------------------------------------------------- !-----------------------------------------------------
program essai program essai
use spitpgm use spitpgm
use fraktals
use points3d
use xperiment
implicit none implicit none
integer, dimension(:,:), allocatable :: picz
integer :: W, H, foo
integer :: errcode
character(200) :: filename
real :: kx, ky
write(0, *) "============= essai =============="
W = 320 ; H = 240
call srand(666)
allocate(picz(W,H), stat=errcode)
do foo=1, 360
write (filename, "(a, i5.5, a)") "frames/popcorn/", foo, ".pnm"
write(0, *) "-------->", trim(filename), "<"
kx = 50.0 * sin(real(foo)*25.133)
ky = 50.0 * cos(real(foo)*25.133)
write(0, *) foo, kx, ky
call parasites_0(picz, kx, ky, 233)
call spit_as_pgm_8(picz, trim(filename))
enddo
!----------------------------------------------------- !-----------------------------------------------------
end program end program

View File

@ -3,51 +3,12 @@ module fraktals
use points3d use points3d
implicit none implicit none
!-----------------------------------------------------
!-----------------------------------------------------
contains contains
!=============================================================== !-----------------------------------------------------
! nouveau 28 mai 2022 (again)
! source:
! Fractal Creation with FRACTINT
!
subroutine parasites_0(pic, cx, cy, maxiter)
implicit none
! here is the wtf
integer, intent(inout), dimension (:,:) :: pic
real, intent(in) :: cx, cy
integer, intent(in) :: maxiter
integer :: ix, iy, width, height
real :: fx, fy, coef
logical :: burps
! write(0, *) "subroutine parasites_0" , maxiter
! write(0, *) "constantes", cx, cy
width = ubound(pic, 1) ; height = ubound(pic, 2)
coef = float(maxiter)
do ix = 1, width
fx = cx + (float(ix) / (float(width)/4.0) - 2.0)
burps = (RAND() .lt. 0.01)
do iy = 1, height
fy = cy + (float(iy) / (float(height)/4.0) - 2.0)
if (burps) then
pic(ix, iy) = int(fx * fy * coef * 1.005)
else
pic(ix, iy) = int(fx * fy * coef)
endif
enddo
enddo
end subroutine parasites_0
!===============================================================
subroutine simple_julia(pic, cx, cy, maxiter) subroutine simple_julia(pic, cx, cy, maxiter)
implicit none implicit none
integer, intent(inout), dimension (:,:) :: pic integer, intent(inout), dimension (:,:) :: pic
@ -98,8 +59,8 @@ subroutine simple_julia(pic, cx, cy, maxiter)
enddo ! ix enddo ! ix
end subroutine simple_julia end subroutine simple_julia
!=============================================================== !-----------------------------------------------------
!
! d'après les pages 91/92 du livre de Roger T Stevens ! d'après les pages 91/92 du livre de Roger T Stevens
! "Fractal programming in C" ! "Fractal programming in C"
! !
@ -169,7 +130,7 @@ subroutine plot_pickover(pic, count)
end subroutine plot_pickover end subroutine plot_pickover
!=============================================================== !-----------------------------------------------------
! !
! d'après les pages NN/NN du livre de Roger T Stevens ! d'après les pages NN/NN du livre de Roger T Stevens
! "Fractal programming in C" ! "Fractal programming in C"
@ -183,11 +144,11 @@ subroutine lorentz_0(pic, count)
! XXX double precision :: ka, kb, kc, kd ! XXX double precision :: ka, kb, kc, kd
! XXX integer :: i, w, h, px, py ! XXX integer :: i, w, h, px, py
write(0, *) "proc lorentz_0, count is ", count
end subroutine lorentz_0 end subroutine lorentz_0
!=============================================================== !-----------------------------------------------------------
! -- some support functions -- ! -- some support functions --
!----------------------------------------------------------- !-----------------------------------------------------------
! usage : evolvopick & voxelize ! usage : evolvopick & voxelize

View File

@ -57,7 +57,7 @@ do
grep 'Parse Time' WS/toto.err grep 'Parse Time' WS/toto.err
grep 'Trace Time' WS/toto.err grep 'Trace Time' WS/toto.err
echo echo ; sleep 10
done done

View File

@ -2,10 +2,8 @@
## Points 3d ## Points 3d
Bientôt les quaternions ?
## Portable Net Map ## Portable Net Map
Fichiers de type `PGM` utilisés ici en version 16 bits, donc .pgm
65536 niveaux de gris.

View File

@ -49,8 +49,7 @@ subroutine write_points3d(array, start, length, fname)
open(newunit=io, file=fname) open(newunit=io, file=fname)
do i = 1, length do i = 1, length
j = i + start j = i + start
write(io, '(3F12.6, I8)') & write(io, '(3F12.6)') array(j)%x, array(j)%y, array(j)%z
array(j)%x, array(j)%y, array(j)%z, array(j)%seq
enddo enddo
close(io) close(io)

View File

@ -1,65 +0,0 @@
module xperiment
implicit none
contains
!===============================================================
! nouveau 24 mai 2022
subroutine parasites_0(pic, cx, cy, maxiter)
implicit none
! here is the wtf
integer, intent(inout), dimension (:,:) :: pic
real, intent(in) :: cx, cy
integer, intent(in) :: maxiter
integer :: ix, iy, width, height
real :: fx, fy, coef
logical :: burps
! write(0, *) "subroutine parasites_0" , maxiter
! write(0, *) "constantes", cx, cy
width = ubound(pic, 1) ; height = ubound(pic, 2)
coef = float(maxiter)
do ix = 1, width
fx = cx + (float(ix) / (float(width)/4.0) - 2.0)
burps = (RAND() .lt. 0.01)
do iy = 1, height
fy = cy + (float(iy) / (float(height)/4.0) - 2.0)
if (burps) then
pic(ix, iy) = int(fx * fy * coef * 1.005)
else
pic(ix, iy) = int(fx * fy * coef)
endif
enddo
enddo
end subroutine parasites_0
!---------------------------------------------------------------
!
! aucune idee de l'utilisation de ce truc !
!
subroutine loop_of_parasites_0(nbre, mode)
implicit none
integer, intent(in) :: nbre, mode
integer :: idx
if (mode .NE. 0) STOP "BAD MODE"
do idx = 0, nbre
write(0, *) "popcorn loop ", idx
enddo
end subroutine loop_of_parasites_0
!===============================================================
end module xperiment

View File

@ -9,7 +9,7 @@ program voxelize
implicit none implicit none
integer, parameter :: DIMC = 320 integer, parameter :: DIMC = 180
integer, dimension(:,:,:), allocatable :: cube integer, dimension(:,:,:), allocatable :: cube
type(t_point3d), dimension(:), allocatable :: points type(t_point3d), dimension(:), allocatable :: points
integer :: errcode, foo, argc integer :: errcode, foo, argc
@ -35,7 +35,7 @@ program voxelize
STOP " : NO ENOUGH MEMORY FOR CUBE" STOP " : NO ENOUGH MEMORY FOR CUBE"
endif endif
nbr_points = 9000000 nbr_points = 7000000
allocate(points(nbr_points), stat=errcode) allocate(points(nbr_points), stat=errcode)
if (0 .NE. errcode) then if (0 .NE. errcode) then
STOP " : NO ENOUGH MEMORY FOR POINTS" STOP " : NO ENOUGH MEMORY FOR POINTS"

3
GrafAnim/.gitignore vendored
View File

@ -1,3 +0,0 @@
essai

View File

@ -1,12 +0,0 @@
#
# Fortraneries by tTh - Graf Anim
#
GFOPT = -Wall -Wextra -g -time
essai: essai.f90 usegenplot.o Makefile
gfortran $(GFOPT) $< usegenplot.o -o $@
usegenplot.o: usegenplot.f90 Makefile
gfortran $(GFOPT) -c $<

View File

@ -1,5 +0,0 @@
# GrafAnim
Quelques essais approximatifs pour faire des graphiques inutiles,
dans une démarche mettant en avant la techno-futilité

View File

@ -1,13 +0,0 @@
program essai
use usegenplot
implicit none
! integer :: foo, bar
write(0, *) "------------ essai graf anim ---------------"
call init_genplot('essai.genplot')
end program

View File

@ -1,6 +0,0 @@
#!/bin/bash
set -e
make essai

View File

@ -1,19 +0,0 @@
module usegenplot
implicit none
contains
! -------------------------------------------------------------------
subroutine init_genplot(filename)
character(200) :: filename
write(0, *) '-------- init genplot '
end subroutine
! -------------------------------------------------------------------
end module

View File

@ -1,5 +0,0 @@
essai
displaykinds

View File

@ -1,22 +0,0 @@
#
# Fortraneries by tTh - Random Stuff
#
GFOPT = -Wall -Wextra -g -time
all: essai displaykinds
# -----------------------------------------------------
mathstuff2.o: mathstuff2.f90 Makefile
gfortran $(GFOPT) -c $<
# -----------------------------------------------------
essai: essai.f90 Makefile mathstuff2.o
gfortran $(GFOPT) $< mathstuff2.o -o $@
displaykinds: displaykinds.f90 Makefile
gfortran $(GFOPT) $< -o $@
# -----------------------------------------------------

View File

@ -1,17 +1,9 @@
# Random Stuff # Random Stuff
Warning, isometime, there was non-sense inside ! Warning, non-sense inside !
## Utilities ## Utilities
- some basic mathematical functions.
## Debug tools ## Debug tools
- display all the KIND= variants.
## Useless
- write a few simple cli games.

View File

@ -1,5 +0,0 @@
program displaykinds
print *, "--- display all kind's variants ---"
end program

View File

@ -1,21 +0,0 @@
program essai
use mathstuff2
implicit none
integer :: foo, bar
real :: quux
double precision :: somme
write(0, *) "----------------- essai -------------------"
call init_random_seed() ! in module 'mathstuff'
somme = 0.0
do foo=1, 500
quux = rand() + rand()
somme = somme + quux
bar = mod(irand(), 7)
print *, foo, quux, somme/foo, bar
enddo
end program

View File

@ -1,33 +0,0 @@
module mathstuff2
! XXX This module was a copy of mathstuff.f90 fromthe BloubWorld
! XXX wil be moved in an other place some day...
implicit none
contains
! ----------------------------------------------------------------
! really quick'n'dirty hack
! not really tested yet...
subroutine init_random_seed()
integer, dimension(3) :: tarray
integer :: t3, foo
real :: dummy
call itime(tarray)
t3 = 3600*tarray(1) + 60*tarray(2) + tarray(3)
! write(0, '(A,3I3,A,I6)') "sranding: ", tarray, " --> ", t3
call srand(t3)
! after initializing the random generator engine,
! you MUST use it for initializing the initializer
do foo=1, tarray(1)+5
dummy = rand()
enddo
end subroutine
! ----------------------------------------------------------------
end module mathstuff2

View File

@ -9,7 +9,6 @@
text2wav text2wav
wav2text wav2text
text2ao text2ao
essai
panoramix panoramix
genwaves genwaves

View File

@ -4,7 +4,7 @@
GOPT = -Wall -Wextra -time -g GOPT = -Wall -Wextra -time -g
all: panoramix genwaves essai all: panoramix genwaves
# ---------------------------------------------------------- # ----------------------------------------------------------
# #
@ -16,10 +16,6 @@ FLIBS = soundbrotch.o
soundbrotch.o: soundbrotch.f90 Makefile soundbrotch.o: soundbrotch.f90 Makefile
gfortran $(GOPT) -c $< gfortran $(GOPT) -c $<
# some test...
essai: essai.f90 Makefile $(FLIBS)
gfortran $(GOPT) $< $(FLIBS) -o $@
# main proggies # main proggies
panoramix: panoramix.f90 Makefile $(FLIBS) panoramix: panoramix.f90 Makefile $(FLIBS)
gfortran $(GOPT) $< $(FLIBS) -o $@ gfortran $(GOPT) $< $(FLIBS) -o $@

View File

@ -8,7 +8,7 @@ DATAFILE="waves.text"
OUTWAV="quux.wav" OUTWAV="quux.wav"
./genwaves | tee $DATAFILE | c-tools/text2wav $OUTWAV ./genwaves | ./panoramix | tee $DATAFILE | c-tools/text2wav $OUTWAV
sndfile-spectrogram \ sndfile-spectrogram \
--min-freq=30 --max-freq=4000 \ --min-freq=30 --max-freq=4000 \

View File

@ -1,21 +0,0 @@
program essai
use soundbrotch
! -----------------------------
implicit none
integer :: n
real :: freq
write(0, *) "*** On essaye des trucs (shotgun!) ***"
call soundbrotch_version()
do n = 20, 85
freq = midi2freq(n)
write(0, '(12X, I5, 5X, F9.3)') n, freq
call sinw_burst2i(6, 22000, freq, freq, 0.9)
call silence_burst2i(800)
end do
end program

View File

@ -11,13 +11,12 @@ program genwaves
write(0, *) "*** Genwaves ***" write(0, *) "*** Genwaves ***"
call soundbrotch_version() call soundbrotch_version()
do clock = 1, 11 do clock = 1, 8
fleft = real(100 * clock) fleft = real(100 * clock)
fright = real(116 * clock) fright = real(150 * clock)
write(0, '(1X,I8, 9X, F8.2, 6X, F8.2)') clock, fleft, fright write(0, '(1X,I8, 9X, F8.2, 6X, F8.2)') clock, fleft, fright
call sinw_burst2i(6, 23200, fleft, fright, 0.7) call sinw_burst2i(6, 4800, fleft, fright, 0.7)
enddo enddo
call silence_burst2i(1337)
end program end program

View File

@ -21,7 +21,7 @@ program panoramix
endif endif
! *** NON WORKING CODE *** ! *** NON WORKING CODE ***
phi = real(nblus) / 44100.0 phi = real(nblus) / 60000.0
ka = sin(phi) ka = sin(phi)
value = (real(left)+real(right)) / 2.05 value = (real(left)+real(right)) / 2.05
left = int(value*ka) left = int(value*ka)

View File

@ -7,19 +7,12 @@ module soundbrotch
integer :: right integer :: right
end type end type
! --------------------------------------------------------- ! ---------------------------------------------------------
! some private variables
integer, private :: samplerate = 48000
real, private :: diapason = 440.0
contains contains
! --------------------------------------------------------- ! ---------------------------------------------------------
subroutine soundbrotch_version () subroutine soundbrotch_version ()
write(0, '(1X,A)') "--- this is soundbrotch version alpha 666" write(0, '(1X,A)') "--- this is soundbrotch version alpha 666"
write(0, *) "--- samplerate", samplerate
write(0, *) "--- diapason ", diapason
end subroutine end subroutine
! ---------------------------------------------------------
! ---------------------------------------------------------
! --------------------------------------------------------- ! ---------------------------------------------------------
! premier essai, le prototype peut changer ! ! premier essai, le prototype peut changer !
@ -32,55 +25,31 @@ module soundbrotch
integer :: idx, left, right integer :: idx, left, right
real :: coef real :: coef
integer, save :: oldl=0, oldr=0
if (dst .NE. 6) then coef = (3.141592654 * 2.0) / 44.1e3
STOP ' OUPS!'
endif
coef = (3.141592654 * 2.0) / real(samplerate)
do idx=0, numbs do idx=0, numbs
left = INT(32e3 * level * sin(coef*real(idx)*fra)) left = INT(32e3 * level * sin(coef*real(idx)*fra))
left = (left + oldl) / 2
right = INT(32e3 * level * sin(coef*real(idx)*frb)) right = INT(32e3 * level * sin(coef*real(idx)*frb))
call xper_spit_2i(left, right) right = (right + oldr) / 2
print *, left, right
oldl = left
oldr = right
enddo
! add silence at the end of the burst
left = 0
right = 0
do idx=0, numbs/3
left = (left + oldl) / 2
right = (right + oldr) / 2
print *, 0, 0
oldl = left
oldr = right
enddo enddo
end subroutine end subroutine
! --------------------------------------------------------- ! ---------------------------------------------------------
! mmmm ?
subroutine silence_burst2i(nbsmpl)
integer, intent(in) :: nbsmpl
integer :: idx
do idx=0, nbsmpl
call xper_spit_2i(0, 0)
enddo
end subroutine
! ---------------------------------------------------------
! mmmm ?
subroutine xper_spit_2i(lsmpl, rsmpl)
integer, intent(in) :: lsmpl, rsmpl
integer, save :: oldl, oldr
integer :: tmpl, tmpr
tmpl = (lsmpl + oldl) / 2
tmpr = (rsmpl + oldr) / 2
print *, tmpl, tmpr
oldl = tmpl
oldr = tmpr
end subroutine
! ---------------------------------------------------------
!
function midi2freq(note)
integer, intent(in) :: note
real :: midi2freq
real :: freq
freq = (DIAPASON/32.0) * (2.0 ** (real(note - 9) / 12.0));
! write(0, *) "> ", note, freq
midi2freq = freq
end function
end module end module