Compare commits
3 Commits
b707b784bf
...
8223cb8e77
Author | SHA1 | Date | |
---|---|---|---|
|
8223cb8e77 | ||
|
2f4272909a | ||
|
3f95a964e5 |
@ -4,7 +4,7 @@
|
||||
# Makefile for the general purpose moduls
|
||||
#
|
||||
|
||||
GFOPT = -Wall -Wextra -time -g
|
||||
GFOPT = -Wall -Wextra -time -g
|
||||
|
||||
all: chkpixels
|
||||
|
||||
|
@ -5,6 +5,10 @@
|
||||
|
||||
Write gray level 2d buffer (aka picture) to disk in the NetPNM format.
|
||||
|
||||
## pixrgb
|
||||
|
||||
Write 8 bits RGB pictures to PNM format.
|
||||
|
||||
## trials
|
||||
|
||||
Experimental WIPs from hell.
|
||||
|
@ -11,8 +11,8 @@ program chkpixels
|
||||
implicit none
|
||||
|
||||
write(0, *) "------ CHKPIXELS ------"
|
||||
! call test_spit_as(3)
|
||||
call test_spit_rgb(256)
|
||||
call test_spit_as(3)
|
||||
call test_spit_rgb(128, 222)
|
||||
|
||||
STOP 'BECAUSE NO CPU AVAILABLE'
|
||||
|
||||
@ -21,8 +21,8 @@ contains
|
||||
!-
|
||||
! exerciser for the 'pixrgb' module
|
||||
!-
|
||||
subroutine test_spit_rgb(sz)
|
||||
integer, intent(in) :: sz
|
||||
subroutine test_spit_rgb(sz, kg)
|
||||
integer, intent(in) :: sz, kg
|
||||
|
||||
type(t_pixrgb), allocatable :: pixrgb(:,:)
|
||||
integer :: ix, iy
|
||||
@ -33,7 +33,7 @@ contains
|
||||
do ix=1, sz
|
||||
do iy=1, sz
|
||||
pixrgb(ix, iy)%r = ix
|
||||
pixrgb(ix, iy)%g = 0
|
||||
pixrgb(ix, iy)%g = mod(ix*iy, kg)
|
||||
pixrgb(ix, iy)%b = iy
|
||||
end do
|
||||
end do
|
||||
@ -50,6 +50,7 @@ contains
|
||||
integer, dimension(SZ, SZ) :: greymap
|
||||
integer :: ix, iy, value
|
||||
|
||||
print *, "test spit as", sz
|
||||
value = 0
|
||||
do iy=1, SZ
|
||||
do ix=1, SZ
|
||||
@ -57,10 +58,10 @@ contains
|
||||
value = value + increment
|
||||
enddo
|
||||
enddo
|
||||
call spit_as_pgm_16 (greymap, 'a.pgm')
|
||||
call spit_as_pgm_eq (greymap, 'b.pgm')
|
||||
call spit_as_pgm_8 (greymap, 'c.pgm')
|
||||
call new_spit_a (greymap, 'x.pgm')
|
||||
call spit_as_pgm_16 (greymap, 'a.pnm')
|
||||
call spit_as_pgm_eq (greymap, 'b.pnm')
|
||||
call spit_as_pgm_8 (greymap, 'c.pnm')
|
||||
call new_spit_a (greymap, 'x.pnm')
|
||||
end subroutine
|
||||
|
||||
end program
|
||||
|
@ -1,5 +1,5 @@
|
||||
!-
|
||||
! This module try to write PGM complient gray level files
|
||||
! This module try to write PNM complient RGB files
|
||||
!-
|
||||
module pixrgb
|
||||
implicit none
|
||||
@ -28,6 +28,23 @@ subroutine rgbpix_set_to_zero(pic)
|
||||
end subroutine
|
||||
!-------------------------------------------------------------------
|
||||
!-
|
||||
! NOT TESTED !!!
|
||||
!-
|
||||
subroutine rgb_pix_clamp_at_8(pic)
|
||||
type(t_pixrgb), intent(inout) :: pic(:,:)
|
||||
integer :: ix, iy
|
||||
do iy=1, ubound(pic, 2)
|
||||
do ix=1, ubound(pic, 1)
|
||||
pic(ix, iy)%r = max(0, min(pic(ix, iy)%r, 255))
|
||||
pic(ix, iy)%g = max(0, min(pic(ix, iy)%g, 255))
|
||||
pic(ix, iy)%b = max(0, min(pic(ix, iy)%b, 255))
|
||||
enddo
|
||||
enddo
|
||||
end subroutine
|
||||
!-------------------------------------------------------------------
|
||||
!-
|
||||
! CAUTION: there was NO out-of-bounds check !
|
||||
!-
|
||||
subroutine rgbpix_spit_as_pnm_8(pic, fname)
|
||||
type(t_pixrgb), intent(in) :: pic(:,:)
|
||||
character (len=*), intent(in) :: fname
|
||||
@ -42,7 +59,7 @@ subroutine rgbpix_spit_as_pnm_8(pic, fname)
|
||||
|
||||
do iy=1, ubound(pic, 2)
|
||||
do ix=1, ubound(pic, 1)
|
||||
write(io, "(3I12)") pic(ix, iy)%r, pic(ix, iy)%g, pic(ix, iy)%b
|
||||
write(io, "(3I5)") pic(ix, iy)%r, pic(ix, iy)%g, pic(ix, iy)%b
|
||||
enddo
|
||||
enddo
|
||||
close(unit=io)
|
||||
@ -50,6 +67,8 @@ subroutine rgbpix_spit_as_pnm_8(pic, fname)
|
||||
end subroutine
|
||||
!-------------------------------------------------------------------
|
||||
!-
|
||||
! CAUTION: there was NO out-of-bounds check !
|
||||
!-
|
||||
subroutine rgbpix_spit_as_pnm_16(pic, fname)
|
||||
|
||||
type(t_pixrgb), intent(in) :: pic(:,:)
|
||||
|
@ -60,7 +60,8 @@ subroutine spit_as_pgm_16(pic, fname)
|
||||
|
||||
open(newunit=io, file=fname)
|
||||
write (io, '(a2)') "P2"
|
||||
write (io, '("# size:", I9)') size(pic)
|
||||
write (io, '(A)') "# spit_as_pgm_16"
|
||||
! write (io, '("# size:", I9)') size(pic)
|
||||
write (io, '(i0," ",i0)') size(pic, 1), size(pic, 2)
|
||||
write (io, '(i0)') 65535
|
||||
|
||||
|
2
SoundBrotching/.gitignore
vendored
2
SoundBrotching/.gitignore
vendored
@ -9,9 +9,9 @@
|
||||
text2wav
|
||||
wav2text
|
||||
text2ao
|
||||
essai
|
||||
|
||||
panoramix
|
||||
genwaves
|
||||
soundbrotch
|
||||
essai
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
# SoundBrotching
|
||||
|
||||
Stay tuned, film at 11.
|
||||
Stay tuned, film at 440.
|
||||
|
||||
## Cheat Code
|
||||
|
||||
@ -10,9 +10,9 @@ de ce sous-projet fortranique sont
|
||||
ecrits en C, pour un accès facile à des bibliothèques tierces
|
||||
comme `libsndfile` ou `libao`, composants essentiels du SoundBrotching.
|
||||
|
||||
## Serious game
|
||||
## Not so serious game
|
||||
|
||||
Quelques exemples simple, mais bruyants...
|
||||
Quelques exemples simple, mais bruyants... `runme.sh`
|
||||
|
||||
### genwaves
|
||||
|
||||
@ -20,5 +20,5 @@ Génération de sons qui arrachent les oreilles.
|
||||
|
||||
### panoramix
|
||||
|
||||
Conversion de l'entrée en mono, et dépacement en sinus d'un
|
||||
coté à l'autre.
|
||||
Conversion de l'entrée en mono, et déplacement en sinusoïdale d'un
|
||||
coté de l'univers à l'autre.
|
||||
|
@ -24,7 +24,17 @@ return 0;
|
||||
/* --------------------------------------------------------------- */
|
||||
void print_version(char *msg)
|
||||
{
|
||||
fprintf(stderr, "=== %s compiled %s, %s\n", \
|
||||
fprintf(stderr, "=== %s, support compiled %s, %s\n", \
|
||||
msg, __DATE__, __TIME__);
|
||||
}
|
||||
/* --------------------------------------------------------------- */
|
||||
int check_textfile_validity(char *filename, int what)
|
||||
{
|
||||
|
||||
#if DEBUG_LEVEL
|
||||
fprintf(stderr, ">>> %s ( '%s' %d )\n", __func__, filename, what);
|
||||
#endif
|
||||
|
||||
return -1;
|
||||
}
|
||||
/* --------------------------------------------------------------- */
|
||||
|
@ -10,4 +10,6 @@ int display_sf_info(SF_INFO *psf, char *text);
|
||||
|
||||
void print_version(char *title);
|
||||
|
||||
int check_textfile_validity(char *filename, int what);
|
||||
|
||||
/* --------------------------------------------------------- */
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* TEXT TO WAV
|
||||
* TEXT TO WAV - a klugeware from tTh 2023
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
@ -27,7 +27,7 @@ int left, right;
|
||||
int nb_lus, idx;
|
||||
|
||||
#if DEBUG_LEVEL
|
||||
fprintf(stderr, ">>> %s ( '%s' )\n", __func__, outf);
|
||||
fprintf(stderr, ">>> %s ( '%s' %d %d )\n", __func__, outf, sr, format);
|
||||
#endif
|
||||
|
||||
if (format) {
|
||||
@ -78,11 +78,16 @@ while (2==fscanf(input, "%d %d", &left, &right)) {
|
||||
sf_write_short(sndf, buffer, idx);
|
||||
sf_close(sndf);
|
||||
|
||||
fprintf(stderr, "%s: %d buffers written\n", __func__, nb_lus);
|
||||
free(buffer);
|
||||
|
||||
fprintf(stderr, "%s: %d samples written\n", __func__, nb_lus);
|
||||
|
||||
return 0;
|
||||
}
|
||||
/* --------------------------------------------------------------- */
|
||||
/*
|
||||
* this is a preview software, so no args parsiong yet...
|
||||
*/
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
int foo;
|
||||
|
@ -59,10 +59,7 @@ if ( NULL == (samples = malloc(BUFFER_SIZE*sizeof(short))) )
|
||||
abort();
|
||||
}
|
||||
|
||||
while ( (lu=sf_read_short(sndf, samples, BUFFER_SIZE)) > 0 )
|
||||
{
|
||||
// fprintf(stderr, " LU = %5u\n", lu);
|
||||
|
||||
while ( (lu=sf_read_short(sndf, samples, BUFFER_SIZE)) > 0 ) {
|
||||
for (foo=0; foo<lu; foo+=2) {
|
||||
printf("%d %d\n", samples[foo], samples[foo+1]);
|
||||
}
|
||||
|
@ -11,11 +11,11 @@ program essai
|
||||
|
||||
call soundbrotch_version()
|
||||
|
||||
do n = 20, 85
|
||||
do n = 40, 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)
|
||||
write(0, '(" midi", I5, " -> ", F9.3, " Hz")') n, freq
|
||||
call sinw_burst2i(6, 44100, freq, freq, 0.9)
|
||||
call silence_burst2i(2900)
|
||||
end do
|
||||
|
||||
end program
|
||||
|
@ -1,4 +1,6 @@
|
||||
|
||||
!-
|
||||
! JUST A SMALL EXPERIMENT
|
||||
!-
|
||||
program panoramix
|
||||
|
||||
use soundbrotch
|
||||
@ -20,9 +22,8 @@ program panoramix
|
||||
exit
|
||||
endif
|
||||
|
||||
! *** NON WORKING CODE ***
|
||||
phi = real(nblus) / 44100.0
|
||||
ka = sin(phi)
|
||||
phi = real(nblus) / 9500.0
|
||||
ka = 0.500 + (sin(phi) * 0.4999)
|
||||
value = (real(left)+real(right)) / 2.05
|
||||
left = int(value * ka)
|
||||
right = int(value * (1.0-ka))
|
||||
|
16
SoundBrotching/runme.sh
Executable file
16
SoundBrotching/runme.sh
Executable file
@ -0,0 +1,16 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -e # trap on error
|
||||
|
||||
DATAFILE="essai.text"
|
||||
OUTWAV="essai.wav"
|
||||
make essai
|
||||
|
||||
./essai | tee $DATAFILE | c-tools/text2wav $OUTWAV
|
||||
|
||||
sndfile-spectrogram \
|
||||
--min-freq=30 --max-freq=2000 \
|
||||
--hann \
|
||||
$OUTWAV \
|
||||
1200 600 \
|
||||
spectrogram.png
|
@ -11,16 +11,14 @@ module soundbrotch
|
||||
|
||||
integer, private :: samplerate = 48000
|
||||
real, private :: diapason = 440.0
|
||||
contains
|
||||
contains
|
||||
! ---------------------------------------------------------
|
||||
subroutine soundbrotch_version ()
|
||||
write(0, '(1X,A)') "--- this is soundbrotch version alpha 666"
|
||||
write(0, '(1X,A)') "--- this is soundbrotch version alpha 667"
|
||||
write(0, *) "--- samplerate", samplerate
|
||||
write(0, *) "--- diapason ", diapason
|
||||
end subroutine
|
||||
! ---------------------------------------------------------
|
||||
! ---------------------------------------------------------
|
||||
|
||||
! ---------------------------------------------------------
|
||||
! premier essai, le prototype peut changer !
|
||||
|
||||
@ -33,8 +31,9 @@ module soundbrotch
|
||||
integer :: idx, left, right
|
||||
real :: coef
|
||||
|
||||
! XXX temporary dirty hack
|
||||
if (dst .NE. 6) then
|
||||
STOP ' OUPS!'
|
||||
STOP ' OUPS, NOT ON STDOUT!'
|
||||
endif
|
||||
|
||||
coef = (3.141592654 * 2.0) / real(samplerate)
|
||||
|
Loading…
Reference in New Issue
Block a user