YAMAHA Sound Generator LSI YMZ294 interface

Dependents:   Workshop_SSG

YMZ294.h

Committer:
yamaguch
Date:
2011-07-06
Revision:
0:4d1fe8f35716

File content as of revision 0:4d1fe8f35716:

#ifndef MBED_YMZ294_H
#define MBED_YMZ294_H

#include "mbed.h"

enum Channel {CHANNEL_A = 0, CHANNEL_B, CHANNEL_C};

enum Mixer {NONE = 0x3F,
            TONE_A = ~(1 << 0), TONE_B = ~(1 << 1), TONE_C = ~(1 << 2),
            NOISE_A = ~(1 << 3), NOISE_B = ~(1 << 4), NOISE_C = ~(1 << 5)
           };

class YMZ294 {
public:
    YMZ294(PinName dataPin0, PinName dataPin1, PinName dataPin2, PinName dataPin3,
           PinName dataPin4, PinName dataPin5, PinName dataPin6, PinName dataPin7,
           PinName csPin, PinName wrPin, PinName a0Pin);
    void setTone(Channel channel, float freq);
    void setVolume(Channel channel, int volume);
    void setNoise(int freq);
    void setEnvelope(int freq, int shape);
    void setMixer(Mixer m0, Mixer m1 = NONE, Mixer m2 = NONE, Mixer m3 = NONE, Mixer m4 = NONE, Mixer m5 = NONE);
private:
    void write(char data, bool dataWrite = false);
    void writeData(char address, int data, int nBytes = 1);

    BusOut dataPins;
    DigitalOut csPin;
    DigitalOut wrPin;
    DigitalOut a0Pin;
    char volumes[3];
    float freqs[3];
    float noiseFreq;
};
#endif