diff options
| author | Jamieson Christian | 2003-05-17 14:24:19 +0000 | 
|---|---|---|
| committer | Jamieson Christian | 2003-05-17 14:24:19 +0000 | 
| commit | 61c2430a98f992a740a84fdc737dc3f3450249a7 (patch) | |
| tree | 230a98242f1ed3a5e3ee5f1da37acfb6e6d13ad2 | |
| parent | 4cc3a466d0d7e3cbb7ab0b80195030b2b7d12359 (diff) | |
| download | scummvm-rg350-61c2430a98f992a740a84fdc737dc3f3450249a7.tar.gz scummvm-rg350-61c2430a98f992a740a84fdc737dc3f3450249a7.tar.bz2 scummvm-rg350-61c2430a98f992a740a84fdc737dc3f3450249a7.zip  | |
Moved SEQ to its own file
svn-id: r7604
| -rw-r--r-- | sound/mididrv.cpp | 185 | 
1 files changed, 0 insertions, 185 deletions
diff --git a/sound/mididrv.cpp b/sound/mididrv.cpp deleted file mode 100644 index 0131d3af91..0000000000 --- a/sound/mididrv.cpp +++ /dev/null @@ -1,185 +0,0 @@ -/* ScummVM - Scumm Interpreter - * Copyright (C) 2001  Ludvig Strigeus - * Copyright (C) 2001-2003 The ScummVM project - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA. - * - * $Header$ - */ - -/* - * Raw output support by Michael Pearce - * Alsa support by Nicolas Noble <nicolas@nobis-crew.org> copied from - *    both the QuickTime support and (vkeybd http://www.alsa-project.org/~iwai/alsa.html) - */ - -#include "stdafx.h" -#include "mididrv.h" -#include "mpu401.h" -#include "common/engine.h"	// for warning/error/debug -#include "common/util.h"	// for ARRAYSIZE - -/* Default (empty) property method */ -uint32 MidiDriver::property(int prop, uint32 param) { -	return 0; -} - -/* retrieve a string representation of an error code */ -const char *MidiDriver::getErrorName(int error_code) { -	static const char *const midi_errors[] = { -		"No error", -		"Cannot connect", -		"Streaming not available", -		"Device not available", -		"Driver already open" -	}; - -	if ((uint) error_code >= ARRAYSIZE(midi_errors)) -		return "Unknown Error"; -	return midi_errors[error_code]; -} - -#if defined(UNIX) && !defined(__BEOS__) -#define SEQ_MIDIPUTC    5 -#define SPECIAL_CHANNEL 9 - -class MidiDriver_SEQ : public MidiDriver_MPU401 { -public: -	MidiDriver_SEQ(); -	int open(); -	void close(); -	void send(uint32 b); -	void sysEx(byte *msg, uint16 length); - -private: -	bool _isOpen; -	int device, _device_num; -}; - -MidiDriver_SEQ::MidiDriver_SEQ() { -	_isOpen = false; -	device = 0; -	_device_num = 0; -} - -int MidiDriver_SEQ::open() { -	if (_isOpen) -		return MERR_ALREADY_OPEN; -	_isOpen = true; -	device = 0; - -	char *device_name = getenv("SCUMMVM_MIDI"); -	if (device_name != NULL) { -		device = (::open((device_name), O_RDWR, 0)); -	} else { -		warning("You need to set-up the SCUMMVM_MIDI environment variable properly (see README) "); -	} -	if ((device_name == NULL) || (device < 0)) { -		if (device_name == NULL) -			warning("Opening /dev/null (no music will be heard) "); -		else -			warning("Cannot open rawmidi device %s - using /dev/null (no music will be heard) ", -							device_name); -		device = (::open(("/dev/null"), O_RDWR, 0)); -		if (device < 0) -			error("Cannot open /dev/null to dump midi output"); -	} - -	if (getenv("SCUMMVM_MIDIPORT")) -		_device_num = atoi(getenv("SCUMMVM_MIDIPORT")); -	return 0; -} - -void MidiDriver_SEQ::close() { -	::close(device); -	_isOpen = false; -} - -void MidiDriver_SEQ::send(uint32 b) { -	unsigned char buf[256]; -	int position = 0; - -	switch (b & 0xF0) { -	case 0x80: -	case 0x90: -	case 0xA0: -	case 0xB0: -	case 0xE0: -		buf[position++] = SEQ_MIDIPUTC; -		buf[position++] = (unsigned char)b; -		buf[position++] = _device_num; -		buf[position++] = 0; -		buf[position++] = SEQ_MIDIPUTC; -		buf[position++] = (unsigned char)((b >> 8) & 0x7F); -		buf[position++] = _device_num; -		buf[position++] = 0; -		buf[position++] = SEQ_MIDIPUTC; -		buf[position++] = (unsigned char)((b >> 16) & 0x7F); -		buf[position++] = _device_num; -		buf[position++] = 0; -		break; -	case 0xC0: -	case 0xD0: -		buf[position++] = SEQ_MIDIPUTC; -		buf[position++] = (unsigned char)b; -		buf[position++] = _device_num; -		buf[position++] = 0; -		buf[position++] = SEQ_MIDIPUTC; -		buf[position++] = (unsigned char)((b >> 8) & 0x7F); -		buf[position++] = _device_num; -		buf[position++] = 0; -		break; -	default: -		fprintf(stderr, "Unknown : %08x\n", (int)b); -		break; -	} -	write(device, buf, position); -} - -void MidiDriver_SEQ::sysEx (byte *msg, uint16 length) { -	if (length > 254) { -		warning ("Cannot send SysEx block - data too large"); -		return; -	} - -	unsigned char buf [1024]; -	int position = 0; -	byte *chr = msg; - -	// Should be we using EV_SYSEX instead of SEQ_MIDIPUTC? -	// I'm not sure how to send EV_SYSEX. -	buf[position++] = SEQ_MIDIPUTC; -	buf[position++] = 0xFF; -	buf[position++] = _device_num; -	buf[position++] = 0; -	for (; length; --length) { -		buf[position++] = SEQ_MIDIPUTC; -		buf[position++] = (unsigned char) *chr; -		buf[position++] = _device_num; -		buf[position++] = 0; -	} -	buf[position++] = SEQ_MIDIPUTC; -	buf[position++] = 0xF7; -	buf[position++] = _device_num; -	buf[position++] = 0; -	write (device, buf, position); -} - -MidiDriver *MidiDriver_SEQ_create() { -	return new MidiDriver_SEQ(); -} - -#endif -  | 
