Derniers sujets
» L'ile oubliée
Aujourd'hui à 22:02 par Dom50

» Des propositions graphiques pour Oricutron
Aujourd'hui à 18:37 par TotoShampoin

» Bus d'extension - accès à la RAM
Aujourd'hui à 18:20 par laurentd75

» Annonces insolites
Hier à 20:15 par kenneth

» opération compliquée
Lun 18 Mar 2019 - 22:58 par laurentd75

» Novalight
Dim 17 Mar 2019 - 21:33 par Symoon

» Route en effet 3d
Dim 17 Mar 2019 - 18:37 par Dbug

» musique en c
Ven 15 Mar 2019 - 14:54 par laurentd75

»  Oric Atmos problème de sortie vidéo
Ven 15 Mar 2019 - 14:48 par kenneth

» 65c816 et dédicace à Fabrice F :)
Jeu 14 Mar 2019 - 11:20 par Jede

» cherche quelqu'un(e)(s) avec qui retravailler la rom basic 16 kos
Jeu 14 Mar 2019 - 10:45 par Jede

» Aux couleurs de l'Atmos
Jeu 14 Mar 2019 - 3:04 par Voyageur

» ORIC-1 sur LE BON COIN
Lun 11 Mar 2019 - 23:20 par kenneth

» Cumulus
Lun 11 Mar 2019 - 17:01 par Jede

» rs
Lun 11 Mar 2019 - 11:47 par kenneth

Qui est en ligne ?
Il y a en tout 2 utilisateurs en ligne :: 0 Enregistré, 0 Invisible et 2 Invités :: 1 Moteur de recherche

Aucun

Le record du nombre d'utilisateurs en ligne est de 29 le Mer 25 Fév 2015 - 14:01
Connexion

Récupérer mon mot de passe

Statistiques
Nous avons 175 membres enregistrés
L'utilisateur enregistré le plus récent est ZodiacFR

Nos membres ont posté un total de 6906 messages dans 594 sujets
Portail ORIC




musique en c

Poster un nouveau sujet   Répondre au sujet

Page 2 sur 2 Précédent  1, 2

Aller en bas

Re: musique en c

Message par goyo le Lun 4 Mar 2019 - 18:05

Sur l'idée des effets de son de LADYWASKY et de son :
Code:
play_soundfx()
,
j'ai programmé un petit outil en C de génération aléatoire de sons, histoire de faire au hasard une trouvaille sympa  =)





y a beaucoup de bruits d'hélicoptères dans le lot .... Shocked
Fichiers joints
gensound.zip (6 Ko) Téléchargé 0 fois


Dernière édition par goyo le Mer 20 Mar 2019 - 14:56, édité 3 fois
goyo
goyo

Messages : 141
Date d'inscription : 02/05/2014
Age : 47
Localisation : Massy

Revenir en haut Aller en bas

Re: musique en c

Message par goyo le Mar 5 Mar 2019 - 14:48

j'ai mis en téléchargement une nouvelle version ;-)
goyo
goyo

Messages : 141
Date d'inscription : 02/05/2014
Age : 47
Localisation : Massy

Revenir en haut Aller en bas

Re: musique en c

Message par laurentd75 le Mer 6 Mar 2019 - 1:07

Merci Goyo, c'est sympa ton petit programme !

C'est clair que le AY-3-8912, on dirait qu'il a été conçu pour créer des jeux d'hélicoptères au bord de la mer (avec le bruit des vagues, un "classique" aussi...) !! Razz Razz
laurentd75
laurentd75

Messages : 429
Date d'inscription : 09/08/2014
Age : 48
Localisation : Paris

Revenir en haut Aller en bas

Re: musique en c

Message par didierv le Mer 6 Mar 2019 - 6:59

Je connais le bruit des vagues, sans allumer mon oric Smile

_________________
DidierV - CEO Mag
alias coco.oric sur Defence-Force
didierv
didierv

Messages : 668
Date d'inscription : 19/01/2014
Age : 56
Localisation : Nord de la France

http://www.dmacoco.fr

Revenir en haut Aller en bas

Re: musique en c

Message par goyo le Mer 6 Mar 2019 - 10:34

si vous avez des remarques pour améliorer l'outil n’hésitez pas à me les suggérer.
Je pensais à une fonction pour générer aléatoirement un son intelligemment : en respectant les formats des octets avec les bits..
goyo
goyo

Messages : 141
Date d'inscription : 02/05/2014
Age : 47
Localisation : Massy

Revenir en haut Aller en bas

Re: musique en c

Message par goyo le Jeu 14 Mar 2019 - 10:43

Quelqu'un saurait-il si on peut jouer une musique tout en lançant des sons comme ping ou shoot par dessus ...

Suffit-il que les sons soient sur des canaux différents de la musique ?

Si je comprends bien l'Oric à trois canaux de son (3 voix ?) ?
goyo
goyo

Messages : 141
Date d'inscription : 02/05/2014
Age : 47
Localisation : Massy

Revenir en haut Aller en bas

Re: musique en c

Message par laurentd75 le Ven 15 Mar 2019 - 1:46

