begin process at 2012 05 27 14:46:36
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Multimédia

 > 'COMPOSITEUR' DE MORCEAUX (PAR FICHIER OU CONSOLE) EN 'SCRIPT' AVEC LA FONCTION BEEP()

'COMPOSITEUR' DE MORCEAUX (PAR FICHIER OU CONSOLE) EN 'SCRIPT' AVEC LA FONCTION BEEP()


 Information sur la source

Note :
Aucune note
Catégorie :Multimédia Classé sous :beep, musique, stream Niveau :Débutant Date de création :28/03/2006 Date de mise à jour :28/03/2006 22:29:19 Vu / téléchargé :5 825 / 386

Auteur : Bietz

Ecrire un message privé
Commentaire sur cette source (8)
Ajouter un commentaire et/ou une note

 Description

utilisation de la fonction Beep de <windows.h> pour jouer des petits morceaux (diatoniques pour l'instant)
le clavier correspond aux touches du piano: 'q' est un sol --> 'j': fa dièse, 'k': sol à l'octave
p: pause. Dans un morceaux, vous allez placer la lettre de la note et la durée (1 == 1 temps, c'est à dire 100 ms)

Vous pouvez taper votre morceau directement dans la console, ou dans le fichier "music.txt". 'd' va jouer une démo
Amusez-vous!!! (vous êtes libres d'enrichir le programme)

Source

  • //code réalisé par Alberto Bietti
  • #include <iostream>
  • #include <fstream>
  • #include <sstream>
  • #include <windows.h>
  • using namespace std;
  • //fréquences des notes
  • enum {SOL=200, LA=220, SI=250, DO=265, RE=300, MI=340, FA_DIESE=380, SOL2=400, PAUSE=0};
  • int tofreq(char ch) //retourne la fréquence d'un note avec le caractère donné
  • {
  • switch(ch)
  • {
  • case 'Q': case 'q': return SOL;
  • case 'S': case 's': return LA;
  • case 'D': case 'd': return SI;
  • case 'F': case 'f': return DO;
  • case 'G': case 'g': return RE;
  • case 'H': case 'h': return MI;
  • case 'J': case 'j': return FA_DIESE;
  • case 'K': case 'k': return SOL2;
  • case 'P': case 'p': return PAUSE;
  • default: return 0;
  • }
  • }
  • int tonb(char ch)
  • {
  • switch(ch)
  • {
  • case '1': return 1;
  • case '2': return 2;
  • case '3': return 3;
  • case '4': return 4;
  • case '5': return 5;
  • case '6': return 6;
  • case '7': return 7;
  • case '8': return 8;
  • case '9': return 9;
  • default: return 1;
  • }
  • }
  • int main()
  • {
  • istream* stream; //pointeur vers la input stream principale
  • char res;
  • cout <<"load from file ('a'), demo ('d') or input (else)? "; //choix de la source
  • cin >> res;
  • if (res == 'a') stream = new ifstream("music.txt"); //source: fichier 'music.txt'
  • else if (res == 'd') stream = new istringstream( //source: démo: frère Jacque!! :
  • "Q2S2D2Q2Q2S2D2Q2D2F2G4D2F2G4G1H1G1F1D2Q2G1H1G1F1D2Q2S2G2Q4S2G2Q4");
  • else stream = &cin; //source: entrée par l'utilisateur dans la console
  • char ch;
  • int freq; //fréquence
  • int dur; //durée
  • while (stream->get(ch))
  • {
  • freq = tofreq(ch);
  • if (ch != '\n') {
  • stream->get(ch);
  • dur = tonb(ch);
  • }
  • else dur = 1;
  • Beep(freq, 100*dur); //faire un Beep
  • }
  • system("pause");
  • return 0;
  • }
//code réalisé par Alberto Bietti

#include <iostream>
#include <fstream>
#include <sstream>
#include <windows.h>

using namespace std;

//fréquences des notes
enum {SOL=200, LA=220, SI=250, DO=265, RE=300, MI=340, FA_DIESE=380, SOL2=400, PAUSE=0};

int tofreq(char ch)    //retourne la fréquence d'un note avec le caractère donné
{
     switch(ch)
     {
               case 'Q': case 'q': return SOL;
               case 'S': case 's': return LA;
               case 'D': case 'd': return SI;
               case 'F': case 'f': return DO;
               case 'G': case 'g': return RE;
               case 'H': case 'h': return MI;
               case 'J': case 'j': return FA_DIESE;
               case 'K': case 'k': return SOL2;
               case 'P': case 'p': return PAUSE;
               default: return 0;
     }                          
}

int tonb(char ch)
{
    switch(ch)
    {
              case '1': return 1;
              case '2': return 2;
              case '3': return 3;
              case '4': return 4;
              case '5': return 5;
              case '6': return 6;
              case '7': return 7;
              case '8': return 8;
              case '9': return 9;
              default: return 1;
    }
}
              


                                
int main()                      
{
    istream* stream;            //pointeur vers la input stream principale
    
    char res;
    cout <<"load from file ('a'), demo ('d') or input (else)? "; //choix de la source
    cin >> res;
    if (res == 'a') stream = new ifstream("music.txt");       //source: fichier 'music.txt'
    else if (res == 'd') stream = new istringstream(          //source: démo: frère Jacque!! :
                         "Q2S2D2Q2Q2S2D2Q2D2F2G4D2F2G4G1H1G1F1D2Q2G1H1G1F1D2Q2S2G2Q4S2G2Q4");
    else stream = &cin;  //source: entrée par l'utilisateur dans la console
    
    char ch;
    int freq;                      //fréquence
    int dur;                       //durée
    while (stream->get(ch))
    {
          freq = tofreq(ch);
          if (ch != '\n') {
             stream->get(ch);
             dur = tonb(ch);
          }
          else dur = 1;
          Beep(freq, 100*dur);     //faire un Beep
           
          
    }

    system("pause");
    return 0;
}

 Conclusion

Pour changer la source du script du morceau, j'ai utilisé un pointeur vers une input stream, qui pointera soit vers un cin classique, soit vers une ifstream (input file stream) soit vers une istringstream (la source étant une chaine de caractères)

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

28 mars 2006 22:29:20 :
.exe renommé en .ex

 Sources du même auteur

Source avec Zip Source avec une capture ROTATION PYRAMIDE 3D COLORÉE - OPENGL - GLUT

 Sources de la même categorie

Source avec Zip ADAPTER LES TEMPS DE SUBTITLES DE SOUS TITRAGE ENTRE DEUX LA... par berrami
Source avec Zip Source avec une capture DÉTECTION DE VISAGE (YEUX, NEZ, BOUCHE) AVEC OPENCV EN TEMPS... par MadM@tt
Source avec Zip Source avec une capture GÉNÉRATEUR FM EXPÉRIMENTAL par tontonCD
Source avec Zip LECTEUR MULTIMÉDIA par omegatou
Source avec Zip IMPLÉMENTATION D'UN ALGORITHME DE COMPRESSION/DECOMPRESSION ... par eemikhm

 Sources en rapport avec celle ci

Source avec Zip LECTEUR MULTIMÉDIA par omegatou
Source avec Zip ENCORE UN TEXTE TO MORSE.... par pdc_666
Source avec Zip BEEPER, UTILISER UN HOOK CLAVIER INTÉGRÉ À L'EXÉCUTABLE ET G... par ndubien
Source avec Zip Source avec une capture JUKE-BOX BEEPS par ndubien
Source avec Zip TRANCE MUSIC par magma

Commentaires et avis

Commentaire de satellite34 le 28/03/2006 21:26:32

bonjour,

source sans grand intérêt au niveau programmation, mais l'idée est bien farfelue, étant branché zik, ca me fait vraiment délirer comme idée, mdr.

Continue et essaye de ne pas utiliser le beep mais des vrais sons, ca pourrait faire un synthétiseur a la fin pkoi pas.

je vais suivre l'évolution des choses.

@+tard

Commentaire de Bietz le 28/03/2006 21:40:19

oui, pourquoi pas, mais je m'y connais pas très bien en sons pour l'instant!!!
T'aurais quelquechose à me suggérer pour commencer?
@+

Al

Commentaire de satellite34 le 28/03/2006 21:50:08

Ben pourquoi pas avoir un son de piano pur a 440Hz ( qui est la base frequency si je me souviens bien ---> pour savoir, vas dans cubase sur un VST synthé );

Ensuite, ben meme principe, changement de la frequence de la tonalité;

Pkoi pas un petit rack d'effets avec fmod, enfin, aprés c'est infini....

bonne prog, tiens nous au courant...

Commentaire de BruNews le 28/03/2006 22:19:41 administrateur CS

int tonb(char ch)
{
  if(ch >= '1' && ch <= '9') return (ch - 48);
  else return 1;
}

SVP, retirer cet ENORME exe du zip, inutile car détruit au téléchargement.

Commentaire de Kirua le 29/03/2006 14:24:42

+1

ce programme est trippant :)

rien de plus intelligent à dire, si ce n'est de faire +1 à la remarque de BruNews sur le tonb().

Commentaire de max12 le 29/03/2006 17:00:39 administrateur CS

Regarde les API sur la sortie et l'entrée de son sous Windows, tu peux écrire un buffer directement dedans pour sortir les sons que tu veux (mais j'y connais rien, je suis donc pas la référence ! (quoique je compte bien m'y mettre un moment donné, un NetMeeting Like ferait un beau projet de fin de session)

A+

Commentaire de kishkaya le 07/04/2006 14:33:42

ou tu overclocke le wirestream du beep subsonique. Ensuite t'attques la sortie wireless avec un distrupteur dimensionnel et tu rebbot en compilant dans le kernel32.
Ensuite t'upload a 128MGBPSP sur le noyau !

Enjoy

Commentaire de Kirua le 08/04/2006 00:55:11

subsonique et disrupteur dimensionnel sont les éléments qui m'ont mis la puce à l'oreille, sans compter que ton poste est arrivé à la seconde 42 ^^.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

pb avec le linker (FMOD) [ par kyript ] Bonjour a tous voila mon pb je suis debutant et j'ai descidé de mettre a FMOD mon pb c'est que quand je veut compiler il me fait un linker erro mp3 avec fmod [ par deck_bsd ] Bonjour a tous, Voila j'ai un problème , je veu lire un mp3 avec fmod mais cela ne fonctionne pas, aucune faute a la compilation mais lorsque je charg windowsForms et fmod [ par ygoth ] Bonsoir , j'essaye actuellement de faire un petit programme en windows forms avec visual studio 2008 qui aurais pour but (pour l'instant ) de lire une [HTML]video et musique bien lu avec internet explorer mais pas avec firefox 3 [ par imanseb ] salutj'ai crée un site www.imansebmusic.shashamane.fr , dans lequelle les gens peuvent ecouter mes productions et voir les film de mes enregistrement Stream de fichier [ par warmup1992 ] Bonjour à tous, je sais pas trop si je suis dans la bonne section mais bhon si je me suis trompé veuillez me pardonner ^^ :) Enfaite je post pour avo Mince ! Mon flux fstream fonctionne très mal [ par Davy974 ] Bonjour à tour, mon code ne fonctionne pas très bien ! Sauriez vous dire pourquoi ! ------------fstream.h----------------------- #ifndef CORE_FSTREA Musique multi-canaux [ par Rogue2575 ] Bnnjour, Je possède une carte son à 8 canaux soit 4 sorties stéréos. J'aimerais trouver une source en C++ qui permette de lire un fichier mp3 différen Problème d'écriture en boucle donnant des fichiers vides [ par Asmodeean ] Bonjour à vous tous, Je suis actuellement en train de programmer un logiciel pour du transfert de rayonnement et je butte sur pas mal de problèmes. L éliminer les points et les virgules d'un fichier texte [ par mervat ] ce programme permet d'éliminer tous les points et les virgules d'un fichier texte et met le résultat dans un autre fichier texte, il est bien exécutab un programme bizarre [ par mervat ] bonjour, ce programme permet d'éliminer quelques caractères d'un fichier texte et metle résultat dans un autre fichier texte; il est exécutable mais i


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,718 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales