Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

MUSICMAKER


Information sur la source

Catégorie :Multimedia Classé sous : musique Niveau : Débutant Date de création : 27/06/2005 Date de mise à jour : 02/11/2005 21:48:57 Vu / téléchargé: 4 335 / 476

Note :
9 / 10 - par 3 personnes
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (24)
Ajouter un commentaire et/ou une note


Description

Cliquez pour voir la capture en taille normale
Bah c'est un petit programme pour creer de la musique tres basique.
J'avais vu un programme qui ressemblait a ca en Dark Basique et j'ai voulu voir ca en Delphi
Et sincerement c'est bien plus dur en Delphi pour jouer plusieurs sons en meme temps.

 

Conclusion

Je ne sais pas comment(Enfin j'avais trouve 1 methode mais je l'ai pas mise,elle etait Bcp trop longue)
faire pour enregister(pas en Wav mais enregister la position des checkbox selectionnees).

La capture n'est pas la derniere version de ce programme mais j'ai des problemes avec paint(Et oui,qqun l'utilise encore!!)

 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

29 juin 2005 00:51:05 :
Petite MAJ: J'ai juste ajoute les fonctions de Japee qui sont : - Pouvoir enregister } Tout ca grace a 1 fichier INI - Pouvoir Lire
29 juin 2005 19:06:30 :
Il y 2 fois + de Checkbox donc bcp + de possibilite de sons et il y qq autres differences(1 son est different...)
29 juin 2005 21:54:01 :
nommer toutes les checkbox
30 juin 2005 00:37:40 :
Encore 1 MAJ,j'ai corrigé le petit bug que j'avais mentionner. On peut maintenant changer les sons. NB: les sons + gd que 0.25sec au tempo mis au max ne passe pas.
02 novembre 2005 21:48:57 :
WhiteHippo et son evolution... Merci

Commentaires et avis

signaler à un administrateur
Commentaire de Nicolas___ le 27/06/2005 22:27:32

Je suis ouvert aux commentaires et desole pour les fautes s'il y en a(Et il y en a surement!)

signaler à un administrateur
Commentaire de Scalpweb le 28/06/2005 00:24:26

J'utilise Paint aussi tu sais ! lol
Je vais voir ton prog now :-p

@+, Scalpweb

signaler à un administrateur
Commentaire de japee le 28/06/2005 12:13:28 administrateur CS

Intéressant, il donne des idées, ce code...

Pour sauvegarder la configuration des CheckBox cochées, tu peux utiliser un fichier ini placé dans ton répertoire. Par exemple :

uses IniFiles;

const
  NbreCheckBox: Integer = 9; // le nombre de CheckBoxes

var
  PathAppli: String;

procedure TForm1.FormCreate(Sender: TObject);
var i: Integer;
begin
  PathAppli := ExtractFilePath(Application.ExeName);
  with TIniFile.Create(PathAppli + 'sauve01.ini') do
  begin
    for i := 1 to NbreCheckBox do
      TCheckBox(FindComponent('CheckBox' + IntToStr(i))).Checked :=
      ReadBool('savecb', 'CheckBox' + IntToStr(i), False);
    Free;
  end;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var i: Integer;
begin
  PathAppli := ExtractFilePath(Application.ExeName);
  with TIniFile.Create(PathAppli + 'sauve01.ini') do
  begin
    for i := 0 to ComponentCount - 1 do
      if Components[i] is TCheckBox then
        with TCheckBox(Components[i]) do
          WriteBool('savecb', Name, Checked);
    Free;
  end;
end;

Bonne prog'

japee

signaler à un administrateur
Commentaire de japee le 28/06/2005 12:25:20 administrateur CS

En fait, j'ai été un peu vite, il vaut mieux faire ainsi :

private
    { Déclarations privées }
    procedure LitFichier(FileName: String);
    procedure EnregistreFichier(FileName: String);

uses IniFiles;

const
  NbreCheckBox: Integer = 9;

var
  PathAppli: String;

procedure TForm1.LitFichier(FileName: String);
var i: Integer;
begin
  PathAppli := ExtractFilePath(Application.ExeName);
  with TIniFile.Create(FileName) do
  begin
    for i := 1 to NbreCheckBox do
      TCheckBox(FindComponent('CheckBox' + IntToStr(i))).Checked :=
      ReadBool('save', 'CheckBox' + IntToStr(i), False);
    Free;
  end;
end;

procedure TForm1.EnregistreFichier(FileName: String);
var i: Integer;
begin
  with TIniFile.Create(FileName) do
  begin
    for i := 0 to ComponentCount - 1 do
      if Components[i] is TCheckBox then
        with TCheckBox(Components[i]) do
          WriteBool('save', Name, Checked);
    Free;
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  PathAppli := ExtractFilePath(Application.ExeName);
  LitFichier(PathAppli + 'sauve01.ini');
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var i: Integer;
begin
  EnregistreFichier(PathAppli + 'sauve01.ini');
end;

japee

signaler à un administrateur
Commentaire de japee le 28/06/2005 12:27:48 administrateur CS

Ca te permet de lire et d'enregistrer quand tu le désires, par forcément dans FormCreate ou FormClose, j'avais oublié de préciser.
Je vais y arriver...

signaler à un administrateur
Commentaire de Nicolas___ le 28/06/2005 23:00:44

Merci Japee pour ton devouevement,
pas encore eu le temps de tester ce que tu m'as ecrit mais je compte le faire tt de suite.
Faut que je vois comment marche 1 peu les fichiers ini,jamais utilisés.
Slt
Nico

signaler à un administrateur
Commentaire de japee le 28/06/2005 23:27:49 administrateur CS

Je te dirais bien bon courage, mais en fait, tu verras, c'est très simple.
N'hésite pas à consulter l'aide en ligne de Delphi, à TInifile.
Tu peux stocker toutes sortes de valeurs avec les méthodes appropriées (WriteString, WriteFloat, WriteBool, WriteDate, etc...) et les lire (avec ReadString, ReadFloat, etc...).

Dans mon code, plus haut, je me rends compte que j'ai répété de manière inutile l'instruction
PathAppli := ExtractFilePath(Application.ExeName);
qui sert à déterminer le répertoire où s'exécute l'application.
Une fois suffit, dans OnCreate par exemple.

Pfff... la chaleur...

Bonne prog'

japee

signaler à un administrateur
Commentaire de Nicolas___ le 28/06/2005 23:53:52

ouais Merci,c'est sur ca doit etre ca qui monte au crane!!! lol

Je vais suivre tes conseils(qui mon été plusieurs * utiles,si si serieux(Me la joue vieux flatteur la!!! lol))---> Tjs la chaleur,put*** de chaleur!!!

Tjs et encore Merci
Slt
Nico

Mettrais le source a jour peut etre Dmain sinon apres Dmain.

signaler à un administrateur
Commentaire de Nicolas___ le 29/06/2005 00:58:08

Voila normalement la source est MAJ
Pr finir J'ai ete + vite que prevu.
J'ai juste rajouté ce que tu m'a mis Japee.
J'en ferai 1 + grosse ds qq tps.

signaler à un administrateur
Commentaire de JulioDelphi le 29/06/2005 18:04:17 administrateur CS

hello
nomme tes composants. avec tes 230 checkbox c'est fouilli ^^

signaler à un administrateur
Commentaire de Nicolas___ le 29/06/2005 18:32:47

Ben tu sais je veux bien les nommer mais a la place de

checkbox1,checkbox2 ...
Tu auras Son 1,Son 2....

Il n'y a pas gd difference(A mon point de vue)
Mais si tu veux je vais le faire.
Slt

signaler à un administrateur
Commentaire de Nicolas___ le 29/06/2005 21:57:34

Voila JulioDelphi,
J'ai nomme toutes les checkbox en
Clap1 ... clap2..
hat 1..   hat2 ...
   ...
Et tu avais raison c'est qd meme + clair ainsi
Merci pr ton conseil
C'est peut etre lourd a tous renommer mais c'est mieux.
Slt
Nico

signaler à un administrateur
Commentaire de JulioDelphi le 29/06/2005 22:16:38 administrateur CS

ce n'est pas lourd si c'est fait au fur et a mesure des checkbox posées sur la form =) mais tout reprendre a la fin oui c'est lourd.
"un bon informaticien est un informaticien paresseux" on m'a dit, donc fait en le moins le plus vite possible pour eviter de revenir sur tes pas ^^