C'est plus ou moins possible, en fonction précisément de combien de canaux tes sons et ta musique utilisent...

Si ton effet sonore et ta musique utilisent des canaux séparés, c'est assez simple, tu positionnes les valeurs des registres correspondant au canal ou aux canaux utilisés par ton effet sonore, tu "valides" pour déclencher la lecture par le PSG, puis tu positionnes les valeurs des registres correspondant au canal ou aux canaux utilisés par la 1ere note de ta musique, tu valides, et les sons des différents canaux se "superposent"... Après, suivant si ton effet sonore "dure" ou doit être modifié, tu modifies les registres nécessaires, puis tu alternes pour les registres des canaux de la musique, pour jouer les différentes notes...
Ceci étant, si tu ne veux pas t'embêter à positionner les registres, tu peux aussi appeler les commandes BASIC SOUND, MUSIC et PLAY en ROM, c'est nettement plus simple...

Dans le cas où tes effets sonores et ta musique utilisent un ou plusieurs canaux identiques en revanche, pas de solution miracle... Il n'y a guère d'autre solution que d'alterner entre restitution de l'effet sonore et jeu de la musique, car "mixer" les 2 serait compliqué voire impossible... En général on s'arrange donc pour réserver un canal sonore et le canal de bruit aux effets sonores, et on utilise les 2 canaux restants pour la musique. Je n'ai pas d'exemple sur Oric (car souvent les jeux proposent soit des effets sonores soit de la musique, car faire les 2 prend énormément de temps CPU, et dans Stormlord par exemple on doit choisir l'un ou l'autre). En revanche sur ST, si tu prends un jeu emblématique comme Goldrunner (vidéo), tu pourras constater que lorsque le joueur tire avec son vaisseau, la musique n'est pas coupée, de même lorsqu'un sample est joué, la musique continue aussi... A priori, 1 canal son (et le canal bruit) est réservé aux effets sonores et la musique utilise les 2 autres canaux son. Il y a cependant les percussions qui utilisent aussi le canal bruit, donc je pense que niveau programmation sonore c'est extrêmement complexe.

Pour répondre à ta dernière question, il y a en fait 4 canaux: 3 canaux de forme d'onde carrée, et 1 canal de bruit blanc, qui peut être mixé soit à un seul canal "'son", soit à plusieurs des canaux son.

Tout ceci est très bien expliqué dans le manuel de l'Atmos par exemple, pour les commandes Basic SOUND, PLAY et MUSIC que tu peux appeler aussi en C en faisant un #include <sys/sound.h> au début de ton programme puis en faisant appel aux fonctions sound(), play() et music() qui sont définies dans ce header.

ATTENTION CEPENDANT, le header inclus dans l'OSDK (depuis la v1.5 au moins..) est incorrect et ne compile pas, j'ai du le corriger à la main il y a qq semaines pour les besoins de mon jeu "ElectrOric", je comptais envoyer le correctif à DBug, c'est l'occasion !! Smile

Pour info, le pb dans ce header est la définition via #defines de "constantes" pour les notes dièse, qui utilise le caractère "-" qui n'est pas autorisé dans un nom de macro #define, et que j'ai donc tout simplement remplacé par le caractère de soulignement "_" et le suffixe "SHARP" (dièse en anglais).

Exemple:
#define NOTE_C-  2
remplacé par:
#define NOTE_C_SHARP  2

==> Je joins donc une version corrigée de ce header, à placer donc dans %OSDK%\include\sys

(NB: le forum permettant seulement l'ajout de certains types de fichiers, j'ai du mettre la pièce jointe dans une archive ZIP)
Fichiers joints
OSDK_include_sys_sound_h.zip Fichier header sys/sound.h corrigé pour OSDK 1.13(2 Ko) Téléchargé 2 fois
laurentd75
laurentd75

Messages : 429
Date d'inscription : 09/08/2014
Age : 48
Localisation : Paris

Revenir en haut Aller en bas

Re: musique en c

Message par goyo le Ven 15 Mar 2019 - 11:17

laurentd75 a écrit:C'est plus ou moins possible, en fonction précisément de combien de canaux tes sons et ta musique utilisent...

Si ton effet sonore et ta musique utilisent des canaux séparés, c'est assez simple, tu positionnes les valeurs des registres correspondant au canal ou aux canaux utilisés par ton effet sonore, tu "valides" pour déclencher la lecture par le PSG, puis tu positionnes les valeurs des registres correspondant au canal ou aux canaux utilisés par la 1ere note de ta musique, tu valides, et les sons des différents canaux se "superposent"... Après, suivant si ton effet sonore "dure" ou doit être modifié, tu modifies les registres nécessaires, puis tu alternes pour les registres des canaux de la musique, pour jouer les différentes notes...
Ceci étant, si tu ne veux pas t'embêter à positionner les registres, tu peux aussi appeler les commandes BASIC SOUND, MUSIC et PLAY en ROM, c'est nettement plus simple...

