Aller au menu - Aller au contenu

[Plan du site] Vous êtes ici --- > Le Site du Zéro > Les forums > Programmation > Autres langages > Atelier Cod'Art > Lecture du sujet

Atelier Cod'Art

Vous devez être inscrit pour pouvoir poster des messages

Page : Précédente  1  2  3  ...  10  11  12  13  14  Suivante
Auteur Message
0 visiteur sur ce sujet ()
Page : Précédente  1  2  3  ...  10  11  12  13  14  Suivante
Hors ligne Dark-Side # Posté le 16/03/2008 à 15:58:26
Groupe : Bannis
Reprise du dernier message de la page précédente :
Bah, si jamais ça aboutis il pourra toujours forker et faire un : [Cod`Zic] :-°
En tout cas c'est une assez bonne idée je trouve, je suis pressé de voir ce que ça va donner.
Hors ligne geenux # Posté le 16/03/2008 à 19:10:16
Vive Qt
Avatar
Groupe : Membres
En faisant de la musique au format midi je pense que ça doit pas être trop dur. A voir je testerais peut-être.
Hors ligne Kreeg # Posté le 17/03/2008 à 18:49:42
Je mangerais bien du GNU...
Avatar
Groupe : Bannis
Citation : ostream
J' ai eu une idée...

Est-ce que ça s' est déja fait d' étendre le principe du Cod'art à la musique? Des programmes génerant à l' aide d' algo des rythmes, mélodies, ...

En gros, un programme peut-il composer de la musique? (Puisqu' il sait dessiner...)
Pour ma part, je ne voit rien qui pourrait l' empecher.


Bien sur que ça se fait. Si tu as un µcontrolleur, un programmeur et un buzzer pas trop basique tu peux faire des trucs pas mauvais. Le mieux serait une puce musicale dont on disposait dans les vieilles consoles. Tu peux faire des trucs bien ouais, meme sur 8 bit.

Visite : http://8bitpeoples.com/
Édité le 17/03/2008 à 18:51:11 par Kreeg

Parti définitivement.

Raise the Titanic ! [Voir le topic]
En mode Hard Rock (ACDC/GnR/VR §) - Slash et J. Petrucci sont mes héros \o/
Attention (va) aux (sur) messages (ce) subliminaux, (site) camarade !
Une question sur OpenGL, un problème ? Rejoignez #opengl sur EpikNet !
La SDL pue grave, mais pas SFML !
Le modo qui ne connaissait pas Dimitri Borgur... :p


 
Hors ligne zulon # Posté le 18/03/2008 à 12:53:03
The shrieker shrieks.
Avatar
Groupe : Membres
Pas besoin de chercher aussi compliqué ! Un simple truc qui produirait un fichier MIDI ou WAV, c'est bien aussi :) .

Image utilisateur
 
Hors ligne Asi # Posté le 18/03/2008 à 16:40:37
Mangeur de Lapins Crus
Avatar
Modérateurs
Image utilisateur


Me suis un peu amusé avec la SFML...
Fichiers : Solution VS2k5 main.cpp functions.cpp functions.hpp
Exécutable w32 : CodArt.exe (Espace pour regénérer l'image, S pour sauvegarder le rendu en .png)
J'ai jamais fait ce genre de traitement donc le code doit être sale comme pas possible.
 
Hors ligne freecircus # Posté le 20/03/2008 à 16:16:45
"Se coucher tard nuit"
Avatar
Groupe : Membres
Yep :)

Une image produite par un projet pour la fac':
Image utilisateur
(j'ai un tout petit peu triché au niveau du contraste avec gimp)

Même si on peut y voir plus facilement un amas de cellule, l'idée à la base c'est de représenter un parc d'antennes relais (placées aléatoirement). Chaque ligne blanche représente la "frontière" entre deux antennes voisines.

Le code python (76 lignes): Secret (cliquez pour afficher)
Code : Python - Afficher / masquer les numéros de ligne
  1. #!/usr/bin/python
  2. # -*- coding:utf-8 -*-
  3.  
  4. from random import randrange
  5.  
  6. def distance_carre(x1,y1,x2,y2):
  7.   x = x2 - x1
  8.   y = y2 - y1
  9.   return x*x + y*y
  10.  
  11. def creer_tableau (h, l, val):
  12.     t = [[val]*l for i in range(h)]
  13.     return t
  14.  
  15. def tableau_relais(hauteur,largeur,nombre):
  16.     n = 0
  17.     tab = []
  18.     while n < nombre:
  19.         x = randrange(0,largeur)
  20.         y = randrange(0,hauteur)
  21.         if [x,y] not in tab:
  22.             tab += [[x,y]]
  23.             n+=1
  24.     return tab
  25.  
  26. def creer_image_pgm(t,nom):
  27.     f = open(nom,"w")
  28.     length = len(t)
  29.  
  30.     # écriture de l'en-tête
  31.     en_tete = ["P2",str(length)+' '+str(length),str(255)]
  32.     for dat in en_tete:
  33.         f.write(dat+'\n')
  34.  
  35.     # écriture des données
  36.     for tab in t:
  37.         for e in tab:
  38.             f.write(str(e)+' ')
  39.         f.write('\n')
  40.  
  41. def plus_proche_relais(relais,i,j):
  42.     dMin = distance_carre(j,i,relais[0][1],relais[0][0])
  43.     for r in relais:
  44.         d = distance_carre(j,i,r[1],r[0])
  45.         if d < dMin:
  46.             dMin = d
  47.     return dMin
  48.  
  49. def normaliser(tableau,hauteur,largeur):
  50.     dMax = max(max(tableau))
  51.     for i in range(hauteur):
  52.         for j in range(largeur):
  53.             tableau[i][j] = tableau[i][j] * 255 / dMax
  54.  
  55. #-------------------------------------------------------
  56. #-------------------------------------------------------
  57.  
  58. hauteur  = 200   # Edit : arf, carré uniquement, sinon il y a quelques modif à faire..
  59. largeur = 200
  60. nb_relais = 50
  61.  
  62.  
  63. relais = tableau_relais(hauteur,largeur,nb_relais)
  64.  
  65. # initialisation du tableau
  66. carte = creer_tableau(hauteur, largeur, 0)
  67.  
  68. # calcul de l'image de distance
  69. for i in range(hauteur):
  70.     for j in range(largeur):
  71.         # recherche du relais le plus proche du point
  72.         carte[i][j] = plus_proche_relais(relais,i, j)
  73.  
  74. normaliser(carte,hauteur,largeur)
  75.  
  76. creer_image_pgm(carte, "image.pgm");
Édité le 20/03/2008 à 16:18:48 par freecircus

Générateurs de labyrinthes, "concours" tout langages, participez! :)
ma présentation
 
Hors ligne Seeme # Posté le 21/03/2008 à 11:51:43
Gnap!
Avatar
Groupe : Membres
C'est des diagrammes de voronoï, c'est ça?
 
Hors ligne freecircus # Posté le 21/03/2008 à 23:26:04
"Se coucher tard nuit"
Avatar
Groupe : Membres
Oui.
je ne savais pas que ça portait un nom merci :)
Du coup j'ai regardé un peu ce qu'il se faisait en la matière, c'est déjà plus mathématiques.

Générateurs de labyrinthes, "concours" tout langages, participez! :)
ma présentation
 
Connecté candide # Posté le 23/03/2008 à 00:43:09
"In code we trust"
Avatar
Groupe : Membres
Citation : freecircus

Une image produite par un projet pour la fac':

Bien joli.

Citation : Seeme
C'est des diagrammes de voronoï, c'est ça?

Tien oui, je n'avais jamais regardé mais c'est assez facile et amusant, bonne idée de projet.


 
Hors ligne Blackhole # Posté le 23/03/2008 à 12:42:45
Bear, and forbear
Avatar
Groupe : Membres
Bonjour à tous ;) !

Comme il faisait pas beau dehors, je me suis amusé avec un petit algo' pas bien méchant, qui produit des images assez ... inattendu ;) !
Alors je vous préviens : c'est pas très beau :p

Image utilisateur Image utilisateur Image utilisateur


Image utilisateur Image utilisateur Image utilisateur


Image utilisateur


Ah ben oui, je vous avais prévenu ^^ !
Voici le code. Il n'y a que la ligne coloré qui change en fonction des images.

Code : PHP - Afficher / masquer les numéros de ligne
  1. <?php
  2. function getLenght($x1, $y1, $x2, $y2)
  3. {
  4.         $resultat = sqrt(pow($x1-$x2, 2) + pow($y1-$y2, 2));
  5.         return $resultat;
  6. }
  7.  
  8. define('TAILLE_IMAGE', 300);
  9.  
  10. $image = imageCreateTrueColor(TAILLE_IMAGE, TAILLE_IMAGE);
  11.  
  12. $y = 1;
  13. while ($y <= TAILLE_IMAGE)
  14. {
  15.         $x = 1;
  16.         while ($x <= TAILLE_IMAGE)
  17.         {
  18.                 $pointX = ($x*$y)%(abs($x-$y)+1);
  19.                 $pointY = ($x*$y)%(abs($x-$y)+1);
  20.                
  21.                 imageSetPixel($image, $x-1, $y-1, imageColorAllocate($image, 200, min(getLenght($x-1, $y-1, $pointX-1, $pointY-1), 255), 10));
  22.                
  23.                 $x++;
  24.         }
  25.         $y++;
  26. }
  27. ?>
Édité le 23/03/2008 à 12:44:12 par Blackhole

- Le moteur de templates le plus rapide, le plus pratique et le plus effiace ? Par ici !
- N'oubliez pas le de marquer votre message comme résolu !
- Pour trouver une aiguille dans une botte de foin, on met le feu à la botte et on passe un aimant dans les cendres.
 
Hors ligne Moff Tigriss # Posté le 09/04/2008 à 02:50:54
Groupe : Membres
Salut ici :)
Je fais régulièrement le net pour grapiller des infos sur les fractales de type Markus-Lyapunov, et c'est avec surprise que je suis tombé sur ce topic !

Je travaille depuis quelques temps sur un générateur de Lyapunov en C, pas très simple compte tenu du fait que c'est ma base de travail pour apprendre le C, mais très instructif.

Un de mes premiers essais a donné ça :
[Clic !]

Le code est assez bordélique, mais fonctionne assez bien.

Code : C - Afficher / masquer les numéros de ligne
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include <stdbool.h>
  4. #include <math.h>
  5. #include <string.h>
  6.  
  7. // gcc lyapunov.2.c -o lyap -O3 -pipe -march=athlon-xp -mfpmath=sse,387 -lm -Wall -ffast-math -fomit-frame-pointer
  8. // Efficacite maximale
  9. // Tester avec SSE
  10.  
  11. // Calcul d'un pixel de l'image finale
  12. double lyapunov_exponent(double a, double b, char *sequence, double xStart, int warmUp, int maxIterations)
  13. {
  14.         int ActualIterations;
  15.         int exclude = 0;
  16.         int k;
  17.         double sum = 0.0;
  18.         double temp = 0.0;
  19.         double x = xStart;
  20.         double a2 = 2.0 * a;
  21.         double b2 = 2.0 * b;
  22.         double log2 = log(2);
  23.         double NegativeInfinity = -1E10;
  24.         int s_max = strlen(sequence);
  25.         int s_idx = 0;
  26.  
  27.         // Warmup operations
  28.         for (k = 1; k <= warmUp; k++)
  29.         {
  30.                 if (sequence[s_idx] == 'a')
  31.                 {
  32.                         x = a * x * (1.0-x);
  33.                 } else {
  34.                         x = b * x * (1.0-x);
  35.                 }
  36.  
  37.                 s_idx = (s_idx + 1) % s_max;
  38.         }
  39.  
  40.         // Active operations
  41.         s_idx = 0;
  42.  
  43.         for (k = 1; k <= maxIterations; k++)
  44.         {
  45.                 if (sequence[s_idx] == 'a')
  46.                 {
  47.                         x = a * x * (1.0-x);
  48.                         temp = fabs(a - a2 * x);
  49.                 } else {
  50.                         x = b * x * (1.0-x);
  51.                         temp = fabs(b - b2 * x);
  52.                 }
  53.  
  54.                 if (temp > 0.0)
  55.                 {
  56.                         sum = sum + log(temp)/log2;
  57.                 } else {
  58.                         exclude = exclude + 1;
  59.                 }
  60.  
  61.                 s_idx = (s_idx + 1) % s_max;
  62.         }
  63.  
  64.         ActualIterations = maxIterations - exclude;
  65.  
  66.         if (ActualIterations == 0)
  67.         {
  68.                 return NegativeInfinity;
  69.         } else {
  70.                 return sum/ActualIterations;
  71.         }
  72. }
  73.  
  74. void usage(char *s)
  75. {
  76.         fprintf(stderr, "Usage: %s hauteur largeur warm_iterations work_iterations x y pas max_color_chaos max_color_stability sequence\n", s);
  77.         exit(EXIT_FAILURE);
  78. }
  79.  
  80. int main(int argc, char *argv[])
  81. {
  82.  
  83.         if (argc != 11)
  84.         {
  85.                 usage(argv[0]);
  86.         }
  87.  
  88.         // Largeur/hauteur de l'image
  89.         int hauteur_image = atof(argv[1]); //600
  90.         int largeur_image = atof(argv[2]); //600
  91.  
  92.         // Nombres d'itérations de stabilisation/calcul
  93.         int warm_iterations = atof(argv[3]); //2000
  94.         int active_iterations = atof(argv[4]); //5000
  95.  
  96.         int j, i;
  97.         double pas = atof(argv[5]); //0.04/600;
  98.         double x_debut = atof(argv[6])-(pas*(hauteur_image/2)); //3.84
  99.         double y_debut = atof(argv[7])-(pas*(largeur_image/2)); //3.84
  100.         double couleur1_max = atof(argv[8]); //-3.4127583527899; //stable
  101.         double couleur2_max = atof(argv[9]); //0.64447706496986; //chaos
  102.         double couleur1_max255 = couleur1_max/255;
  103.         double couleur2_max255 = couleur2_max/255;
  104.         double temp;
  105.         int final;
  106.  
  107.         printf("P2\n%d %d\n255\n", hauteur_image, largeur_image);
  108.  
  109.         for (j = hauteur_image; j > 0; j--)
  110.         {
  111.                 for (i = 1; i <= largeur_image; i++)
  112.                 {
  113.                         temp = lyapunov_exponent(x_debut+j*pas, y_debut+i*pas, argv[10], 0.5, warm_iterations, active_iterations);
  114.                         if (temp < 0)
  115.                         {
  116.                                 final = floor( fabs(temp/couleur1_max255) );
  117.                         } else {
  118.                                 final = floor( temp/couleur2_max255 );
  119.                         }
  120.  
  121.                         if (final > 255)
  122.                         {
  123.                                 final = 255;
  124.                         }
  125.  
  126.                         printf("%d\n", 255 - final);
  127.                 }
  128.         }
  129.         return 0;
  130. }


Pour la compilation, c'est donné au début du code, et pour le lancer en console, c'est ça :
Citation :
./lyap 600 600 2000 5000 0.000066667 3.84 3.84 -3.4127583527899 0.64447706496986 bbaba > lyapunov.pgm


Les paramètres sont encore totalement manuels, je me base sur les chiffres fournit par un autre générateur. Mais c'est bientôt terminé.

N'ayant pas encore abordé la visualisation et la gestion des fichiers, je détourne le flux de sortie vers un fichier image de type PGM, qui a pour particularité, à part l'entête, de n'être qu'une liste de nuances de gris codés entre 0 et 255. C'est en nuances de gris, peu de niveaux, mais ça marche super bien pour un début :)
(Vous remarquerez les tentatives d'insérer un algo de coloration, mais c'était un peu hors de portée à l'époque)

J'ai fais un rendu de très grande taille il y a quelques temps, 12k par 12k pixels. Le jpg fait 70 mo, pour 23 heures de calcul...

Pour les suicidaires :
Citation :
./lyap 12000 12000 2000 5000 0.000003333 3.84 3.84 -3.4127583527899 0.64447706496986 bbaba > lyapunov.pgm


Si quelqu'un a une idée sur comment mettre cette image en ligne, je suis intéressé !

Par contre, les limitations de précision des calculs me laissaient un peu dubitatifs sur la qualité du rendu final. En effet, il a au moins 2000 itérations, souvent plus, largement assez pour laisser les erreurs d'arrondis se propager. J'ai donc commencé un recodage avec une librairie dédiée aux calculs en précision arbitraire (GMP). C'est nettement plus long, mais j'attend avec impatience d'avoir assez de pixels pour comparer avec le rendu du code original !
J'espère pouvoir observer une évolution sur le "bruit de fond" visible sur les rendus, voir l'apparition de détails plus fins.

Voilà ! Je tiens à saluer le travail visible sur ce topic, certains se sont surpassés, et le résultat très bon :o
Hors ligne freecircus # Posté le 11/04/2008 à 16:05:47
"Se coucher tard nuit"
Avatar
Groupe : Membres
c'est très joli, du coup j'ai cherché quelques infos sur ces fractales, avec de la couleur c'est terrible :)
Par contre la compexité de l'algo semble assez énorme.


Une petite image en passant (un peu moche et 'hypnotique') :

Image utilisateur

Le code ? pour l'instant il n'y en a pas, c'est un bug que je suis entrain d'essayer de reproduire, ^^
Je bidouillais aussi avec du PGM sur le code que j'ai posté plus haut puis... voilà.
Pas beau l'informatique :p

Générateurs de labyrinthes, "concours" tout langages, participez! :)
ma présentation
 
Hors ligne Linktim # Posté le 22/04/2008 à 17:08:04
The Other Side
Avatar
Groupe : Membres
Voilà un truc moche pour changer mais pas très compliqué à faire :
Image utilisateur
Code : Python
1
2
3
4
5
6
7
8
import turtle as t

t.speed('fastest') 
i = 0
while i != 200:
  t.forward(50+i) // on augment la taille de i a chaque fois
  t.left(90) // on fait des angles droits pour avoir un carre
  i += 1
Édité le 24/04/2008 à 15:13:16 par Linktim
 
Hors ligne Kreeg # Posté le 22/04/2008 à 18:52:40
Je mangerais bien du GNU...
Avatar
Groupe : Bannis
shame.

Parti définitivement.

Raise the Titanic ! [Voir le topic]
En mode Hard Rock (ACDC/GnR/VR §) - Slash et J. Petrucci sont mes héros \o/
Attention (va) aux (sur) messages (ce) subliminaux, (site) camarade !
Une question sur OpenGL, un problème ? Rejoignez #opengl sur EpikNet !
La SDL pue grave, mais pas SFML !
Le modo qui ne connaissait pas Dimitri Borgur... :p


 
Hors ligne Zopieux # Posté le 24/04/2008 à 09:11:31
it… it can't be true!
Avatar
Validateurs
Raaah, il a osé le poster :-° ! T'aurais pu au moins changer en i += 1 quoi. Big shame.
 
Hors ligne Knarf2 # Posté le 07/05/2008 à 01:29:19
Free the Lemmings
Avatar
Groupe : Membres
Mappez n'importe quelle fonction sur une image, en vous démerdant pour que ses valeurs de retour soient comprises entre 0 et 255 pour être rendu simplement.

Maintenant ajoutez une palette qui fera correspondre ses valeurs à d'autre couleurs, mettons un dégradé qui se recoupe entre le début et la fin, généré en faisant une rotation complète dans un espace de couleurs HSV. Ajouté à cela un décalement des correspondances valeur/couleurs de cette palette en fonction du temps et vous obtenez une animation fluide et moins cher qu'un sugus® §

Ici quelques gifs que j'ai peiné à rendre léger (ki pr le rendu image par image de 164Mo ?) et donc inévitablement moche (merci imagemagick pour l'un comme pour l'autre) :

Image utilisateur
Image utilisateur
Image utilisateur
Image utilisateur
Image utilisateur
Image utilisateur


Ici le programme C (+ SDL) où on peut les faire défilé en temps réel et plus jolie et encore plus fluide. Sinon génial ton truc Linktim :-°

42 personnes ont maintenant les yeux qui fondent.

< Absent pour un certain temps... Ou bien un temps incertain ? (étude, internat, toussa) >

< Image utilisateur >
< GU/MU/CS@ d- s: a--- C+++ U+ P++ L++ E>+ W++ N+ o? !K? w->-- !O? M- !V PS>+ !PE !Y? PGP- t 5- X R tv- b+ !DI--- D+ G e-? h!-- r--- y-- >
< site >

 
Hors ligne zulon # Posté le 07/05/2008 à 07:52:27
The shrieker shrieks.
Avatar
Groupe : Membres
Wow pas mal :D
Heureusement que tu es là pour relancer Cod'Art, plus grand monde n'est actif sinon :-°

Image utilisateur
 
Hors ligne geenux # Posté le 07/05/2008 à 16:02:04
Vive Qt
Avatar
Groupe : Membres
Je le serais de nouveau dès que j'aurais fini le programme que j'ai commencé.
Sympa les animations.
Hors ligne Knarf2 # Posté le 24/05/2008 à 12:18:43
Free the Lemmings
Avatar
Groupe : Membres
Pour revenir sur le truc de la musique, je suis tombé sur ça alors que je trainais sur /prog/ de 4chan :
Code : C
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

#define DO   262
#define RE   294
#define MI   330
#define FA   349
#define SOL  392
#define LA   440
#define SI   494
#define DO2  523
#define RE2  587
#define MI2  660
#define FA2  698
#define SOL2 784
#define LA2  880

#define RATE 8000
#define SIZE 8
#define LENGTH 0.3

char *buf;
int satori[] = {FA, SOL, LA, DO2, SI, SI, RE2, DO2, DO2, FA2, MI2, FA2, DO2, LA, FA, SOL, LA, SI, DO2, RE2, DO2, SI, LA, SOL, LA, FA, MI, FA, SOL, DO, MI, FA, 0};

int main(void){

  int i,j,k;
  int dsp;
  int len = RATE*LENGTH;

  buf = (char*)malloc(sizeof(char)*len);

  dsp = open("/dev/dsp", O_RDWR);
  if(dsp < 0){
    fprintf(stderr, "Can't open /dev/dsp.\n");
    exit(1);
  }

  for(j=0; satori[j] != 0; j++){

    for(i=0; i<len; i++){
      buf[i] = 127*sin(satori[j]*2*M_PI*(i)/RATE)+127;
    }
   
    write(dsp, buf, len);
  }
  return 0;
}



Ca utilise /dev/dsp donc c'est plutôt réservé aux gens sous *nix.


Il y a aussi un autre truc en perl moche qui revient souvent :
Code : Perl
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#!/usr/bin/perl
# EXPERT PERL MUSICIAN

# RUN: $ perl this_file
open STDOUT, '>', '/dev/dsp'; # redirect to your sound device
while (1) {
$t="fsdgggg";
for($i=0; $i<1000; $i++) { print "$t" }
$t="fsdggggg";
for($i=0; $i<500; $i++) { print "$t".($i%4==0?"g":"") }
$t="fsdgggg";
for($i=0; $i<600; $i++) { print "$t" }
$t="fsdgggg";
for($i=0; $i<1000; $i++) { print "$t" . ($i%2==0?"g":"") }
$t="fsdggggggg";
for($i=0; $i<700; $i++) { print "$t" . ($i%1==0?"g":"") }
$t="fsdgggg";
for($i=0; $i<250; $i++) { print "$t" }
$t="fsdgggg";
for($i=0; $i<240; $i++) { print "$t" . ($i%2==0?"g":"") }
$t="fsdggggg";
for($i=0; $i<230; $i++) { print "$t".($i%4==0?"g":"") }
$t="fsdgggggg";
for($i=0; $i<230; $i++) { print "$t".($i%4==0?"g":"") }
$t="fsdggggg";
for($i=0; $i<500; $i++) { print "$t".($i%4==0?"g":"") }
$t="fsdg";
for($i=0; $i<700; $i++) { print "$t" .($i%2==0?"ggg":"") }
$t="fsdgggg";
for($i=0; $i<1000; $i++) { print "$t" . ($i%2==0?"g":"") }
$t="fsdggggggg";
for($i=0; $i<700; $i++) { print "$t" . ($i%1==0?"g":"") }
$a = 2;
while($a--) {
$t="fsdggggg";
for($i=0; $i<450; $i++) { print "$t".($i%4==0?"g":"") }
$t="fsdgggggg";
for($i=0; $i<220; $i++) { print "$t".($i%4==0?"g":"") }
$t="fsdgggggg";
for($i=0; $i<210; $i++) { print "$t".($i%2==0?"ggg":"") }
$t="fsdgggggg";
for($i=0; $i<160; $i++) { print "$t".($i%2==0?"gggg":"") }
$t="fsdgggggg";
for($i=0; $i<150; $i++) { print "$t".($i%4==0?"gggggggg":"") }
$t="fsdgggggg";
for($i=0; $i<170; $i++) { print "$t".($i%2==0?"gggg":"") }
$t="fsdgggggg";
for($i=0; $i<200; $i++) { print "$t".($i%2==0?"ggg":"") }
$t="fsdgggggg";
for($i=0; $i<270; $i++) { print "$t".($i%2==0?"gggg":"") }
last unless $a;
$t="fsdgggg";
for($i=0; $i<500; $i++) { print "$t" .($i%2==0?"g":"")}
$t="fsdgggggg";
for($i=0; $i<400; $i++) { print "$t"; }
$t="fsdgggggg";
for($i=0; $i<400; $i++) { print "$t".($i%2==0?"gggg":"") }
}
$t="fsdgggg";
for($i=0; $i<1300; $i++) { print "$t" .($i%2==0?"g":"")}
}


< Absent pour un certain temps... Ou bien un temps incertain ? (étude, internat, toussa) >

< Image utilisateur >
< GU/MU/CS@ d- s: a--- C+++ U+ P++ L++ E>+ W++ N+ o? !K? w->-- !O? M- !V PS>+ !PE !Y? PGP- t 5- X R tv- b+ !DI--- D+ G e-? h!-- r--- y-- >
< site >

 
Connecté candide # Posté le 25/05/2008 à 23:49:19
"In code we trust"
Avatar
Groupe : Membres
Citation : Knarf2

Ici le programme C (+ SDL)

Citation : Zulon
Wow pas mal :D


Plutôt oui, d'autant le résultat est spectaculaire pour assez peu de code C.


 
Connecté kedare # Posté le 26/05/2008 à 00:30:14
I Hate PHP
Avatar
Groupe : Membres
Citation : gnomnain
Quelques images que j'ai généré :

Une spirale:
Image utilisateur
Code : Autre
1
2
3
4
5
6
7
8
9
10
startshape main
 
rule main {
20* {r 18} spiral {}
}
 
rule spiral {
CIRCLE {}
spiral { s 0.9875 r 1 x +1}
}



c'est quoi ce langage ?

"Toute technologie suffisamment avancée est indifférenciable de la magie" Arthur C. Clarke, “Profil de l’avenir”, 1961
Pseudo PSN: Kedare
Code Mii: 8684 6147 7730 6877

dev.Kedare Blog
 
Hors ligne gnomnain # Posté le 26/05/2008 à 08:48:59
huh ?
Avatar
Groupe : Membres
kedare> j'en parle ici : http://www.siteduzero.com/forum-83-164 [...] html#r2202559

xmonad user - j'utilise haskell - et ocaml - pourquoi je n'aime pas php
Quelques tutos à lire : récursivité - typage - algorithmique

"Software and cathedrals are much the same - first we build them, then we pray."
 
Hors ligne zulon # Posté le 26/05/2008 à 16:28:16
The shrieker shrieks.
Avatar
Groupe : Membres
OMG knarf, trop fort la musique :D . Encore une fois, tu sauves ce topic de la perdition :-° .
Mais je ne comprends pas comment ça marche: écrire f, g, s ou d correspond à des notes précises o_O ?

Image utilisateur
 
Hors ligne diacred # Posté le 27/05/2008 à 07:07:21
Pastafarianism rules.
Avatar
Groupe : Membres
Marche pas le truc de musique.

Code : Console
music.c: In function «main":
music.c:44: attention : incompatible implicit declaration of built-in function «sin"
music.c:44: erreur: «M_PI" undeclared (first use in this function)
music.c:44: erreur: (Each undeclared identifier is reported only once
music.c:44: erreur: for each function it appears in.)


Je vois pas ce qu'est cette variable, donc je peux pas corriger :p

Clavier Qwerty, pas d'accents. Donc... Désolé pour les fautes.
Capoeira... is life :), site de l'assoc' ©Diacred ... L'amour est la principale cause de l'achat d'alcool :-°
... Et s'il t'arrive de croiser Alice, Agnès ou Cassandra; rappelle leur que leur nom rime avec syphilis, herpès et sida.
 
Hors ligne 42 ! # Posté le 27/05/2008 à 07:22:08
Groupe : Bannis
#include <math.h> , et link avec libm.a.
Hors ligne zulon # Posté le 27/05/2008 à 12:43:47
The shrieker shrieks.
Avatar
Groupe : Membres
Pas besoin de rajouter l'include, par contre -lm à la fin de la logne de commande (linker avec libm, la bibliothèque maths du C) arrange tout.

Image utilisateur
 
Hors ligne Knarf2 # Posté le 28/05/2008 à 17:39:59
Free the Lemmings
Avatar
Groupe : Membres
Citation : Zulon
OMG knarf, trop fort la musique :D . Encore une fois, tu sauves ce topic de la perdition :-° .
Mais je ne comprends pas comment ça marche: écrire f, g, s ou d correspond à des notes précises o_O ?

Je peux pas vraiment de dire le comment du pourquoi (comme je l'ai dit, le code vient de /prog/ @ 4chan, qui est un endroit dit plutôt douteux :p ..) mais apparemment les caractères sont codés par certains nombres qui produisent les différentes notes. En affichant le même caractère un certain nombre de fois (donc pendant une certaine durée), tu fais durer la note.




< Absent pour un certain temps... Ou bien un temps incertain ? (étude, internat, toussa) >

< Image utilisateur >
< GU/MU/CS@ d- s: a--- C+++ U+ P++ L++ E>+ W++ N+ o? !K? w->-- !O? M- !V PS>+ !PE !Y? PGP- t 5- X R tv- b+ !DI--- D+ G e-? h!-- r--- y-- >
< site >

 
Hors ligne zulon # Posté le 28/05/2008 à 17:48:11
The shrieker shrieks.
Avatar
Groupe : Membres
Je vois. J'vais me renseigner, ça me paraît bizarre tout ça :-° .

Image utilisateur
 
Hors ligne geenux # Posté le 28/05/2008 à 19:39:31
Vive Qt
Avatar
Groupe : Membres
Non ce n'est pas bizzare, c'est juste comme ça que marche l'envoi des sons bruts. Pour savoir exactement à quoi correspondent les lettres, il suffit de se documenter sur /dev/dsp
Hors ligne diacred # Posté le 02/06/2008 à 00:18:04
Pastafarianism rules.
Avatar
Groupe : Membres