bien joué sinon

signaler à un administrateur
Commentaire de Nicolas___ le 29/06/2005 23:04:20

AAH,
viens seulement de m'en rendre compte: le fait d'avoir renomme les Checkboxs,
la methode de lecture du fichier INI depose par Japee ne marche +.
"J'aurais mieux fait de rester faineant finalement!!!",lol
Vais regarde a ca.
Slt
Nico

signaler à un administrateur
Commentaire de Nicolas___ le 29/06/2005 23:20:09

Ca y est j'ai trouve,
Remplacer l'ancienne procedure TForm1.LitFichier(FileName: String);

par celle ci

procedure TForm1.LitFichier(FileName: String);
var
i: Integer;

begin
  with TIniFile.Create(FileName) do
  begin

    for i := 1 to 8 do
      TCheckBox(FindComponent('clap' + IntToStr(i))).Checked :=
      ReadBool('save','clap' + IntToStr(i), False);
      for i := 1 to 8 do
      TCheckBox(FindComponent('hat' + IntToStr(i))).Checked :=
      ReadBool('save','hat' + IntToStr(i), False);
       for i := 1 to 8 do
      TCheckBox(FindComponent('drumb' + IntToStr(i))).Checked :=
      ReadBool('save','drumb' + IntToStr(i), False);
       for i := 1 to 8 do
      TCheckBox(FindComponent('rimshot' + IntToStr(i))).Checked :=
      ReadBool('save','rimshot' + IntToStr(i), False);
       for i := 1 to 8 do
      TCheckBox(FindComponent('tom' + IntToStr(i))).Checked :=
      ReadBool('save','tom' + IntToStr(i), False);
       for i := 1 to 8 do
      TCheckBox(FindComponent('woodpipe' + IntToStr(i))).Checked :=
      ReadBool('save','woodpipe' + IntToStr(i), False);
       for i := 1 to 8 do
      TCheckBox(FindComponent('snare' + IntToStr(i))).Checked :=
      ReadBool('save','snare' + IntToStr(i), False);
       for i := 1 to 8 do
      TCheckBox(FindComponent('bass' + IntToStr(i))).Checked :=
      ReadBool('save','bass' + IntToStr(i), False);
       Free;

   end;
