Forum Oric
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Derniers sujets
» Bla Bla général du Jury
musique en c EmptyJeu 21 Mar 2024 - 8:51 par Dom50

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

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

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

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

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

» Bienvenue dans le Forum des Oriciens
musique en c 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 EmptyVen 29 Déc 2023 - 14:13 par Arcade-des-Monts

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

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

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

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

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

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

» No Problem !
musique en c EmptyDim 25 Juin 2023 - 17:53 par Voyageur

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

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

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

> Culture Club


-34%
Le deal à ne pas rater :
-34% LG OLED55B3 – TV OLED 4K 55″ 2023 – 100Hz HDR 10+, ...
919 € 1399 €
Voir le deal

musique en c

+4
Ladywasky
Dbug
Jede
romu3
8 participants

Page 1 sur 2 1, 2  Suivant

Aller en bas

musique en c Empty musique en c

Message par goyo Mer 9 Jan 2019 - 13:07

J'aimerais faire une petite mélodie au rythme rapide pour un petit jeu d'action que je développe en ce moment.

Qui saurait comment faire jouer une musique en C  ?

Je sais simplement qu'il y a les instructions Sound() play() music() dans l'osdk mais je ne trouve aucune doc pour les utiliser.

Y aurait il un petit exemple quelque part ?
goyo
goyo

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

Revenir en haut Aller en bas

musique en c Empty Re: musique en c

Message par romu3 Mer 9 Jan 2019 - 13:22

Je ne sais pas désolé la dernière fois que j'ai fait de la musique sur Oric c'était sur Sonix 3.5 il ya bien longtemps. Wink

Faut voir sur Defence Force dans la rubrique audio il doit y avoir des pistes mais à mon avis pas grand chose en C (à vérifier).
romu3
romu3

Messages : 75
Date d'inscription : 09/10/2018

Revenir en haut Aller en bas

musique en c Empty Re: musique en c

Message par goyo Mer 9 Jan 2019 - 13:54

romu3 a écrit:Je ne sais pas désolé la dernière fois que j'ai fait de la musique sur Oric c'était sur Sonix 3.5 il ya bien longtemps. Wink

Faut voir sur Defence Force dans la rubrique audio il doit y avoir des pistes mais à mon avis pas grand chose en C (à vérifier).

Merci de ton aide romu3, du coup j'ai trouvé une piste sur le forum Defense Force
ça m'a permis de convertir en c la démo de musique Androids de la page 101  du manuel de l'Atmos

apparemment c'est la même utilisation pour les instructions de son du basic et du c
Code:
//
// *** ANDROIDS *** C VERSION
//

// #include <lib.h>
 
unsigned char melody[]={1,8,8,8,1,8,8,8,1,8,8,8,1,8,8,8,1,8,8,8,1,8,8,8,3,6,10,5,3,3,10,3,
 1,10,8,10,1,10,8,10,1,8,8,8,1,8,8,8,1,8,8,8,1,8,8,8,
 3,3,10,5,3,6,10,6,1,10,8,10,1,10,8,10,
 1,8,8,8,1,8,8,8,1,8,8,8,1,8,8,8,3,3,10,5,3,3,10,3,
 1,1,8,1,1,1,8,1,1,1,8,1,1,1,8,1,1,1,8,1,1,1,8,1,1,1,8,1,1,1,8,1,
 1,8,8,8,1,8,8,8,1,8,8,8,1,8,8,8,1,8,8,8,1,8,8,8,3,6,10,5,3,3,10,3,
 1,10,8,10,1,10,8,10,1,8,8,8,1,8,8,8,1,8,8,8,1,8,8,8,
 3,3,10,5,3,6,10,6,1,10,8,10,1,10,8,10,
 1,8,8,8,1,8,8,8,1,8,8,8,1,8,8,8,3,3,10,5,3,3,10,3,
 1,1,8,1,1,1,8,1,1,1,8,1,1,1,8,1,1,1,8,1,1,1,8,1,1,1,8,1,1,1,8,1,
 3,3,10,3,3,3,10,3,5,5,12,5,5,5,12,5,
 6,6,1,6,6,6,1,6,1,1,8,1,1,1,8,1,
 3,3,10,3,3,3,10,3,5,5,12,5,5,5,12,5,
 6,6,1,6,6,6,1,6,1,1,8,1,1,1,8,1,
 3,3,10,3,3,3,10,3,5,5,12,5,5,5,12,5,
 6,6,1,6,6,6,1,6,1,1,8,1,1,1,8,1,
 3,3,10,3,3,3,10,3,5,5,12,5,5,5,12,5,
 6,6,1,6,6,6,1,6,8,8,3,8,8,8,3,8
 };
 
