FM-PAC / MSX-MUSIC ( Yamaha YM-2413 ) ------------------------------------- In deze tekst zal alleen het direct programmeren van de MSX-MUSIC besproken worden, dus niet de FM-BASIC mogelijkheden, omdat deze uitú eindelijk toch gebruik maken van de directe aansturing. De MSX-MUSIC of de FM-PAC neemt voor de aansturing twee I/O poorten in gebruik. Helaas worden deze registers alleen gebruikt om van de comú puter naar de FM-PAC te schrijven, dus lezen van registers van de FM-PAC/MSX-MUSIC is niet mogelijk. 07C h - Adrespoort. 07D h - Data Poort. Om deze poorten juist aan te sturen in machine-taal is het handig om het volgende programma te gebruiken: ;Reg. D bevat register nummer voor FM-PAC. ;Reg. E bevat data voor gekozer register. SET_FM: LD A,D OUT (07CH),A LD A,E OUT (07DH),A EX (SP),HL ;Deze 2 commando's dienen slechts als korte EX (SP),HL ;pauze om de PAC de data te laten verwerken RET ;voor er weer nieuwe data wordt gestuurt. De FM-PAC bevat 43 programmeerbare registers voor het instellen van frequentie, volume, instrumenten, drums en eventueel samples. Dit laatste is nogal moeilijk aangezien de FM-PAC geen ingebouwde hardware heeft om dit zelfstandig zoals de MUSIC-MODULE af te spelen moet hierú voor zelf in ML-code een routine worden geschreven die via de nodige registers de sample data in de FM-PAC stuurt, zodat deze dit sample op de geluids output zet. #0Fh FM.TST 7 6 5 4 3 2 1 0 T---U---U---U---U---U---U---U---S V - V - V - V - VSNDV - V - VSMPV Z---Q---Q---Q---Q---Q---Q---Q---[ SND - 1=Sound output van de chip is uit. SAMP - 1=Sample mode aan, een vier bit's sample kan geschreven worden naar register #10h, de 4 hoogste bit's. #10h - #18h LOWFRQ 7 6 5 4 3 2 1 0 T---U---U---U---U---U---U---U---S VFQ7VFQ6VFQ5VFQ4VFQ3VFQ2VFQ1VFQ0V Z---Q---Q---Q---Q---Q---Q---Q---[ #20h - #28h SELECT 7 6 5 4 3 2 1 0 T---U---U---U---U---U---U---U---S V - V - VSUSVKEYVOC2VOC1VOC0VFQ8V Z---Q---Q---Q---Q---Q---Q---Q---[ FQ 8/0 - Frequency van kanaal 1 tot 9. OC 2/0 - Octaaf van kanaal 1 tot 9. KEY - Als er een nieuwe toon aan geslagen moet worden dan moet dit eerst op 0 gezet worden. Vervolgens kan de nieuwe data inge- laden worden (Frequentie, Instrument en volume), daarna dit bit weer op 1 zetten. SUS - Staat dit bit op 1 dan vloeit de toon langzaam af nadat het KEY bit op 0 is gezet. Staat SUS op 0 dan stopt de toon me- teen wanneer het KEY bit uitgezet wordt. #30h - #38h VOLINS 7 6 5 4 3 2 1 0 T ---U---U---U---U---U---U---U---S VIN3VIN2VIN1VIN0VVL3VVL2VVL1VVL0V Z---Q---Q---Q---Q--- ---Q---Q---[ VL 3/0 - Volume van kanaal 1 tot 9. Bij binair 0000 wordt het hoogste volume bereikt. IN 3/0 - Instrumen van kanaal 1 tot 9. Er zijn 16 Instrumenten, waar- van instrument nummer 0, via de registers #00 tot #07 ge- programmeert kan worden. NR: Instrument: 00 Software Instrument 01 Violin 02 Guitar 03 Piano 04 Flute 05 Clarinet 06 Oboe 07 Trumpet 08 Organ 09 Tube 10 Synthesizer 11 Harpsicord 12 Vibraphone 13 Synthesizer Bass 14 Electric Piano 1 15 Electric Piano 2 #03h DRMSEL 7 6 5 4 3 2 1 0 T---U---U---U---U---U---U---U---S V - V - VSELVBD VSD VTOMVCIMVHH V Z---Q---Q---Q---Q---Q---Q---Q---[ SEL - Als dit bit 1 is dan zullen de kanalen 7 tot 9 worden gebruikt voor de drum instellingen en de bit's 4 tot 0 kunnen worden gebruikt om een drum aan te sturen. BD - Bass Drum :1 = Activeer, mits SEL op 1 staat. SD - Snare Drum. TOM - Tom-Tom. CIM - Cimbal. HH - Hi Hat. De Frequenties en volumen van de Drum's zijn als volgt verdeelt: Reg: Gebruik: #16h Frequentie bit 7 tot 0 voor de BassDrum. #17h Frequentie bit 7 tot 0 voor de SnareDrum en de HiHat. #18h Frequentie bit 7 tot 0 voor de TomTom en de Cimbal. #26h Octaaf bit 2 tot 0 en Frequentie bit 8 voor BassDrum. #27h Octaaf bit 2 tot 0 en Frequentie bit 8 voor SnareDrum en de HiHat #28h Octaaf bit 2 tot 0 en Frequentie bit 8 voor Tom-Tom en de Cimbal. #36h Low nibble is volume van Bass Drum. ( 0 is het hoogste volume) #37h High nibble is volume van Hi Hat. Low nibble is volume van Snare Drum. #38h High nibble is volume van Cimbal. Low nibble is volume van Tom-Tom. Programmeren van het Software-Instrument. De FM bevat voor elk instrument 2 operatoren. Het geluid wordt opgeú wekt via de FM-synthese dat staat voor Frequency Modulation. Het Sysú teem werkt het zelfde als dat van de Music-module/MSX-Audio alleen de maximum waarden zullen niet altijd overeen komen, maar de theorie is het zelfde. #00h/01h SET.B / SET.A. 7 6 5 4 3 2 1 0 T---U---U---U---U---U---U---U---S V AMVVBRVS/DVRKSVMS3VMS2VMS1VMS0V Z---Q---Q---Q---Q---Q---Q---Q---[ #00H voor operator B en #01h voor operator A. AM - Amplitude Modutation. VBR - Vibrato. S/D - 0 = Decay; 1 = Sustain. RKS - Rate Key Scale. MS3/0 - Multi sample wave selection. #02h KSCMOD 7 6 5 4 3 2 1 0 T---U---U---U---U---U---U---U---S VLK1VLK0VMD5VMD4VMD3VMD2VMD1VMD0V Z---Q---Q---Q---Q---Q---Q---Q---[ LK1/0 - Level Key Scale. MD5/0 - Modulation Control. #03h FEED 7 6 5 4 3 2 1 0 T---U---U---U---U---U---U---U---S VLK1VLK0V - VDS2VDS1VFD2VFD1VFD0V Z---Q---Q---Q---Q---Q---Q---Q---[ LK1/0 - Level Key Scale. DS2/1 - Distorted Wave Form. FD2/0 - FM-Feedback constant. #04h / #05h CTRL.B / CTRL.A 7 6 5 4 3 2 1 0 T ---U---U---U---U---U---U---U---S VAT3VAT2VAT1VAT0VDC3VDC2VDC1VDC0V Z---Q---Q---Q---Q---Q---Q---Q---[ AT3/0 - Attack envelope rate. DC3/0 - Decay envelope rate. #06h / #07h IND.B / IND.A 7 6 5 4 3 2 1 0 T---U---U---U---U---U---U---U---S VIN3VIN2VIN1VIN0VRL3VRL2VRL1VRL0V Z---Q---Q---Q---Q---Q---Q---Q---[ IN3/0 - Indication Decay / Sustain level. RL3/0 - Release envelope rate. De FM-synthese zit nogal ingewikkeld in elkaar, vooral voor de beú ginner is het gewoon een kwestie van proberen. Gelukkig zijn er aardig wat muziek programma's op de markt die dit zelf behandelen.