end;

Je ne sais pas si c'est la meilleure maniere mais ca marche ne tt cas!
slt
Nico

signaler à un administrateur
Commentaire de Nicolas___ le 29/06/2005 23:21:03

Pas besion de MAJ pr si peux!

signaler à un administrateur
Commentaire de Nicolas___ le 30/06/2005 00:39:38

Allez une derniere pour la route...
Voir Description MAJ...
SLT
NICO
@+

signaler à un administrateur
Commentaire de shining le 30/06/2005 02:30:58

on peut aussi par soucis d'esthetisme écrire celà:

for i := 1 to 8 do
TCheckBox(FindComponent(Format('clap%u', [i]))).Checked :=...

l'idéal pour ton projet, serait de créer un composant 'maître', qui serait un TScrollBox, ensuite chaque élément, sera dérivé  d'un TPaintBox, avec align := alTop, et biensûr lorsqu'on clique sur un élément qu'on puisse au moins modifier certaines données, telle que le son à jouer, effets, ect..., je sais celà demande un niveau assez elever !!! , si tu comprends où je veux en venir ça vas faire de ce projet, un excellent logiciel pour le sampling ;), et dance Ejay et compagnie n'aura qu'a bien se tenir :p, bonne continuation, et concernant le TiniFile, je pense que le mieux serait d'utiliser un TCollection, ça permet de travailler en temps réel avec un accès beaucoup plus rapide qu'un fichier *.ini, de plus le TCollectionItem permet d'ajouter autant de propriétés que tu veux, example : les Effets, le nom du son, position, ainsi que des pointeurs des éléments "coller", à celui-ci., et seulement à la fin, lorsque l'utilisateur veut enregistrer son projet, qu'il faudra, non pas mettre ça dans un TiniFile mais créer sa propre structure, exemple

