cog/Plugins/MIDI/MIDI/SCPlayer.h

55 lines
1.5 KiB
Objective-C

#ifndef __SCPlayer_h__
#define __SCPlayer_h__
#include "MIDIPlayer.h"
#import <Cocoa/Cocoa.h>
class SCPlayer : public MIDIPlayer {
public:
// zero variables
SCPlayer();
// close, unload
virtual ~SCPlayer();
protected:
virtual unsigned int send_event_needs_time();
virtual void send_event(uint32_t b);
virtual void send_sysex(const uint8_t* event, size_t size, size_t port);
virtual void render(float* out, unsigned long count);
virtual void shutdown();
virtual bool startup();
virtual void send_event_time(uint32_t b, unsigned int time);
virtual void send_sysex_time(const uint8_t* event, size_t size, size_t port, unsigned int time);
private:
bool LoadCore();
void send_command(uint32_t port, uint32_t command);
void render_port(uint32_t port, float* out, uint32_t count);
void reset(uint32_t port);
void junk(uint32_t port, unsigned long count);
bool process_create(uint32_t port);
void process_terminate(uint32_t port);
bool process_running(uint32_t port);
uint32_t process_read_code(uint32_t port);
void process_read_bytes(uint32_t port, void* buffer, uint32_t size);
uint32_t process_read_bytes_pass(uint32_t port, void* buffer, uint32_t size);
void process_write_code(uint32_t port, uint32_t code);
void process_write_bytes(uint32_t port, const void* buffer, uint32_t size);
bool bTerminating[3];
NSTask* hProcess[3];
NSPipe* hChildStd_IN[3];
NSPipe* hChildStd_OUT[3];
};
#endif