Forum Oric
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Derniers sujets
» rs
musique en c - Page 2 EmptyDim 31 Mar 2024 - 14:35 par kenneth

» Bla Bla général du Jury
musique en c - Page 2 EmptyJeu 21 Mar 2024 - 8:51 par Dom50

» carte mère Oric (re)tracée
musique en c - Page 2 EmptyMar 5 Mar 2024 - 18:54 par kenneth

» Meurtre à Grande Vitesse
musique en c - Page 2 EmptyDim 25 Fév 2024 - 5:09 par Iurius

» ORIC-1 sur LE BON COIN
musique en c - Page 2 EmptyVen 23 Fév 2024 - 23:01 par Mcar

» ORIC ATMOS sur LE BON COIN
musique en c - Page 2 EmptyDim 4 Fév 2024 - 12:06 par kiwilevrai

» Problème d'affichage des couleurs avec un Oric Atmos
musique en c - Page 2 EmptySam 27 Jan 2024 - 1:26 par pierbail

» Bienvenue dans le Forum des Oriciens
musique en c - Page 2 EmptyMar 9 Jan 2024 - 12:33 par Dom50

» Rencontre avec Laurant Weill, co-fondateur de Loriciel, et mon garçon de 12 ans
musique en c - Page 2 EmptyVen 29 Déc 2023 - 14:13 par Arcade-des-Monts

» Bonnes fêtes
musique en c - Page 2 EmptyMar 26 Déc 2023 - 10:21 par Dom50

» Murders in Venice / Meutres à Venise
musique en c - Page 2 EmptySam 18 Nov 2023 - 22:44 par retroric

» Un clavier PS/2 pour tester un ORIC
musique en c - Page 2 EmptyDim 27 Aoû 2023 - 9:49 par Voyageur

» Disquette 3" Sedoric
musique en c - Page 2 EmptyMar 1 Aoû 2023 - 14:22 par AtomeX

» faire un 6502 avec des phototransistor
musique en c - Page 2 EmptyDim 16 Juil 2023 - 17:26 par Voyageur

» Oricutron linux et DSK
musique en c - Page 2 EmptyJeu 29 Juin 2023 - 18:34 par Voyageur

Qui est en ligne ?
Il y a en tout 1 utilisateur en ligne :: 0 Enregistré, 0 Invisible et 1 Invité

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 242 membres enregistrés
L'utilisateur enregistré le plus récent est AIRBUS44

Nos membres ont posté un total de 8922 messages dans 811 sujets
Sites Sympas

> Culture Club


Le deal à ne pas rater :
Réassort du coffret Pokémon 151 Électhor-ex : où l’acheter ?
Voir le deal

musique en c

+4
Ladywasky
Dbug
Jede
romu3
8 participants

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

Aller en bas

musique en c - Page 2 Empty Re: musique en c

Message par goyo 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  =)

musique en c - Page 2 Gensou10



y a beaucoup de bruits d'hélicoptères dans le lot .... Shocked
Fichiers joints
musique en c - Page 2 Attachment
gensound.zip (6 Ko) Téléchargé 176 fois


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

Messages : 199
Date d'inscription : 02/05/2014
Age : 52
Localisation : Massy

Revenir en haut Aller en bas

musique en c - Page 2 Empty Re: musique en c

Message par goyo Mar 5 Mar 2019 - 14:48

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

Messages : 199
Date d'inscription : 02/05/2014
Age : 52
Localisation : Massy

Revenir en haut Aller en bas

musique en c - Page 2 Empty Re: musique en c

Message par retroric 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
retroric
retroric

Messages : 595
Date d'inscription : 09/08/2014
Age : 53
Localisation : Paris

https://github.com/retroric

Revenir en haut Aller en bas

musique en c - Page 2 Empty Re: musique en c

Message par didierv Mer 6 Mar 2019 - 6:59

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

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

http://www.dmacoco.fr

Revenir en haut Aller en bas

musique en c - Page 2 Empty Re: musique en c

Message par goyo 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 : 199
Date d'inscription : 02/05/2014
Age : 52
Localisation : Massy

Revenir en haut Aller en bas

musique en c - Page 2 Empty Re: musique en c

Message par goyo 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 : 199
Date d'inscription : 02/05/2014
Age : 52
Localisation : Massy

Revenir en haut Aller en bas

musique en c - Page 2 Empty Re: musique en c

Message par retroric 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
musique en c - Page 2 Attachment
OSDK_include_sys_sound_h.zip Fichier header sys/sound.h corrigé pour OSDK 1.13(2 Ko) Téléchargé 159 fois
retroric
retroric