unsigned int i,x,y,w;
void main()
{
  i=0;
  while(i<sizeof(melody))
  {
 x=melody[i];
 y=melody[i+1];
 play(3,0,0,0);
 music(1,1,x,6);
 music(2,4,y,5);
 for (w=0;w<1500;w++); // wait
 i+=2;
  }
  
  
}
/*
5 REM *** ANDROIDS ***
10 A=1
50 REPEAT
60 LETA=A+1
90 READ X,Y
100 PLAY 3,0,0,0
110 MUSIC 1,1,X,6
120 MUSIC 2,4,Y,5
140 WAIT15
150 UNTIL A=193
160 RESTORE
170 GOTO10
*/


Dernière édition par goyo le Jeu 10 Jan 2019 - 10:06, édité 1 fois
goyo
goyo

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

Revenir en haut Aller en bas

musique en c Empty Re: musique en c

Message par goyo Mer 9 Jan 2019 - 14:05

Il me reste plus qu'a trouver une musique originale pour mon jeu d'action.
Ou si je dois la composer moi même, existe t'il un piano ou éditeur musical qui génère des datas de musique réutilisables dans un programme ! ?
goyo
goyo

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

Revenir en haut Aller en bas

musique en c Empty Re: musique en c

Message par romu3 Mer 9 Jan 2019 - 16:14

Bah avec du soundtracker sur PC tu peux sortir un truc dans un format réutilisable avec du player qui doit trainer ou être expliqué sur Defence Force.
Et sinon ya Sonix en natif sur Oric. Je dois avoir des trucs fait sur Sonix qui trainent quelque part sur de la backup si j'arrive à remettre la main dessus mais je ne garanti rien.
romu3
romu3

Messages : 75
Date d'inscription : 09/10/2018

Revenir en haut Aller en bas

musique en c Empty Re: musique en c

Message par goyo Jeu 10 Jan 2019 - 10:09

romu3 a écrit:Bah avec du soundtracker sur PC tu peux sortir un truc dans un format réutilisable avec du player qui doit trainer ou être expliqué sur Defence Force.
Et sinon ya Sonix en natif sur Oric. Je dois avoir des trucs fait sur Sonix qui trainent quelque part sur de la backup si j'arrive à remettre la main dessus mais je ne garanti rien.

Merci, ça serait super d'utiliser ces superbes outils, simplement pour l'instant j'aimerais commencer par une musique jouée par les instructions musicales classiques du c : music, play...
goyo
goyo

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

Revenir en haut Aller en bas

musique en c Empty Re: musique en c

Message par Ladywasky Ven 11 Jan 2019 - 0:53

Sinon, tu trouveras quelques exemples, et de resources, et de codes et d'outils (que j'ai glané auprès des sources de notre champion Dbug et de feu le génialissime Twilighte)  sur mon github, qui permettent de transformer un .mid ou un .ym en musiques que l'on peut jouer en musique de fond sur l'Oric : la musique est jouée en tâche de fond en utilisant les interruptions système de l'Oric (IRQ).

Ca se passe là (.ym) :
https://github.com/DJChloe/Very-cool-music

et là (.mid --> Game of Thrones !) ,
https://github.com/DJChloe/got/tree/master/sources/tools


