Pages: 1
Salut
J ai comme projet de pouvoir controler toute sorte de puce sonore que je juge mythique .
J'utilise des pic comme microcontroler et le C comme language .
Je suis débutant en éléctronique , en programmation C et je comprend pas bien l'anglais ...
je sais c'est pas bien parti
DATASHEET >http://www.alldatasheet.com/datasheet-pdf/pdf/84281/YAMAHA/YM3812.html
Je suis donc complètement perdu , avez vous des conseils vers ou me diriger je ne sais vraiment pas par quoi commencer , dans un premier temps ça serai possible de déclencher le kick par exmple sans midi ? Si oui sauriez vous m'expliquer ?
Sinon j'avais trouver ceci comme début de réponse mais en anglais
citation :
The YM3812 is certainly a classic from the old DOS days. It was used on some of the first sound boards for the IBM PC (Adlib, Sound Blaster).
The first thing you need is the "Application Manual" it is separate from the datasheet and goes into much more detail. It includes a partial example circuit. It leaves out some of the audio amplifier/lowpass filter circuitry for simplicity though.
Hardware-wise there are other things you will need (You may be able to pull most of this from your board):
The YM3014 DAC chip that goes with it. It is probably on the same board. Look up the data sheet for this too.
A 3.6 MHz oscillator since the chip needs this for timing. (Most sound cards I've seen used a 3.57 MHz NTSC colorburst crystal)
The DAC also requires an op-amp to support its sample and hold system.
After the DAC you will need audio amplifiers and possibly some kind of low-pass filter to clean up the high-end DAC noise.
To interface to the BS2, you will probably connect the D0-D7 data bus of the chip to the lower or upper 8 I/O pins so you can use a byte-wide IO instruction (OUTL or OUTH). You will need to create a couple of read and write routines that simulate the I/O operations that you can call with GOSUB. Use the timing diagrams in the data sheet as a guide to show you which pins have to be cycled and in which order.
On the software side, you will need to do something like this to set registers in the chip:
Continuously perform a read cycles on the status register until the BUSY bit turns off. (RD=0, A0=0, BS2 Direction of D0-D7 set to input, Wait for D0 to go low) I'm not sure if the YM3812 had a busy status bit or not - datasheet doesn't show it - but software always checked for it. Newer OPL chips did have a busy bit. (The BUSY bit just turns on for 64 clock cycles after a register write)
Perform a write cycle to the "register select" address (WR=0, A0=0, BS2 direction of D0-D7 set to Output, D0-D7 set to register number)
May need a short delay here - it takes a couple clock cycles for the chip to setup for register write (The BS2 is probably too slow for you to need this delay)
Perform a write cycle to the "data" address (WR=0, A0=1, BS2 direction of D0-D7 set to output,D0-D7 set to register value)
As for initialization, you will need to write the value 20h to register 01h in order to turn on all 4 waveforms. Zeroing any other registers will prevent the chip from making noise. You probably won't need to worry about that since the RESET pin is supposed to clear them.
The basic of process of generating sounds is:
Load the registers of the operators for the channel you are using with the correct values.
Set the frequency (block, f-number) of the channel to what note you want.
Turn on the KON bit to trigger the note. (This may be set the same time as you set the frequency, or sometime later)
When it is time to stop the note, turn off the KON bit. The note will continue to sound until the envelope generator finishes its release cycle.
A while back there was a discussion on the Vintage Computer Forums about building an Adlib compatible OPL2 sound board. You might be able to find schematics that will help you with the analog output stages there:
http://www.vintage-computer.com/vcforum ... Sound-Card
continued on:
http://www.vintage-computer.com/vcforum ... ound-board
You can get some old music for this chip from:
http://chiptunes.back2roots.org/
Click on "Adlib Archive" in the upper left of the page.
I'd recommend you start with files in the Apogee.zip file these are .IMF files and are easy to decode. They are 4 byte records:
1 byte Register number
1 byte Register value
2 bytes Time delay (Usually # of 1/60th second ticks)
The AdPlug software source code contains routines to parse most of the formats in this archive.
http://adplug.sourceforge.net/index.php
Hope this helps, let me know if you need any other help.
Merci d 'avance pour vos réponse et votre patience
Hors ligne
Bonjour,
Tu connais sans doute le site de référence sur les PIC en français :
http://www.abcelectronique.com/bigonoff/
Concernant ta puce, tu pourrais chercher d'avantage de doc, notamment le manuel d'application. Je ne l'ai pas trouvé dans une recherche rapide.
Je ne programme pas sur PIC, mais sur AVR.
Bonne recherche.
Hors ligne
Bienvenue Vaurien,
Peut-être que ça pourra t'être utile, même si c'est atmel plutot que pic et pas la même puce sonore que toi!
http://fullmaj.rd-h.fr/wiki/doku.php?id=sidaster : puce SID
http://kaput.retroarchive.org/MIDI.html : pour puce SN76496
http://www.straytechnologies.com/wiki/YM_MINI : pour puce YM2149
Hors ligne
Salut
Emoc merci pour les liens je vais allez fouiner ça .
Mushussu pense tu qu'il y ai une grande difference entre programmer une puce avr et une pic ?
Je sais pas trop comment ça marche ni les difference mais peu etre le fonctionnement de bases est le meme et tu saurais éclairer ma lanterne sur comment envoyer des midi note on/off dans les registre d 'une puce et comment brancher cette puce ?
Voici deux liens interessant >>>
Programming the AdLib/Sound Blaster FM Music Chips >>> http://www.shipbrook.net/jeff/sb.html
OPL (YM3526) Programming Information >>> http://www.oplx.com/opl.htm
( mais je suis nul en anglais et je pige pas grand chose )
merci d avance
ps>> Si vous avez une idée d 'une puce sonore facile a trouver et plus simple a programmer pour commencer hesiter pas non plus
Dernière modification par Vaurien (2012-11-06 17:04:53)
Hors ligne
Bonsoir,
Pour le langage C, je te conseille le livre de Claude Delannoy :
Langage C
ISBN : 2212124457
Concernant la différence entre les PIC et les AVR, il s'agit de nom différent dans les registres qui commandent les actions du microcrontroleur ainsi que des logiques un peu différentes.
Pourquoi veux tu utiliser les PIC ? N'as tu pas envisagé Arduino pour commencer cela peut être une bonne idée sachant qu'il y a une grande communauté y compris francophone.
As tu déjà du matériel ou est ce dans le cadre d'une école ?
Pour le midi c'est assez simple.
Tu peux trouver de la documentation sur le site aruino.cc pour le montage pour envoyer du midi.
Hors ligne
Salut
Pour le choix du pic , j 'avais acheter y'a un temps un flasheur et je n'ai pas envie d'en racheter un autre , il y a moyen de programmer les pic en C , je voulais commencer par ce language vu la documentation et les conseils du style
citation :
Si tu maitrise le C tu t'adaptera plus facilement au autres language
et puis faut dire je suis sacrement borner
Je prend ça comme un objectif ludique pour apprendre le monde des microcontroleur , du language C et de la bases du chiptune
Voila quelques heures que j'étudie les registres et le datasheet .
Apparemment ya un kick , un snare etc préenregistre
je pense donc commencer par declencher les samples avec un boutons poussoir histoire de me mettre dans le bain et pas directement m'attaquer au midi .
Donc après une petite étude il me faut un pic qui a 12 sorties
- 4 pour les pin CS / RD / WR / A0
(dans l'ordre ou je les ai écris )
0100 > Ecrire l'adress dans le registre de l OPL
0101 > Ecrire le contenu du registre dans l OPL
0010 > Lecture du statut de l OPL
0011 > (data of data bus not assured ) ???
1xxx > ( set data bus d0 a d7 to high impedance ) ???
- 8 pin pour les bus data de D0 a D7
- L'adresse pour un kick est BD (hex)
- Pour faire sonner le kick l 'adresse c'est 10 (hex)
Donc si j ' ai bien compris je vai ecrire un programme qui contiendra ceci
- 0100 > Ecrire l'adress dans le registre de l OPL ( dans les pin CS/RD/WR/A0 )
- BD > adresse du kick ( bus data )
- 0101 > 0101 > Ecrire le contenu du registre dans l OPL ( dans les pin CS/RD/WR/A0 )
- 0010 > Lecture du statut de l OPL
- 0100 > Ecrire l'adress dans le registre de l OPL ( dans les pin CS/RD/WR/A0 )
- 10 > faire sonner le kick ( bus data )
- 0101 > Ecrire le contenu du registre dans l OPL ( dans les pin CS/RD/WR/A0 )
- 0010 > Lecture du statut de l OPL
Merci de bien vouloir me corriger ou me dire que j'ai rien compris au final
Dernière modification par Vaurien (2012-11-06 22:51:55)
Hors ligne
Pages: 1