TMusicMakerHeader = record
Sign : array [0..2] of Char; //MMF
ElementCount : integer;
end;

TElementInfo = record
Sound     : String;
BeginPos  : Integer;// où Int64 si long fichier(tel que *.wav)
EndPos    : Integer;//
Effect    : TElementEffect;
ect ...
end;

et avec un TMemoryStream où TFileStream, mais pour un gain de rapidité je conseil vivement le TMemoryStream !!!
ensuite c'est simple il faut definir son propre format
exemple MusicMakerFile format fichier *.mmf

MS.position := 0;// ça revient au même que Seek(0 , fromBeginning);
MS.WriteBuffer(Header, SizeOf(TMusicMakerHeader));

bon je sais !!!, c'est beaucoup demander pour un débutant, mais c'est à force de se lancer des défis qu'on progressent :)



signaler à un administrateur
Commentaire de Nicolas___ le 30/06/2005 11:54:30

C'est clair que je me rends bien compte que ca a l'air bien+ difficille
meme quasiment impossible , mais comme tu le sais impossible n'est pas francais...
Je vais essayer de me documenter sur TCollection,TMemoryStream et tt le reste qui sont de grands inconnus pour moi!!!
Mais tt ceci ne sera pas pour tout de suite a mon avis...

Sinon qu'est ce que tu en penses?

Slt
Nico
@+

signaler à un administrateur
Commentaire de djmmix le 13/07/2005 17:47:13

ta source est nikel mais pk le tempo va jusqu'a trois ????

de plus il serai mieux de le mettre en BPM sa serai plus cool ^^

sinon génial @+++++

signaler à un administrateur
Commentaire de Nicolas___ le 13/07/2005 19:42:12

Merci,

Tout simplement parce que si on va trop vite,les sons ne sont pas joués
-->on ne sait pas joué 2 sons en meme temps(Du moins pas ac MediaPlayer).

Pour ton idee de BPM je ne l'ai pas fait car je ne sais pas ce que ca vaut.

Si tu as des idées pas de probleme dit les et j'y reflechirai.

Slt
Nico
@+



signaler à un administrateur
Commentaire de WhiteHippo le 01/11/2005 11:07:24

Juste un peu de code qui vient suite à un de tes  commentaires dans le source :
"Pr ne pas devoir tjs taper la meme chose encore que Qd on voit la suite... C'est Tjs la meme chose [...] surement moyen de faire moins long"

const
  NOMBRE_VOIES       = 8 ;  
  NOMBRE_INSTRUMENTS = 8 ;

  INSTRUMENT : array[1..NOMBRE_INSTRUMENTS ] of String =
    ( 'Clap'
    , 'Hat'
    , 'Drumb'
    , 'Rimshot'
    , 'Tom'
    , 'Woodpipe'
    , 'Snare'
    , 'bass'
    ) ;

procedure TForm1.SonoTimer(Sender: TObject);
var
  i,j  : integer ;
  cb : TCheckBox ;
  mp : TMediaPlayer ;
