示例#1
0
void ChangeDisplay()
{
    for (int i = 0; i < Length(notetops[0]); i++)
    {
	for (int j = 0; j < Length(notetops[0][0]); j++)
	{
	    int k;

	    switch (i)
	    {
	    case 0:
		k = (reverse)? Length(notetops[0][i]) - j - 2: j;
		break;

	    case 1:
		k = (reverse)? Length(notetops[0][i]) - j - 1: j;
		break;

	    case 2:
		k = (reverse)? Length(notetops[0][i]) - j - 2: j;
		break;
	    }

	    if (display[i][j] != NULL)
	    {
		if (shownotes)
		{
		    CFStringRef s =
			CFStringCreateWithCString(kCFAllocatorDefault,
						  notetops[key][i][k],
						  kCFStringEncodingMacRoman);

		    HIViewSetText(display[i][j], s);
		    CFRelease(s);
		}

		else
		    HIViewSetText(display[i][j], CFSTR(""));

		if ((type == CHROMATIC) && (hilites[key][i][k] == true))
		    HIViewSetValue(display[i][j], true);

		else
		    HIViewSetValue(display[i][j], false);
	    }
	}
    }
}
//----------------------------------------------------------------------------//
int MacCEGuiRendererSelector::populateRendererMenu()
{
	// get the menu from the popup
	MenuRef menu;
	GetControlData(d_rendererPopup, 0, kControlPopupButtonMenuRefTag,
                   sizeof(menu), &menu, 0);

    int idx = 0;
    // Put items in the combobox for enabled renderers.
    if (d_rendererAvailability[OpenGLGuiRendererType])
    {
        d_rendererTypes[idx++] = OpenGLGuiRendererType;
        AppendMenuItemTextWithCFString(menu, CFSTR("OpenGL Renderer"),
                                       0, 0, 0);
    }
    if (d_rendererAvailability[IrrlichtGuiRendererType])
    {
        d_rendererTypes[idx++] = IrrlichtGuiRendererType;
        AppendMenuItemTextWithCFString(menu, CFSTR("Irrlicht Renderer"),
                                       0, 0, 0);
    }
    if (d_rendererAvailability[OgreGuiRendererType])
    {
        d_rendererTypes[idx++] = OgreGuiRendererType;
        AppendMenuItemTextWithCFString(menu, CFSTR("Ogre Renderer"),
                                       0, 0, 0);
    }
    if (d_rendererAvailability[DirectFBGuiRendererType])
    {
        d_rendererTypes[idx++] = DirectFBGuiRendererType;
        AppendMenuItemTextWithCFString(menu, CFSTR("DirectFB Renderer"),
                                       0, 0, 0);
    }

	HIViewSetMaximum(d_rendererPopup, CountMenuItems(menu));
    HIViewSetValue(d_rendererPopup, 1);
    return idx;
}
示例#3
0
OSStatus  KeyboardHandler(EventHandlerCallRef next,
                          EventRef event, void *data)
{
    UInt32 kind;
    UInt32 keyCode;

    // Get the event kind

    kind = GetEventKind(event);

    // Switch on event kind

    switch (kind)
    {
        // Modifiers changed

    case kEventRawKeyModifiersChanged:

        return noErr;

	// Key down or key up

    case kEventRawKeyDown:

        // Get the key code

        GetEventParameter(event, kEventParamKeyCode, typeUInt32,
                          NULL, sizeof(keyCode), NULL, &keyCode);

        switch (keyCode)
        {
            // Space bar

	case kKeyboardEscapeKey:
        case kKeyboardSpaceKey:

            // If the key isn't already down

            if (!bellows)
            {
                bellows = true;
                HIViewSetValue(spacebar, true);

                // Check the keys

		for (int i = 0; i < Length(buttons); i++)
		{
                    for (int j = 0; j < Length(buttons[i]); j++)
                    {
                        // If a key is down

                        if (buttons[i][j])
                        {
                            // Stop the current note

                            int k;

                            switch (i)
                            {
                            case 0:
                                k = (reverse)? Length(buttons[i]) - j - 2: j;
                                break;

                            case 1:
                                k = (reverse)? Length(buttons[i]) - j - 1: j;
                                break;

                            case 2:
                                k = (reverse)? Length(buttons[i]) - j - 1: j + 1;
                                break;
                            }

                            int note = notes[type][k][!bellows] + keyvals[key][i];
                            MusicDeviceMIDIEvent(synthUnit,
						 kMidiMessageNoteOff + i,
                                                 note, 0, 0);

                            // Play the new note

                            note = notes[type][k][bellows] + keyvals[key][i];
                            MusicDeviceMIDIEvent(synthUnit,
						 kMidiMessageNoteOn + i,
                                                 note, volume, 0);
                        }
		    }
		}

                for (int i = 0; i < Length(bass); i++)
                {
                    if (bass[i])
                    {
                        // Play chord

                        int k = (reverse)? Length(basskeys) - i - 1: i;

                        int note =  chords[key][k][!bellows][0];
                        MusicDeviceMIDIEvent(synthUnit,
                                             kMidiMessageNoteOff + ROWS,
                                             note, volume, 0);

                        note =  chords[key][k][!bellows][1];
                        MusicDeviceMIDIEvent(synthUnit,
                                             kMidiMessageNoteOff + ROWS,
                                             note, volume, 0);

			note =  chords[key][k][bellows][0];
                        MusicDeviceMIDIEvent(synthUnit,
                                             kMidiMessageNoteOn + ROWS,
                                             note, volume, 0);

                        note =  chords[key][k][bellows][1];
                        MusicDeviceMIDIEvent(synthUnit,
                                             kMidiMessageNoteOn + ROWS,
                                             note, volume, 0);
                    }
                }
            }
            break;

	    // Check keyboard

	default:

	    // Look up the key code in the keyboard table

	    for (int i = 0; i < Length(keyboard); i++)
	    {
		for (int j = 0; j < Length(keyboard[i]); j++)
		{
		    if (keyboard[i][j] == keyCode && !buttons[i][j])
		    {
			buttons[i][j] = true;

			// Play the note

			int k;

			switch (i)
			{
			case 0:
			    k = (reverse)? Length(buttons[i]) - j - 2: j;
			    break;

			case 1:
			    k = (reverse)? Length(buttons[i]) - j - 1: j;
			    break;

			case 2:
			    k = (reverse)? Length(buttons[i]) - j - 1: j + 1;
			    break;
			}

			if ((type == CHROMATIC) && (hilites[key][i][k] == true))
			    HIViewSetValue(display[i][j], false);

			else
			    HIViewSetValue(display[i][j], true);

			int note = notes[type][k][bellows] + keyvals[key][i];
			MusicDeviceMIDIEvent(synthUnit,
					     kMidiMessageNoteOn + i,
					     note, volume, 0);
			return noErr;
		    }
		}
	    }

	    for (int i = 0; i < Length(basskeys); i++)
	    {
		if (((basskeys[i][0] == keyCode) ||
		     (basskeys[i][1] == keyCode)) && !bass[i])
		{
		    bass[i] = true;
		    HIViewSetValue(bassdisplay[i], true);

		    int k = (reverse)? Length(basskeys) - i - 1: i;

		    int note =  chords[key][k][bellows][0];
		    MusicDeviceMIDIEvent(synthUnit,
					 kMidiMessageNoteOn + ROWS,
					 note, volume, 0);

		    note =  chords[key][k][bellows][1];
		    MusicDeviceMIDIEvent(synthUnit,
					 kMidiMessageNoteOn + ROWS,
					 note, volume, 0);
		}
	    }
	    break;
	}
	break;

    case kEventRawKeyUp:

        // Get the key code

        GetEventParameter(event, kEventParamKeyCode, typeUInt32,
                          NULL, sizeof(keyCode), NULL, &keyCode);

	switch (keyCode)
	{
            // Space bar

	case kKeyboardEscapeKey:
	case kKeyboardSpaceKey:

            // If the key isn't already up

            if (bellows)
            {
                bellows = false;
                HIViewSetValue(spacebar, false);

                // Check the keys

		for (int i = 0; i < Length(buttons); i++)
		{
                    for (int j = 0; j < Length(buttons[i]); j++)
                    {
                        // If a key is down

                        if (buttons[i][j])
                        {
                            // Stop the current note

                            int k;

                            switch (i)
                            {
                            case 0:
                                k = (reverse)? Length(buttons[i]) - j - 2: j;
                                break;

                            case 1:
                                k = (reverse)? Length(buttons[i]) - j - 1: j;
                                break;

                            case 2:
                                k = (reverse)? Length(buttons[i]) - j - 1: j + 1;
                                break;
                            }

                            int note = notes[type][k][!bellows] + keyvals[key][i];
                            MusicDeviceMIDIEvent(synthUnit,
						 kMidiMessageNoteOff + i,
                                                 note, 0, 0);

                            // Play the new note

                            note = notes[type][k][bellows] + keyvals[key][i];
                            MusicDeviceMIDIEvent(synthUnit,
						 kMidiMessageNoteOn + i,
                                                 note, volume, 0);
                        }
		    }
		}

                for (int i = 0; i < Length(bass); i++)
                {
                    if (bass[i])
                    {
                        // Play chord

                        int k = (reverse)? Length(basskeys) - i - 1: i;

                        int note =  chords[key][k][!bellows][0];
                        MusicDeviceMIDIEvent(synthUnit,
                                             kMidiMessageNoteOff + ROWS,
                                             note, volume, 0);

                        note =  chords[key][k][!bellows][1];
                        MusicDeviceMIDIEvent(synthUnit,
                                             kMidiMessageNoteOff + ROWS,
                                             note, volume, 0);

			note =  chords[key][k][bellows][0];
                        MusicDeviceMIDIEvent(synthUnit,
                                             kMidiMessageNoteOn + ROWS,
                                             note, volume, 0);

                        note =  chords[key][k][bellows][1];
                        MusicDeviceMIDIEvent(synthUnit,
                                             kMidiMessageNoteOn + ROWS,
                                             note, volume, 0);
                    }
                }
            }
            break;

	    // Check keyboard

	default:

	    // Look up the key code in the keyboard table

	    for (int i = 0; i < Length(keyboard); i++)
	    {
		for (int j = 0; j < Length(keyboard[i]); j++)
		{
		    if (keyboard[i][j] == keyCode && buttons[i][j])
		    {
			buttons[i][j] = false;

			// Stop note

			int k;

			switch (i)
			{
			case 0:
			    k = (reverse)? Length(buttons[i]) - j - 2: j;
			    break;

			case 1:
			    k = (reverse)? Length(buttons[i]) - j - 1: j;
			    break;

			case 2:
			    k = (reverse)? Length(buttons[i]) - j - 1: j + 1;
			    break;
			}

			if ((type == CHROMATIC) && (hilites[key][i][k] == true))
			    HIViewSetValue(display[i][j], true);

			else
			    HIViewSetValue(display[i][j], false);

			int note = notes[type][k][bellows] + keyvals[key][i];
			MusicDeviceMIDIEvent(synthUnit,
					     kMidiMessageNoteOff + i,
					     note, 0, 0);
			return noErr;
		    }
		}
	    }

	    for (int i = 0; i < Length(basskeys); i++)
	    {
		if (((basskeys[i][0] == keyCode) ||
		     (basskeys[i][1] == keyCode)) && bass[i])
		{
		    bass[i] = false;
		    HIViewSetValue(bassdisplay[i], false);

		    int k = (reverse)? Length(basskeys) - i - 1: i;

		    int note = chords[key][k][bellows][0];
		    MusicDeviceMIDIEvent(synthUnit,
					 kMidiMessageNoteOff + ROWS,
					 note, volume, 0);

		    note = chords[key][k][bellows][1];
		    MusicDeviceMIDIEvent(synthUnit,
					 kMidiMessageNoteOff + ROWS,
					 note, volume, 0);
		}
	    }
	    break;
	}
	break;

    default:
        return eventNotHandledErr;
    }

    // Report success

    return noErr;
}
示例#4
0
OSStatus ApplicationHandler(EventHandlerCallRef next,
                            EventRef event, void *data)
{
    ProcessSerialNumber them;
    ProcessSerialNumber us;
    Boolean same;
    UInt32 kind;

    // Get event kind

    kind = GetEventKind(event);

    // switch on event kind

    switch (kind)
    {
	// Front app switched

    case kEventAppFrontSwitched:

        // Get their process id

        GetEventParameter(event, kEventParamProcessID,
                          typeProcessSerialNumber, NULL, sizeof(them),
                          NULL, &them);

        // Get our process id

        GetCurrentProcess(&us);

        // Is it the same?

        SameProcess(&them, &us, &same);

        // If not the same

        if (!same)
        {
            // Turn all the notes off and reset all the buttons that
            // are down

	    for (int i = 0; i < Length(bass); i++)
	    {
		// Bass buttons

		if (bass[i])
		{
		    bass[i] = false;
		    HIViewSetValue(bassdisplay[i], false);

		    int k = (reverse)? Length(basskeys) - i - 1: i;

		    int note = chords[key][k][bellows][0];
		    MusicDeviceMIDIEvent(synthUnit, kMidiMessageNoteOff + ROWS,
					 note, 0, 0);

		    note = chords[key][k][bellows][1];
		    MusicDeviceMIDIEvent(synthUnit, kMidiMessageNoteOff + ROWS,
					 note, 0, 0);
		}
	    }

            for (int i = 0; i < Length(buttons); i++)
            {
                for (int j = 0; j < Length(buttons[i]); j++)
                {
                    // Melody buttons

                    if (buttons[i][j])
                    {
                        buttons[i][j] = false;

			int k;

			switch (i)
			{
			case 0:
			    k = (reverse)? Length(buttons[i]) - j - 2: j;
			    break;

			case 1:
			    k = (reverse)? Length(buttons[i]) - j - 1: j;
			    break;

			case 2:
			    k = (reverse)? Length(buttons[i]) - j - 1: j + 1;
			    break;
			}

			if ((type == CHROMATIC) && (hilites[key][i][j] == true))
			    HIViewSetValue(display[i][k], true);

			else
			    HIViewSetValue(display[i][k], false);

                        int note = notes[type][k][bellows] + keyvals[key][i];
                        MusicDeviceMIDIEvent(synthUnit, kMidiMessageNoteOff + i,
                                             note, 0, 0);
                    }
                }
            }

            if (bellows)
            {
                // Space bar button

                bellows = false;
                HIViewSetValue(spacebar, false);
            }
        }
        break;

    default:
        return eventNotHandledErr;
    }

    // Return ok

    return noErr;
}