diff options
Diffstat (limited to 'libkmid/midiout.h')
-rw-r--r-- | libkmid/midiout.h | 251 |
1 files changed, 0 insertions, 251 deletions
diff --git a/libkmid/midiout.h b/libkmid/midiout.h deleted file mode 100644 index 93bbfff8c..000000000 --- a/libkmid/midiout.h +++ /dev/null @@ -1,251 +0,0 @@ -/* midiout.h - class midiOut which handles the /dev/sequencer device - This file is part of LibKMid 0.9.5 - Copyright (C) 1997,98,99,2000 Antonio Larrosa Jimenez - LibKMid's homepage : http://www.arrakis.es/~rlarrosa/libkmid.html - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public License - along with this library; see the file COPYING.LIB. If not, write to - the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. - - Send comments and bug fixes to Antonio Larrosa <larrosa@kde.org> - -***************************************************************************/ -#ifndef _MIDIOUT_H -#define _MIDIOUT_H - -#include <libkmid/dattypes.h> -#include <libkmid/deviceman.h> -#include <libkmid/midimapper.h> -#include <stdio.h> - -/** - * External MIDI port output class . This class is used to send midi - * events to external midi devices. - * - * MidiOut is inherited by other MIDI devices classes - * (like SynthOut or FMOut) to support a common API. - * - * In general, you don't want to use MidiOut directly, but within a - * DeviceManager object, which is the preferred way to generate music. - * - * If you want to add support for other devices (I don't think - * there are any) you just have to create a class that inherits from MidiOut - * and create one object of your new class in - * DeviceManager::initManager(). - * - * @short Sends MIDI events to external MIDI devices - * @version 0.9.5 17/01/2000 - * @author Antonio Larrosa Jimenez <larrosa@kde.org> - */ -class MidiOut -{ - private: - class MidiOutPrivate; - MidiOutPrivate *d; - - protected: - - /** - * @internal - * This is the /dev/sequencer file handler. - * Remember _not_to_close_ it on MidiOut, but just on DeviceManager - */ - int seqfd; - - int device; - - int devicetype; - - int volumepercentage; - - MidiMapper *map; - - uchar chnpatch [16]; - int chnbender [16]; - uchar chnpressure [16]; - uchar chncontroller [16][256]; - int chnmute [16]; - - int _ok; - - void seqbuf_dump (void); - void seqbuf_clean(void); - - public: - - /** - * Constructor. After constructing a MidiOut device, you must open it - * (using openDev() ). Additionally you may want to initialize it - * (with initDev() ), - */ - MidiOut(int d=0); - - /** - * Destructor. It doesn't matter if you close the device ( closeDev() ) - * before you destruct the object because in other case, it will be closed - * here. - */ - virtual ~MidiOut(); - - /** - * Opens the device. This is generally called from DeviceManager , so you - * shouldn't call this yourself (except if you created the MidiOut object - * yourself. - * @param sqfd a file descriptor of /dev/sequencer - * @see closeDev - * @see initDev - */ - virtual void openDev (int sqfd); - - /** - * Closes the device. It basically tells the device (the file descriptor) - * is going to be closed. - * @see openDev - */ - virtual void closeDev (); - - /** - * Initializes the device sending generic standard midi events and controllers, - * such as changing the patches of each channel to an Acoustic Piano (000), - * setting the volume to a normal value, etc. - */ - virtual void initDev (); - - /** - * @return the device type of the object. This is to identify the - * inherited class that a given object is polymorphed to. - * The returned value is one of these : - * - * @li KMID_EXTERNAL_MIDI if it's a MidiOut object - * @li KMID_SYNTH if it's a SynthOut object (as an AWE device) - * @li KMID_FM if it's a FMOut object - * @li KMID_GUS if it's a GUSOut object - * - * which are defined in midispec.h - * - * @see deviceName - */ - int deviceType () const { return devicetype; } - - /** - * Returns the name and type of this MIDI device. - * @see deviceType - */ - const char * deviceName (void) const; - - /** - * Sets a MidiMapper object to be used to modify the midi events before - * sending them. - * - * @param map the MidiMapper to use. - * - * @see MidiMapper - * @see midiMapFilename - */ - void setMidiMapper ( MidiMapper *map ); - - /** - * See DeviceManager::noteOn() - */ - virtual void noteOn ( uchar chn, uchar note, uchar vel ); - - /** - * See DeviceManager::noteOff() - */ - virtual void noteOff ( uchar chn, uchar note, uchar vel ); - - /** - * See DeviceManager::keyPressure() - */ - virtual void keyPressure ( uchar chn, uchar note, uchar vel ); - - /** - * See DeviceManager::chnPatchChange() - */ - virtual void chnPatchChange ( uchar chn, uchar patch ); - - /** - * See DeviceManager::chnPressure() - */ - virtual void chnPressure ( uchar chn, uchar vel ); - - /** - * See DeviceManager::chnPitchBender() - */ - virtual void chnPitchBender ( uchar chn, uchar lsb, uchar msb ); - - /** - * See DeviceManager::chnController() - */ - virtual void chnController ( uchar chn, uchar ctl , uchar v ); - - /** - * See DeviceManager::sysex() - */ - virtual void sysex ( uchar *data,ulong size); - - /** - * Send a All Notes Off event to every channel - */ - void allNotesOff(void); - - /** - * Mutes all notes being played on a given channel. - * @param chn the channel - */ - virtual void channelSilence ( uchar chn ); - - /** - * Mute or "unmute" a given channel . - * @param chn channel to work on - * @param b if true, the device will ignore subsequent notes played on the chn - * channel, and mute all notes being played on it. If b is false, the channel - * is back to work. - */ - virtual void channelMute ( uchar chn, int b ); - - /** - * Change all channel volume events multiplying it by this percentage correction - * Instead of forcing a channel to a fixed volume, this method allows to - * music to fade out even when it was being played softly. - * @param volper is an integer value, where 0 is quiet, 100 is used to send - * an unmodified value, 200 play music twice louder than it should, etc. - */ - virtual void setVolumePercentage ( int volper ) - { volumepercentage = volper; } - - /** - * Returns true if everything's ok and false if there has been any problem - */ - int ok (void) - { if (seqfd<0) return 0; - return (_ok>0); - } - - /** - * Returns the path to the file where the current used MidiMapper object - * reads the configuration from, or an empty string if there's no MidiMapper. - */ - const char *midiMapFilename (); - - /** - * Sends the buffer to the device and returns when it's played, so you can - * synchronize - * XXX: sync should be virtual after next bic release - */ - void sync(int i=0); - -}; - -#endif |