Messages : 595
Date d'inscription : 09/08/2014
Age : 53
Localisation : Paris

https://github.com/retroric

Revenir en haut Aller en bas

musique en c - Page 2 Empty Re: musique en c

Message par goyo 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 : 199
Date d'inscription : 02/05/2014
Age : 52
Localisation : Massy

Revenir en haut Aller en bas

musique en c - Page 2 Empty Re: musique en c

Message par kenneth 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 : 879
Date d'inscription : 13/01/2013
Age : 56
Localisation : 63

Revenir en haut Aller en bas

musique en c - Page 2 Empty Re: musique en c

Message par retroric 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
retroric
retroric

Messages : 595
Date d'inscription : 09/08/2014
Age : 53
Localisation : Paris

https://github.com/retroric

Revenir en haut Aller en bas

musique en c - Page 2 Empty Re: musique en c

Message par goyo Lun 25 Mar 2019 - 15:26

laurentd75 a écrit: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

j'ai vu le programme d'interruption horloge sur le Theoric 6 page 36. dommage que le code assembleur ne soit pas commenté.

Je vais un peu arranger mon programme proto avant de le poster. !

Je recherche un bruit de saut de saut (jump) que j' arrive pas à trouver avec la routine d'effet sonore similaire au ping, ni avec l'outil soundgen...
goyo
goyo

Messages : 199
Date d'inscription : 02/05/2014
Age : 52
Localisation : Massy

Revenir en haut Aller en bas

musique en c - Page 2 Empty Re: musique en c

Message par retroric Ven 29 Mar 2019 - 16:51

Salut Goyo,

Pour un effet sonore de saut, une astuce peut-être d'utiliser un des sons " d'hélicoptère" que tu peux trouver facilement, et de le couper après qq centaines de millisecondes avec un PLAY 0,0,0,0 pour juste garder une période du son.

Mais si tu veux réfléchir un peu plus, en gros, tu cherches sans doute un son sur un canal mixé avec le générateur de bruit et avec l'enveloppe n°1 ou n°2 (enveloppe descendante ou montante qui se coupe toute seule au bout de la période de l'enveloppe). Avec ces infos, tu devrais sans doute pouvoir jouer avec les paramètres pour trouver le son qui convient...

Sinon, tu peux aussi essayer de trouver le son qui te convient dans un jeu existant  en BASIC et récupérer les paramètres de ce son (instructions PLAY et SOUND utilisées pour le bruitage).
retroric
retroric

Messages : 595
Date d'inscription : 09/08/2014
Age : 53
Localisation : Paris

https://github.com/retroric

Revenir en haut Aller en bas

musique en c - Page 2 Empty Re: musique en c

Message par goyo Sam 30 Mar 2019 - 14:47

laurentd75 a écrit:Salut Goyo,

Pour un effet sonore de saut, une astuce peut-être d'utiliser un des sons " d'hélicoptère" que tu peux trouver facilement, et de le couper après qq centaines de millisecondes avec un PLAY 0,0,0,0 pour juste garder une période du son.

Mais si tu veux réfléchir un peu plus, en gros, tu cherches sans doute un son sur un canal mixé avec le générateur de bruit et avec l'enveloppe n°1 ou n°2 (enveloppe descendante ou montante qui se coupe toute seule au bout de la période de l'enveloppe). Avec ces infos, tu devrais sans doute pouvoir jouer avec les paramètres pour trouver le son qui convient...

Sinon, tu peux aussi essayer de trouver le son qui te convient dans un jeu existant  en BASIC et récupérer les paramètres de ce son (instructions PLAY et SOUND utilisées pour le bruitage).

Merci Laurentd75,
oui je peux essayer de bidouiller un son avec la routine rom de $FA86 même si dans les 14 paramètres y a des comportements assez bizaroides ..
je peux aussi utiliser l'outil soundgen pour chercher et faire des expériences.
je trouve que zap rensemble pas mal à un bruit de saut mais ZAP n'utilise pas que cette routine rom mais un autre en plus j'ai cru comprendre...
oui play et sound . je ne les ai pas trop utilisées mais ça peut être une occasion de mieux les pratiquer..
goyo
goyo

Messages : 199
Date d'inscription : 02/05/2014
Age : 52
Localisation : Massy

Revenir en haut Aller en bas

musique en c - Page 2 Empty 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 ne pouvez pas répondre aux sujets dans ce forum