Les fichiers .ym, tu peux les générer avec certains trackers ou player comme STSound ( http://leonard.oxg.free.fr/stsound.html )ou convertir d'autre formats du AY-8912 assez facilement vers celui-ci. C'est un format très utilisé du côté de l'Atari ST ou du ZX Spectrum. Bref, tu en trouveras plein sur internet.

De l'autre côté, il y a  les fichiers midi, il y en a plein !
L'idéal c'est de trouver des fichiers midi avec tout au plus une ou deux "pistes" d'instruments et tu te retrouveras avec une musique assez correcte voire très sympa à l'arrivée. Il existe pas mal de sites avec des partitions gratuites à télécharger ainsi que le fichier midi associé. Je te conseillerais le site https://musescore.com où j'ai pu en trouver plein !


La musique en Basic c'est un peu plus "chaud" mais ça reste réalisable grace à un code de Geof Philips qui permet de faire du "multitâche" sur l'oric en Basic (c'est le Monsieur qui à réalisé le programme de démonstration de l'Atmos, le fameux "Welcome to Oric Atmos"). Je te le mets en lien :
http://home.btconnect.com/geffers/files/contents.htm

Il me semble aussi qu'il y a quelques sources dans certains Théoric dignes d'intérêt et un éditeur musical chez Loriciel qui permet d'intégrer ta musique dans un programme (à prendre avec des pincettes, je ne suis pas sure de mon coup)

Yapluka !
Ladywasky
Ladywasky

Messages : 240
Date d'inscription : 25/08/2018
Age : 53

Revenir en haut Aller en bas

musique en c Empty Re: musique en c

Message par Ladywasky Ven 11 Jan 2019 - 2:09

Sinon, pour Sound() play() music() dans l'OSDK, tu peux te référer aux sources de mon Oric Kong, ce sont les mêmes instructions qu'en BASIC, avec les mêmes paramètres :
https://github.com/DJChloe/Orickong_C/blob/master/src/Main/main.c

exemples :
Code:
play(7,0,0,0);
   music(1,4,8,9); wait(64);
   music(1,4,7,9); wait(42);
   music(1,4,2,9); wait(20);
   music(1,4,5,9); wait(42);
   music(1,4,3,9); wait(42);
   music(1,4,1,9); wait(42);
   music(1,3,10,9); wait(42);
   music(1,3,8,9); wait(42);
   music(1,3,12,9); wait(20);
   music(1,3,10,9); wait(12);
   music(1,3,12,9); wait(18);
   music(1,3,10,9); wait(50);
   music(1,3,8,9); wait(100);
   ping();

Code:
music(1,4,2,7); wait(50);
   music(1,4,7,7); wait(25);
   music(1,4,6,7); wait(50);
   music(1,4,9,7); wait(25);
   music(1,4,7,7); wait(25);
   music(1,4,11,7); wait(30);
   music(1,5,2,7); wait(55);
   play(0,0,0,0);

Code:
play(7,0,0,0);
   music(1,3,1,7); wait(50);
   music(1,3,5,8); wait(50);
   music(1,3,8,9); wait(50);
   music(1,5,1,7); wait(25);
   music(1,5,5,8); wait(25);
   music(1,5,8,9); wait(25);
   play(0,0,0,0);
   music(1,1,1,0);
   play(7,0,0,0);

Code:
play(7,0,0,0);
   for (i=40;i<=60;i++) sound(1,i,8);
   play(0,0,0,0);

Enfin, tu as les effets spéciaux (ping, explode, et shoot utilisent cette technique, mais tu peux le faire toi aussi), tu peux en faire plein assez simplement en quelques lignes de codes (vraiment ! 10 tout au plus !).

Tu peux lire mes explications et les exemples (en anglais), sur le forum de defence force :
http://forum.defence-force.org/viewtopic.php?f=24&t=692

J'en ai créé un de cette façon pour Oric Kong, pour le tableau de fin qui donne un bruit de poutres métalliques qui s'entrechoquent (ou un marteau su une enclume).

D'abord tu créés un fichier en assembleur (qui est en fait fait d'un tableau et d'une routine) :
https://github.com/DJChloe/Orickong_C/blob/master/src/Main/metalcrushfx.s

dans ce programme, assembleur, tu as un tableau de 14 valeurs qui correspondent à des registres du AY-8912 (voir les explications sur defence-force), perso, j'ai trouvé des valeurs par tatonnement, en faisant varier les différents paramètres avec un petit programme en BASIC que j'ai mis dans mes explications du forum. En fait j'ai repris tout ça depuis deux articles de Théoric.

L'autre partie de 4 lignes, c'est l'appel à la routine de l'Atmos pour jouer le son de ton effet sonore.

Puis dans le programme principal ( https://github.com/DJChloe/Orickong_C/blob/master/src/Main/main.c ),

d'abord tu déclares une fonction qui va te permettre d'éxécuter le code assembleur (ligne numéro 65 ) :
Code:
void metalcrushfx();

Donc, automatiquement, quand tu vas utiliser metalcrushfx() dans ton code, ça va appeler la ligne en assembleur qui s'appelle _metalcrushfx

et dans le code, ça s'utilise comme à la ligne numéro 1126 :
Code:
metalcrushfx();

Voici quelques effets sonores que j'ai pu trouver (pour la ligne de 14 paramètres) :
Electricité : 0,4,0,184,0,3,120,190,12,0,0,0,167,194
Hélicoptère : 168,191,0,3,184,191,14,0,0,0,167,194,76,176
Moteur : 1,5,193,7,7,8,7,8,53,151,47,151,0,152
Dans le cockpit d'un avion : 150,0,152,46,4,255,255,112,7,80,0,102,5,65
Un avion (turboprop) : 32,2,140,0,5,132,14,136,132,12,140,0,69,173
Un hélico, au loin : 14,136,132,12,140,0,69,173,0,5,208,4,169,192
Trouvé sur internet, ici (un autre hélicoptère) :
206,108,231,36,137,112,70,182,170,239,83,246,12,165

Dans Theoric :
PONG : EE 02 00 00 00 00 00 3E 10 00 00 D0 07 00
PCHH: 00 00 00 00 00 00 01 37 10 00 00 D6 0B 00

Twilighte à lui même exploré cette technique :
http://forum.defence-force.org/viewtopic.php?f=15&t=516

Sinon, oui, pour les sons de l'oric les paramêtres sont :
PING : 18,00,00,00,00,00,00,7E,10,00,00,00,0F,00
SHOOT: 00,00,00,00,00,00,0F,47,10,10,10,00,08,00
EXPLODE: 00,00,00,00,00,00,1F,47,10,10,10,00,18,00

ZAP utilise la même routine au début, puis une autre supplémentaire (donc plus complexe).
Je suis sure qu'en cherchant bien, on peut en trouver d'autres assez sympa.
Ladywasky
Ladywasky

Messages : 240
Date d'inscription : 25/08/2018
Age : 53

Revenir en haut Aller en bas

musique en c Empty Re: musique en c

Message par goyo Ven 11 Jan 2019 - 17:36

Ladywasky a écrit:Sinon, pour Sound() play() music() dans l'OSDK, tu peux te référer aux sources de mon Oric Kong, ce sont les mêmes instructions qu'en BASIC, avec les mêmes paramètres :
https://github.com/DJChloe/Orickong_C/blob/master/src/Main/main.c

exemples :
Code:
play(7,0,0,0);
 music(1,4,8,9); wait(64);
 music(1,4,7,9); wait(42);
 music(1,4,2,9); wait(20);
 music(1,4,5,9); wait(42);
 music(1,4,3,9); wait(42);
 music(1,4,1,9); wait(42);
 music(1,3,10,9); wait(42);
 music(1,3,8,9); wait(42);
 music(1,3,12,9); wait(20);
 music(1,3,10,9); wait(12);
 music(1,3,12,9); wait(18);
 music(1,3,10,9); wait(50);
 music(1,3,8,9); wait(100);
 ping();

Code:
music(1,4,2,7); wait(50);
 music(1,4,7,7); wait(25);
 music(1,4,6,7); wait(50);
 music(1,4,9,7); wait(25);
 music(1,4,7,7); wait(25);
 music(1,4,11,7); wait(30);
 music(1,5,2,7); wait(55);
 play(0,0,0,0);

Code:
play(7,0,0,0);
 music(1,3,1,7); wait(50);
 music(1,3,5,8); wait(50);
 music(1,3,8,9); wait(50);
 music(1,5,1,7); wait(25);
 music(1,5,5,8); wait(25);
 music(1,5,8,9); wait(25);
 play(0,0,0,0);
 music(1,1,1,0);
 play(7,0,0,0);

Code:
play(7,0,0,0);
 for (i=40;i<=60;i++) sound(1,i,8);
 play(0,0,0,0);

Enfin, tu as les effets spéciaux (ping, explode, et shoot utilisent cette technique, mais tu peux le faire toi aussi), tu peux en faire plein assez simplement en quelques lignes de codes (vraiment ! 10 tout au plus !).

Tu peux lire mes explications et les exemples (en anglais), sur le forum de defence force :
http://forum.defence-force.org/viewtopic.php?f=24&t=692

J'en ai créé un de cette façon pour Oric Kong, pour le tableau de fin qui donne un bruit de poutres métalliques qui s'entrechoquent (ou un marteau su une enclume).

D'abord tu créés un fichier en assembleur (qui est en fait fait d'un tableau et d'une routine) :
https://github.com/DJChloe/Orickong_C/blob/master/src/Main/metalcrushfx.s

dans ce programme, assembleur, tu as un tableau de 14 valeurs qui correspondent à des registres du AY-8912 (voir les explications sur defence-force), perso, j'ai trouvé des valeurs par tatonnement, en faisant varier les différents paramètres avec un petit programme en BASIC que j'ai mis dans mes explications du forum. En fait j'ai repris tout ça depuis deux articles de Théoric.

L'autre partie de 4 lignes, c'est l'appel à la routine de l'Atmos pour jouer le son de ton effet sonore.

Puis dans le programme principal ( https://github.com/DJChloe/Orickong_C/blob/master/src/Main/main.c ),

d'abord tu déclares une fonction qui va te permettre d'éxécuter le code assembleur (ligne numéro 65 ) :
Code:
void metalcrushfx();

Donc, automatiquement, quand tu vas utiliser metalcrushfx() dans ton code, ça va appeler la ligne en assembleur qui s'appelle _metalcrushfx

et dans le code, ça s'utilise comme à la ligne numéro 1126 :
Code:
metalcrushfx();

Voici quelques effets sonores que j'ai pu trouver (pour la ligne de 14 paramètres) :
Electricité : 0,4,0,184,0,3,120,190,12,0,0,0,167,194
Hélicoptère : 168,191,0,3,184,191,14,0,0,0,167,194,76,176
Moteur : 1,5,193,7,7,8,7,8,53,151,47,151,0,152
Dans le cockpit d'un avion : 150,0,152,46,4,255,255,112,7,80,0,102,5,65
Un avion (turboprop) : 32,2,140,0,5,132,14,136,132,12,140,0,69,173
Un hélico, au loin : 14,136,132,12,140,0,69,173,0,5,208,4,169,192
Trouvé sur internet, ici (un autre hélicoptère) :
206,108,231,36,137,112,70,182,170,239,83,246,12,165

Dans Theoric :
PONG : EE 02 00 00 00 00 00 3E 10 00 00 D0 07 00
PCHH: 00 00 00 00 00 00 01 37 10 00 00 D6 0B 00

Twilighte à lui même exploré cette technique :
http://forum.defence-force.org/viewtopic.php?f=15&t=516

Sinon, oui, pour les sons de l'oric les paramêtres sont :
PING : 18,00,00,00,00,00,00,7E,10,00,00,00,0F,00
SHOOT: 00,00,00,00,00,00,0F,47,10,10,10,00,08,00
EXPLODE: 00,00,00,00,00,00,1F,47,10,10,10,00,18,00

ZAP utilise la même routine au début, puis une autre supplémentaire (donc plus complexe).
Je suis sure qu'en cherchant bien, on peut en trouver d'autres assez sympa.

Wooww quelles connaissances !!   merci Ladywasky

je suis un peu un débutant en programmation sur Oric. Je n'ai hélas jamais pu terminer un jeu vidéo par manque de discipline et de rigueur, tendance à trop m’éparpiller ...

Je vais y aller tout doucement avec toutes ces précieuses infos .

je vais pouvoir m'amuser en créant des sons grâce à metalcrushfx() pour mon petit jeu d'action (dont je commence déjà à perdre le fils :-/ )
goyo
goyo

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

Revenir en haut Aller en bas

musique en c Empty Re: musique en c

Message par goyo Sam 12 Jan 2019 - 18:28

Au passage , si quelqu'un sait comment envoyer un son digitalisé en c, ça m’intéresse.

Je suppose que par exemple on stock les datas du son digitalisé dans un tableau de unsigned char. Puis on envoie rapidement par un poke les données à une adresse spécifique pour entendre le son  Rolling Eyes  ....... Enfin peut être que ce n'est pas si simple....  Shocked

En outre, je sais qu'avec le freeware Goldwave on peut facilement convertir des sons en mono 8bits...
goyo
goyo

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

Revenir en haut Aller en bas

musique en c Empty Re: musique en c

Message par Ladywasky Sam 12 Jan 2019 - 18:54

Je te conseille de jeter un œil au magazine Theoric, numéro 6, pages 25 et suivantes.
Ladywasky
Ladywasky

Messages : 240
Date d'inscription : 25/08/2018
Age : 53

Revenir en haut Aller en bas

musique en c Empty Re: musique en c

Message par retroric Lun 14 Jan 2019 - 2:21

Hello,

Je suis cette discussion depuis le début sans intervenir, mais pour info, c'est un sujet qui m'intéresse beaucoup également...

Donc, je tiens à dire un GRAND MERCI à Ladywasky pour le temps qu'elle a consacré à partager toutes ces infos techniques, ainsi que pour ses exemples d'effets sonores (pour ma part je vais de ce pas essayer le son "Electricité", qui m'intéresse tout particulièrement).

Et pour finir, je voulais aussi citer l'article de DBug sur le sujet de la musique sur Oric, paru dans le CEOMag n°296 et repris dans la liste d'articles d'OSDK:
http://osdk.org/index.php?page=articles&ref=ART5

Il s'agit ici de jouer des musiques au format MYM (variante du format YM  utilisé sur Atari ST, spécialement ocnçue en fonction des contraintes techniques particulières de l'Oric).

A noter que le source du "player" en assembleur est inclus avec un petit programme "frontal" en Basic dans les exemples du kit de développement OSDK (dans le sous-répertoire sample\basic\tap2dsk-GameMusics)
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 Empty Re: musique en c

Message par retroric Lun 14 Jan 2019 - 3:43

Un petit programme de démo en C des différents effets sonores proposés par LadyWasky (à partir de sa petite routine d'appel en ASM et des valeurs des registres fournies pour chaque effet).

Le son "Electricité" est top, c'est pile ce que je cherchais, merci !!  Very Happy

Fichier ZIP avec les sources et le programme main.TAP (dans BUILD/) ci-joint:
Fichiers joints
musique en c Attachment
SoundFX-v0.1.zip (6 Ko) Téléchargé 218 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 Empty Re: musique en c

Message par goyo Lun 14 Jan 2019 - 12:22

laurentd75 a écrit:Un petit programme de démo en C des différents effets sonores proposés par LadyWasky (à partir de sa petite routine d'appel en ASM et des valeurs des registres fournies pour chaque effet).

Le son "Electricité" est top, c'est pile ce que je cherchais, merci !!  Very Happy

Fichier ZIP avec les sources et le programme main.TAP (dans BUILD/) ci-joint:

Un grand merci à Ladywasky et Laurentd75 pour toutes ces précieuses infos .

Pour mon petit jeu en préparation j'ai besoin de créer les sons suivants : pluie, goutte d'eau, foudre, chat qui miaule, bruit de craquement de poutre. rien que ça !  (Je n'arrive pas à faire fonctionner le générateur de son de Twilight : SDES sur Oricutron.).
Je pensais au son digitalisé mais en C pour le jouer ces sons digitalisés en même temps que l'animation ça relève du génie de Chema ou Twilight  ou autres pro.

Encore merci, ça m'aide bien quand même de connaitre la technique qui est utilisée par metalcrushfx() c'est déjà super. J'ai besoin d'être beaucoup moins ambitieux pour mon projet.

petit aperçu du projet en cours:
musique en c Rainho10
goyo
goyo

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

Revenir en haut Aller en bas

musique en c Empty Re: musique en c

Message par romu3 Lun 14 Jan 2019 - 13:46

Hehe donc il te faut un :
-pluie : de la pluie (donc bruit qui va durer?) Ou une goutte? (un ploc quoi)
-goutte : un ploc ou un splisch (goutte qui s'ecrase)?
-foudre : assez long donc
-miaule : miaou donc Wink
-poutre : un crac ou plus un grincement de poutre?
romu3
romu3

Messages : 75
Date d'inscription : 09/10/2018

Revenir en haut Aller en bas

musique en c Empty Re: musique en c

Message par goyo Lun 14 Jan 2019 - 14:04

romu3 a écrit:Hehe donc il te faut un :
-pluie : de la pluie (donc bruit qui va durer?) Ou une goutte? (un ploc quoi)
-goutte : un ploc ou un splisch (goutte qui s'ecrase)?
-foudre : assez long donc
-miaule : miaou donc Wink
-poutre : un crac ou plus un grincement de poutre?

Oui exactement !
pour la pluie, un bruit de fond constant d'averse / ou à la place une musique d'action/panique permanente.
pour la goutte : un bruit de départ de la goutte du plafond et la même pour qu'elle touche le sol.
pour la foudre : quand la foudre éclate, c'est la vagues suivantes de gouttes plus nombreuses et plus rapide. (entre chaque niveau)
miaulement : quand le chat apparaît à droite ou à gauche de l'écran et éventuellement quand il passe dans les jambes du joueur.  
la poutre : car l'eau s'accumule sur le toit plat qui se rempli d'eau et s'affaisse d'une ligne : donc difficulté accrue.
le jeu pourrait s'appeler "rain panic" ou "rain hour"

musique en c Rainho11
goyo
goyo

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

Revenir en haut Aller en bas

musique en c Empty Re: musique en c

Message par retroric Lun 14 Jan 2019 - 14:40

Pour la pluie et la foudre, ça va être hyper facile (à base du générateur de bruit blanc) d'ailleurs rien que dans la K7 de démo de l'Oric Atmos on trouve ces 2 bruitages à un moment (vers la fin de la démo) , il faut juste trouver les bons paramètres mais ça me semble tout à fait dans les sons "classiques" faciles à avoir avec le PSG (comme les bruits d'hélico et de moteur., et certains sons métalliques..).

Pour la goutte en revanche, ça va déjà être + difficile je pense...

Et pour le reste.. pour les sons plus élaborés comme le miaulement et la poutre, à mon avis ça va être chaud ! Smile

Après effectivement, en théorie tu pourrais utiliser des échantillons, mais sur l'Oric vu l'interfaçage du PSG à travers le VIA, comme on n'a pas d'accès direct à tous les registres, ça prend bcp de temps d'initialiser chaque registre, et du coup c'est aussi assez intensif en CPU... Bref, on doit pouvoir faire jouer du son échantillonné, mais il doit rien rester en cycles CPU pour le jeu...

D'ailleurs, je crois que le "player" MYM de DBug doit consommer pas mal de CPU et je ne suis pas sûr qu'on puisse faire un jeu rapide qui utilise le player MYM enn musique de fond... Et même dans les jeux de Twilighte (Stormlord notamment), on devait choisir entre musique et bruitages, on ne pouvait pas avoir les 2 en même temps...

_________________
retrOric (Laurent D)https://github.com/retroric
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 Empty Re: musique en c

Message par Jede Lun 14 Jan 2019 - 15:05

laurentd75 a écrit:
D'ailleurs, je crois que le "player" MYM de DBug doit consommer pas mal de CPU et je ne suis pas sûr qu'on puisse faire un jeu rapide qui utilise le player MYM enn musique de fond... Et même dans les jeux de Twilighte (Stormlord notamment), on devait choisir entre musique et bruitages, on ne pouvait pas avoir les 2 en même temps...

Normalement, le player mym ne devrait pratiquement rien consommer puisque ce n'est pas du tracker mais grosso modo du dump d'ym. En revanche, cela consomme beaucoup en mémoire 16KB, 20KB etc ...

En ce qui concerne les jeux de Twilighte sans musique ou avec, c'était un peu mes longues discussions avec lui. Dans les visus, il se tournait vers moi pour me dire qu'il n'y aurait pas de musique "ingame". En gros, cela ralentit la gestion du clavier vu qu'on doit dans les 2 passer par le via et le PSG. Sur Stormlord, cela y est mais la musique est assez lente.
Jede
Jede

Messages : 308
Date d'inscription : 20/04/2016
Localisation : Var

Revenir en haut Aller en bas

musique en c Empty Re: musique en c

Message par Dbug Lun 14 Jan 2019 - 17:39

Le player mym prend pas mal de temps tout de meme, la décompression est pas super super rapide, mais ca laisse du temps libre.

Pour veux qui veulent toucher les registres du YM, moi ce que je conseille c'est de passer par deux tables intermédiaire représentant les 15 registres du YM, avec une routine qui met a jour le YM physique uniquement pour les registres qui ont été changés depuis la dernière mise à jour.

Pour le temps CPU, il faut évidement optimiser la routine d'accès, mais en général le premier truc a faire est de remplacer l'IRQ système 100hz par une a 50hz synchronisée sur l'affichage, qui se charge de faire la gestion clavier et YM en même temps... c'est ce que j'ai fait dans mon entrée pour la compo CEO.

_________________

Dbug
Dbug

Messages : 248
Date d'inscription : 06/01/2013

Revenir en haut Aller en bas

musique en c Empty Re: musique en c

Message par retroric Lun 14 Jan 2019 - 18:02

Merci DBug pour l'info, on regardera ta compo pour le concours CEO pour vori comment tu as fait, car j'avoue que personnellement je ne sais pas trop "remplacer l'IRQ système 100hz par une a 50hz synchronisée sur l'affichage" Smile

Jede a écrit:
En ce qui concerne les jeux de Twilighte sans musique ou avec
(...)
En gros, cela ralentit la gestion du clavier vu qu'on doit dans les 2 passer par le via et le PSG. Sur Stormlord, cela y est mais la musique est assez lente.
Merci Jede de me faire souvenir du mode de gestion du PSG (et de l'imprimante et du clavier) à travers les ports du VIA 6522 sur l'Oric, qui est un peu m...ique et lent (encore plus donc pour le clavier qui passe à la fois via le 6522 ET le PSG...) . Et pour les accès au port imprimante c'est compliqué aussi car il faut désactiver (temporairement) la scrutation clavier pour éviter les conflits, c'est aussi mentionné dans l'Oric à nu... .

Bref...  Au passage, l'adresse de la routine ROM de LadyWasky ne vaut que pour l'Oric Atmos, sur l'Oric 1 la routine est à une autre adresse et de plus elle est pas mal buggée du fait qu'elle soit bcp plus lente (d'après les infos dans l'Oric A Nu).

Du coup, autant s'inspirer de la routine de l'Atmos et de tes indications donc (utiliser une table intermédiaire) pour coder une nouvelle routine plutôt que d'appeler celle en ROM et de gérer les cas Oric1/Atmos...

PS - juste pour info, comme je vois que mon "programme" a été téléchargé pas mal de fois, attention hein c'est pas vraiment un "modèle" à suivre, j'ai voulu faire vite, mais l'idéal évidemment, plutôt que d'avoir une routine pour chaque effet sonore, serait d'avoir une fonction C à laquelle on passe l'adresse des valeurs à positionner pour les registres du PSG, et qui se charge de faire le boulot... en appelant une routine ASM compatible Oric1/Atmos développée pour l'occasion, en s'inspirant donc de la routine Atmos de la ROM...


Dernière édition par laurentd75 le Lun 14 Jan 2019 - 23:47, édité 1 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 Empty Re: musique en c

Message par Ladywasky Lun 14 Jan 2019 - 22:01

Sinon, il y a une solution proposée dans Théoric n°21, pages 12 et suivantes qui devrait être exploitable en C (la solution proposée vaut pour un programme en basic et assembleur). Je dis que c'est jouable...
Ladywasky
Ladywasky

Messages : 240
Date d'inscription : 25/08/2018
Age : 53

Revenir en haut Aller en bas

musique en c Empty Re: musique en c

Message par romu3 Mar 15 Jan 2019 - 0:55

Comme indiqué plus haut par Ladywasky Twilighte avait en effet fait un petit programme en  basic afin d'explorer les différentes options possibles des registres du chip sonore.  Etant plus à l'aise avec les décimaux que l'hexa j'ai modifié un peu le programme de Twilighte afin d'afficher des décimales. J'ai aussi indiqué les gammes de valeurs utilisables pour chaque octet, pour les octets 7 et 13 il faudra se référer aux indications données plus haut par Ladywasky. Enfin j'ai rajouté une option Lprint afin de sortir directement les 14 octets des registres afin de faire un copié-collé des valeurs les plus concluantes. Wink

C'est dispo sur Defence Force à la suite des posts de Twi :
http://forum.defence-force.org/viewtopic.php?f=15&t=516&p=18735#p18735
romu3
romu3

Messages : 75
Date d'inscription : 09/10/2018

Revenir en haut Aller en bas

musique en c Empty Re: musique en c

Message par retroric Mer 16 Jan 2019 - 15:03

Merci LadyWasky & Romu3 pour ces infos complémentaires, je vais étudier tout ça, ça m'intéresse !

En attendant, j'ai pu avancer un peu sur le sujet  d'une routine simpliste compatible Oric1/Atmos en assembleur et appelée à partir du C.

Pour la routine 6502, en gros j'ai recopié tout simplement la routine de la ROM de l'Atmos, ce qui permet une compatibilité Oric1/Atmos (d'autant plus que la routine de l'Oric1 est un peu buggée d'après l'Oric A Nu).

Ca m'a permis de tester aussi plus en profondeur l'interfaçage entre le C et l'ASM, j'ai d'ailleurs buté sur qq difficultés dont certaines non résolues (appel d'une fonction ASM à partir de la directive "asm" en C, qui est l'objet d'un autre sujet initié par goyo...), mais j'ai une autre option qui fonctionne, en déclarant une routine ASM comme une fonction C, et en lui passant des paramètres via le formalisme C (donc: sur la pile).

J'ai aussi buté sur une difficulté en C (pouvoir initialiser un tableau pointant sur les adresses des données des différents effets sonores, erreur "initializer must be constant" que je n'ai pas su résoudre) mais que j'ai pu contourner en réalisant l'équivalent mais côté assembleur...

Et dernière chose, j'ai buté agalement sur l'utilisation des directives ".data" et ".text" dans mon source assembleur, j'ai voulu "bien faire", mais si j'active ces directives, ça ne marche plus, ça me semble bizarre, je ne comprends pas...

Bref... J'ai publié ça sur mon nouveau compte GitHub dédié à mes "travaux" sur Oric que je viens de créer tout récemment: https://github.com/retroric

Le code de mon programme de test "SoundFXGallery" est publié ici: https://github.com/retroric/SoundFXGallery

Il y a donc 2 nouvelles  fonctions pour aller positionner les valeurs dans les registres du PSG pour jouer un son:

  • une version avec une fonction utilisant la directive "asm" pour passer des paramèters et appeler une routine assembleur, et qui ne fonctionne pas (encore):
    void  play_soundfx(const char *psg_data);

  • une version qui fonctionne, qui est donc juste une déclaration en C d'une routine ASM, et qui prend donc ses paramètres sur la pile:
    extern void  play_soundfx2(const char *psg_data);


Je vous mets le tout en ZIP aussi ci-dessous:
Fichiers joints
musique en c Attachment
SoundFXGallery-v0.2-WIP.zip (11 Ko) Téléchargé 257 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 Empty Re: musique en c

Message par Ladywasky Mer 16 Jan 2019 - 15:23

Tu sais que c'est une bonne idée d'avoir fait une fonction prête à l'usage ?

Et je préfère de loin l'idée de ta version qui fonctionne a celle qui ne fonctionne pas Smile

Ladywasky
Ladywasky

Messages : 240
Date d'inscription : 25/08/2018
Age : 53

Revenir en haut Aller en bas

musique en c Empty Re: musique en c

Message par retroric Jeu 17 Jan 2019 - 15:20

Ladywasky a écrit:Tu sais que c'est une bonne idée d'avoir fait une fonction prête à l'usage ?

Et je préfère de loin l'idée de ta version qui fonctionne a celle qui ne fonctionne pas Smile
Oui, en fait j'ai beaucoup réfléchi, et je me suis dit qu'après avoir publié des versions qui marchaient pas du tout, ce serait bien que je publie une version où il y a au moins un truc sur 2 qui fonctionne !!! Razz Very Happy Razz

C'est mon secret pour briller au boulot: faire régulièrement des trucs tout pourris, et de temps en temps sortir un truc bien, pour épater la galerie et marquer les esprits !! Very Happy Very Happy 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 Empty Re: musique en c

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Page 1 sur 2 1, 2  Suivant

Revenir en haut

- Sujets similaires

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