Dans le cas où tes effets sonores et ta musique utilisent un ou plusieurs canaux identiques en revanche, pas de solution miracle... Il n'y a guère d'autre solution que d'alterner entre restitution de l'effet sonore et jeu de la musique, car "mixer" les 2 serait compliqué voire impossible... En général on s'arrange donc pour réserver un canal sonore et le canal de bruit aux effets sonores, et on utilise les 2 canaux restants pour la musique. Je n'ai pas d'exemple sur Oric (car souvent les jeux proposent soit des effets sonores soit de la musique, car faire les 2 prend énormément de temps CPU, et dans Stormlord par exemple on doit choisir l'un ou l'autre). En revanche sur ST, si tu prends un jeu emblématique comme Goldrunner (vidéo), tu pourras constater que lorsque le joueur tire avec son vaisseau, la musique n'est pas coupée, de même lorsqu'un sample est joué, la musique continue aussi... A priori, 1 canal son (et le canal bruit) est réservé aux effets sonores et la musique utilise les 2 autres canaux son. Il y a cependant les percussions qui utilisent aussi le canal bruit, donc je pense que niveau programmation sonore c'est extrêmement complexe.

Pour répondre à ta dernière question, il y a en fait 4 canaux: 3 canaux de forme d'onde carrée, et 1 canal de bruit blanc, qui peut être mixé soit à un seul canal "'son", soit à plusieurs des canaux son.

Tout ceci est très bien expliqué dans le manuel de l'Atmos par exemple, pour les commandes Basic SOUND, PLAY et MUSIC que tu peux appeler aussi en C en faisant un #include <sys/sound.h> au début de ton programme puis en faisant appel aux fonctions sound(), play() et music() qui sont définies dans ce header.

ATTENTION CEPENDANT, le header inclus dans l'OSDK (depuis la v1.5 au moins..) est incorrect et ne compile pas, j'ai du le corriger à la main il y a qq semaines pour les besoins de mon jeu "ElectrOric", je comptais envoyer le correctif à DBug, c'est l'occasion !! Smile

Pour info, le pb dans ce header est la définition via #defines de "constantes" pour les notes dièse, qui utilise le caractère "-" qui n'est pas autorisé dans un nom de macro #define, et que j'ai donc tout simplement remplacé par le caractère de soulignement "_" et le suffixe "SHARP" (dièse en anglais).

Exemple:
#define NOTE_C-  2
remplacé par:
#define NOTE_C_SHARP  2

==> Je joins donc une version corrigée de ce header, à placer donc dans %OSDK%\include\sys

(NB: le forum permettant seulement l'ajout de certains types de fichiers, j'ai du mettre la pièce jointe dans une archive ZIP)

Merci Laurent de toutes ces précisions et le header, ça me parait encore un monde bien vaste, la programmation du son. Dans mon proto de jeu "rain panic" j'ai mis une variable compteur tempo=10 après chaque son de type 'ping zap, etc'. quand tempo atteint 0 je joue la note suivante de la musique. Je fais comme tu as indiqué, de l'alternance son/musique. Si tu veux je t'envoie mon proto pour que tu vois comment j'ai fait, si t'as des remarques. L'idéal serait que je joue ma musique dans l'interruption horloge pour qu'elle ait un rythme parfait, mais je ne sais pas encore assez bien utiliser l'assembleur pour ça. Si tu as la routine asm pour la musique et l'interruption horloge ça m’intéresse Smile
goyo
goyo

Messages : 141
Date d'inscription : 02/05/2014
Age : 47
Localisation : Massy

Revenir en haut Aller en bas

Re: musique en c

Message par kenneth le Ven 15 Mar 2019 - 11:34

On peut creer un tableau avec les notes et les temps. En détournant le vecteur d'interruption pour rajouter la routine son, on incrémente un nouveau timer a chaque nouvelle interruption, dès que la valeur correspond a celle du tableau, (temps de la note) on appelle la routine play ou sound pour jouer la nouvelle note du tableau.
kenneth
kenneth
Modérateur

Messages : 597
Date d'inscription : 13/01/2013
Age : 51
Localisation : 972

Revenir en haut Aller en bas

Re: musique en c

Message par laurentd75 le Ven 15 Mar 2019 - 14:54

Salut Goyo,

Attention, je ne suis nullement un spécialiste de la programmation sonore sur Oric (même si c'est un domaine qui m'intéresse beaucoup), je galère d'ailleurs pas mal à faire des sons corrects et à jouer avec les enveloppes, mais n'hésite pas à poster ton proto dans ce sujet, je pourrai jeter un oeil et d'autres personnes plus calées comme Kenneth pourront sans doute aussi t'aider sur le sujet ou sur celui des interruptions, car sur les interruptions je suis vraiment néophyte, je n'ai jamais rien codé avec des interruptions en 6502, et il faudrait que je me "pose" un peu pour étudier le sujet car il y a plusieurs timers et je me mélange un peu les pinceaux ! Very Happy
laurentd75
laurentd75

Messages : 429
Date d'inscription : 09/08/2014
Age : 48
Localisation : Paris

Revenir en haut Aller en bas

Re: musique en c

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Page 2 sur 2 Précédent  1, 2

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous pouvez répondre aux sujets dans ce forum