Ejemplo n.º 1
0
TMIDICue::TMIDICue(entry_ref &theRef, int16 id,  TCueChannel* parent, BRect bounds, uint32 startTime) :
	TCueView(id, parent, bounds, startTime, "MIDICue")
{
	// Init member variables
	fEditor = NULL;

	//
	// Attempt to load data file
	//

	BNode theNode(&theRef);
	if (theNode.InitCheck() != B_OK)
		return;

	BNodeInfo nodeInfo(&theNode);
	if (nodeInfo.InitCheck() != B_OK)
		return;

	// First, make sure we have a valid ref
	if ( IsMIDI(nodeInfo) ) {
		//      Create a BMessage that includes the entry_ref to send to our open routine
		BMessage* theMessage = new BMessage(B_REFS_RECEIVED);
		theMessage->AddRef("refs", &theRef);

		bool retVal = LoadMIDIFile(theMessage);

		// We are succesful.  Init the cue
		if (retVal) {
			Init();
		}
		// If we have an error, ask the user to locate a new data file
		else{
			ShowPanel();
		}
	}
}
void CMackieControlBase::ConfParameterTrack(SONAR_MIXER_STRIP eMixerStrip, DWORD dwStripNum,
											DWORD dwPluginNum, DWORD dwIndex, DWORD dwModifiers, CMixParam *pParam)
{
	if (m_bBindMuteSoloArm)		// Include Mute/Solo/Arm?
	{
		// Insert them after Pan

		switch (dwIndex)
		{
			case 2:
				pParam->SetParams(eMixerStrip, dwStripNum, MIX_PARAM_MUTE, 0);
				pParam->SetAttribs(DT_BOOL);
				return;

			case 3:
				pParam->SetParams(eMixerStrip, dwStripNum, MIX_PARAM_SOLO, 0);
				pParam->SetAttribs(DT_BOOL);
				return;

			case 4:
				pParam->SetParams(eMixerStrip, dwStripNum, MIX_PARAM_RECORD_ARM, 0);
				pParam->SetAttribs(DT_BOOL);
				pParam->SetAlternateLabel("RecRdy");
				return;

			default:
				break;
		}

		// Fake the indexes for the remaining entries
		if (dwIndex > 4)
			dwIndex -= 3;
	}

	if (IsMIDI(eMixerStrip, dwStripNum))				// MIDI
	{
		switch (dwIndex)
		{
			case IDX_DEFAULT_FADER:
			case 0:										// Volume
				ConfigureVolume(eMixerStrip, dwStripNum, true, pParam);
				break;

			case 1:										// Pan
				pParam->SetParams(eMixerStrip, dwStripNum, MIX_PARAM_PAN, 0);
				pParam->SetAttribs(DT_PAN, PAN_CENTER, PAN_STEP_SIZE);
				break;
			
			case 2:										// Output
				ConfigureParamOutput(eMixerStrip, dwStripNum, false, pParam);
				pParam->SetAlternateLabel("Output");
				break;

			case 3:										// Input
				ConfigureParamInput(eMixerStrip, dwStripNum, true, pParam);
				pParam->SetAlternateLabel("Input");
				break;

			case 4:										// Bank
				pParam->SetParams(eMixerStrip, dwStripNum, MIX_PARAM_BANK, 0);
				pParam->SetAttribs(DT_SELECTOR, NO_DEFAULT, 1.0f, 0.0f, 127.0f);
				break;

			case 5:										// Patch
				pParam->SetParams(eMixerStrip, dwStripNum, MIX_PARAM_PATCH, 0);
				pParam->SetAttribs(DT_SELECTOR, NO_DEFAULT, 1.0f, 0.0f, 127.0f);
				break;

			case 8:										// Chorus
				pParam->SetParams(eMixerStrip, dwStripNum, MIX_PARAM_SEND_VOL, 0);
				pParam->SetAttribs(DT_LEVEL, VOL_MIDI_DEFAULT, VOL_MIDI_STEP_SIZE);
				pParam->SetAlternateLabel("Chorus");
				break;

			case 12:									// Reverb
				pParam->SetParams(eMixerStrip, dwStripNum, MIX_PARAM_SEND_VOL, 1);
				pParam->SetAttribs(DT_LEVEL, VOL_MIDI_DEFAULT, VOL_MIDI_STEP_SIZE);
				pParam->SetAlternateLabel("Reverb");
				break;

			default:
				pParam->ClearBinding();
				break;
		}
	}
	else												// Audio
	{
		switch (dwIndex)
		{
			case IDX_DEFAULT_FADER:
			case 0:										// Volume
				ConfigureVolume(eMixerStrip, dwStripNum, false, pParam);
				break;

			case 1:										// Pan
				pParam->SetParams(eMixerStrip, dwStripNum, MIX_PARAM_PAN, 0);
				pParam->SetAttribs(DT_PAN, PAN_CENTER, PAN_STEP_SIZE);
				break;

			case 2:										// Output
				ConfigureParamOutput(eMixerStrip, dwStripNum, false, pParam);
				pParam->SetAlternateLabel("Output");
				break;

			case 3:										// Input
				ConfigureParamInput(eMixerStrip, dwStripNum, true, pParam);
				pParam->SetAlternateLabel("Input");
				break;

			case 4:										// Phase
				pParam->SetParams(eMixerStrip, dwStripNum, MIX_PARAM_PHASE, 0);
				pParam->SetAttribs(DT_BOOL, 1.0f);
				break;

			case 5:										// Mono/Stereo
				pParam->SetParams(eMixerStrip, dwStripNum, MIX_PARAM_INTERLEAVE, 0);
				pParam->SetAttribs(DT_INTERLEAVE, 2.0f, 1.0f, 1.0f, 2.0f);
				pParam->SetAlternateLabel("MonStr");
				break;

			case 6:										// Input Echo
				if (m_cState.HaveInputEcho())
				{
					pParam->SetParams(eMixerStrip, dwStripNum, MIX_PARAM_INPUT_ECHO, 0);
					pParam->SetAttribs(DT_BOOL, 0.0f);
				}
				else
				{
					pParam->ClearBinding();
				}
				break;

			default:									// Aux Sends
				ConfigureAuxSends(eMixerStrip, dwStripNum, dwIndex - 7, pParam);
				break;
		}
	}
}