summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--src/emu/imagedev/midiin.c10
-rw-r--r--src/emu/imagedev/midiin.h2
-rw-r--r--src/emu/imagedev/midiout.c11
-rw-r--r--src/mess/machine/midiinport.c4
-rw-r--r--src/mess/machine/midioutport.c4
-rw-r--r--src/osd/portmedia/pmmidi.c10
6 files changed, 27 insertions, 14 deletions
diff --git a/src/emu/imagedev/midiin.c b/src/emu/imagedev/midiin.c
index 8e335b48da3..6ad6126e42e 100644
--- a/src/emu/imagedev/midiin.c
+++ b/src/emu/imagedev/midiin.c
@@ -34,6 +34,7 @@ void midiin_device::device_start()
{
m_input_func.resolve(m_input_callback, *this);
m_timer = timer_alloc(0);
+ m_midi = NULL;
}
void midiin_device::device_reset()
@@ -71,10 +72,10 @@ void midiin_device::device_config_complete(void)
void midiin_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
{
- UINT8 buf[256];
+ UINT8 buf[8192*4];
int bytesRead;
- if (osd_poll_midi_channel(m_midi))
+ while (osd_poll_midi_channel(m_midi))
{
bytesRead = osd_read_midi_channel(m_midi, buf);
@@ -112,7 +113,10 @@ bool midiin_device::call_load(void)
void midiin_device::call_unload(void)
{
- osd_close_midi_channel(m_midi);
+ if (m_midi)
+ {
+ osd_close_midi_channel(m_midi);
+ }
}
void midiin_device::tra_complete()
diff --git a/src/emu/imagedev/midiin.h b/src/emu/imagedev/midiin.h
index 7ee7c6082fa..88af86b1757 100644
--- a/src/emu/imagedev/midiin.h
+++ b/src/emu/imagedev/midiin.h
@@ -68,7 +68,7 @@ protected:
void input_callback(UINT8 state);
private:
- static const int XMIT_RING_SIZE = 64;
+ static const int XMIT_RING_SIZE = (8192*4*4);
void xmit_char(UINT8 data);
diff --git a/src/emu/imagedev/midiout.c b/src/emu/imagedev/midiout.c
index cfc23058a93..3155a9b7057 100644
--- a/src/emu/imagedev/midiout.c
+++ b/src/emu/imagedev/midiout.c
@@ -32,6 +32,7 @@ midiout_device::midiout_device(const machine_config &mconfig, const char *tag, d
void midiout_device::device_start()
{
+ m_midi = NULL;
}
void midiout_device::device_reset()
@@ -73,7 +74,10 @@ bool midiout_device::call_load(void)
void midiout_device::call_unload(void)
{
- osd_close_midi_channel(m_midi);
+ if (m_midi)
+ {
+ osd_close_midi_channel(m_midi);
+ }
}
void midiout_device::rcv_complete() // Rx completed receiving byte
@@ -81,7 +85,10 @@ void midiout_device::rcv_complete() // Rx completed receiving byte
receive_register_extract();
UINT8 data = get_received_char();
- osd_write_midi_channel(m_midi, data);
+ if (m_midi)
+ {
+ osd_write_midi_channel(m_midi, data);
+ }
}
void midiout_device::input_callback(UINT8 state)
diff --git a/src/mess/machine/midiinport.c b/src/mess/machine/midiinport.c
index 5a90999c02f..e73924717af 100644
--- a/src/mess/machine/midiinport.c
+++ b/src/mess/machine/midiinport.c
@@ -13,7 +13,7 @@ const device_type MIDIIN_PORT = &device_creator<midiin_port_device>;
midiin_port_device::midiin_port_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: device_t(mconfig, MIDIIN_PORT, "MIDI In port", tag, owner, clock),
device_serial_port_interface(mconfig, *this),
- m_midiin(*this, "midiin")
+ m_midiin(*this, "midiinimg")
{
}
@@ -23,7 +23,7 @@ static midiin_config midiin_port_image_config =
};
static MACHINE_CONFIG_FRAGMENT(midiin_port_config)
- MCFG_MIDIIN_ADD("midiin", midiin_port_image_config)
+ MCFG_MIDIIN_ADD("midiinimg", midiin_port_image_config)
MACHINE_CONFIG_END
machine_config_constructor midiin_port_device::device_mconfig_additions() const
diff --git a/src/mess/machine/midioutport.c b/src/mess/machine/midioutport.c
index 68e997bb44e..6f23738d0bf 100644
--- a/src/mess/machine/midioutport.c
+++ b/src/mess/machine/midioutport.c
@@ -13,12 +13,12 @@ const device_type MIDIOUT_PORT = &device_creator<midiout_port_device>;
midiout_port_device::midiout_port_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: device_t(mconfig, MIDIOUT_PORT, "MIDI Out port", tag, owner, clock),
device_serial_port_interface(mconfig, *this),
- m_midiout(*this, "midiout")
+ m_midiout(*this, "midioutimg")
{
}
static MACHINE_CONFIG_FRAGMENT(midiout_port_config)
- MCFG_MIDIOUT_ADD("midiout")
+ MCFG_MIDIOUT_ADD("midioutimg")
MACHINE_CONFIG_END
machine_config_constructor midiout_port_device::device_mconfig_additions() const
diff --git a/src/osd/portmedia/pmmidi.c b/src/osd/portmedia/pmmidi.c
index 390b113c99b..fc40b9b8af7 100644
--- a/src/osd/portmedia/pmmidi.c
+++ b/src/osd/portmedia/pmmidi.c
@@ -10,11 +10,13 @@
#include "portmidi/portmidi.h"
#include "osdcore.h"
+static const int RX_EVENT_BUF_SIZE = 512;
+
struct osd_midi_device
{
#ifndef DISABLE_MIDI
PortMidiStream *pmStream;
- PmEvent rx_evBuf[20]; // up to 20 events
+ PmEvent rx_evBuf[RX_EVENT_BUF_SIZE];
#endif
UINT8 xmit_in[4]; // Pm_Messages mean we can at most have 3 residue bytes
int xmit_cnt;
@@ -85,7 +87,7 @@ osd_midi_device *osd_open_midi_input(const char *devname)
if (found_dev >= 0)
{
- if (Pm_OpenInput(&stm, found_dev, NULL, 20, NULL, NULL) == pmNoError)
+ if (Pm_OpenInput(&stm, found_dev, NULL, RX_EVENT_BUF_SIZE, NULL, NULL) == pmNoError)
{
ret = (osd_midi_device *)osd_malloc(sizeof(osd_midi_device));
memset(ret, 0, sizeof(osd_midi_device));
@@ -132,7 +134,7 @@ osd_midi_device *osd_open_midi_output(const char *devname)
if (found_dev >= 0)
{
- if (Pm_OpenOutput(&stm, found_dev, NULL, 20, NULL, NULL, 0) == pmNoError)
+ if (Pm_OpenOutput(&stm, found_dev, NULL, 100, NULL, NULL, 0) == pmNoError)
{
ret = (osd_midi_device *)osd_malloc(sizeof(osd_midi_device));
memset(ret, 0, sizeof(osd_midi_device));
@@ -175,7 +177,7 @@ bool osd_poll_midi_channel(osd_midi_device *dev)
int osd_read_midi_channel(osd_midi_device *dev, UINT8 *pOut)
{
#ifndef DISABLE_MIDI
- int msgsRead = Pm_Read(dev->pmStream, dev->rx_evBuf, 20);
+ int msgsRead = Pm_Read(dev->pmStream, dev->rx_evBuf, RX_EVENT_BUF_SIZE);
int bytesOut = 0;
if (msgsRead <= 0)