begin
  with ImageTemps do
  begin
    for i:=1 to NOMBRE_VOIES do
    begin
      for j:=1 to NOMBRE_INSTRUMENTS do
      begin
        mp := TMediaPlayer ( Form1.FindComponent( 'MediaPlayer'  + IntToStr(j) ) ) ;
        cb := TCheckBox    ( Form1.FindComponent( INSTRUMENT[j] + IntToStr(i) ) ) ;
        if ( cb.Checked ) and ( left=cb.Left ) then mp.Play ;
      end ;
    end ;
  end ;
end;

procedure TForm1.LitFichier(FileName: String);
var
i,j: Integer;
begin
  with TIniFile.Create(FileName) do
  begin
    for i := 1 to NOMBRE_VOIES do
    begin
      for j := 1 to NOMBRE_INSTRUMENTS do
      begin
        cb := TCheckBox ( Form1.FindComponent( Instruments[j] + IntToStr(i) ) ) ;
        cb.Checked := ReadBool('save',Instruments[j] + IntToStr(i), False) ;
      end ;
    end ;
  end;
end;

N.B. tous les NxClick pourrait de la même façon etre regroupés au sein d'une unique procedure (c'est à dire une seule procedure OnClick) qui se chargera de faire le traitement adequate en fonction du menu appelant.

Cordialement.

signaler à un administrateur
Commentaire de Nicolas___ le 02/11/2005 21:55:54

Merci Bcp pour ton intervention ...
J'etais sur qu il y avait moyen de raccourcir cette histoire mais je ne savais pas comment ...
En tout cas c est tres simple.
Merci pour augmenter le nbr de CheckBox c est vachement plus facile maintenant enfin moins emmerd*** en tt cas !!!

Ciao

signaler à un administrateur
Commentaire de EddiTheHead le 10/02/2006 00:54:28

Slt,

J'viens de découvrir ton prog. Bonne idée d'utiliser plusieurs mediaplayer pour émettre des sons. C'est plus agréable qu'un playsound et c'est facile à utiliser.

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

.mod depuis une ressource [ par TheWhiteShadow ] Salut tout le monde,j'aimerai savoir pourquoi certains composants on peut lire directement depuis la ressource et pourquoi d'autres il faut écrire le mediaplayer: avancer une musique avec TtrackBar [ par etrix ] Salut tousj'ai commencer un lecteur mp3 avec Tmediaplayer et je voudrais pouvoir avancer la musique à l'aide d'un TrackBar, mais je ne trouve pas la s Probleme avec les activeX [ par thone08 ] Bonjour, j'ai crer une sorte de reveil , qui a l'air prevu lance une musique , apres une petite recherche dans mes active x j'ai trouver une fonction powerpoint show [ par ilanam ] je souhaite envoyer par mail des photos de vacances avec musique d'accompagnement en utilisant powerpoint mais le destinataire reçoit powerpoint show progressbar avec une musique [ par ced55957 ] cedricbonjour j'aimerai savoir comment on fait pour faire avancer un progressbar en fonction de la musiqueex: debut musique, progress bar a 0 fin lire musique [ par ced55957 ] encore bonsoirvoila je voulais savoir comment importer des musiques dans une list et que quand j'appuie sur un bouton les musiques son jouer chacune l musique et code source [ par ced55957 ] cedricbonsoir je voulais savoir un petit truc:j'ai créer un prog qui quand on importe les musique dans un lisbox et que quand je clique sur comme Fond musical et Delphi... [ par waybee ] Bonjour à tous et à toutes !     J'ai une question à poser au sujet de la musique avec Delphi.     J'aime problème de chemin video et musique [ par monpetiourson ] voila, je dois rendre mon projet et j'y ai ajouté une vidéo et de la musique; le problème c'est que lorsque je change d'ordi, si le che karaoké MP3... [ par Matt 261 ] Bonjour a tous,Fini les karaokés midi nous voila (peut-être enfin) dans l'air du karaoké Mp3. Donc voila, je voudrai faire un


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



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
Temps d'éxécution de la page : 0,390 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.