MidiPipe FAQ

Audio, MIDI and other software, not including effects or instruments
Post Reply
PowerRecords
Posts: 1
Joined: 09 Nov 2023, 13:31

Re: MidiPipe FAQ

Post by PowerRecords » 09 Nov 2023, 13:36

I can't seem to get any "alist" messages from my Kemper's SysEx messages?

I have it set up like this:
Midi In (set up as profiler) > Alist.

But nothing comes up. Every other midi monitoring app does tho. :-(

I need to use MidiPipe to translate 2 particular messages into something more "workable".

vasilis_a
Posts: 1
Joined: 27 Nov 2023, 11:50

Re: MidiPipe FAQ

Post by vasilis_a » 27 Nov 2023, 12:06

Hello friends,

I'm new to MidiPipe and midi programming in general but last week i made some discoveries and managed to get my 1st code to work in midipipe - just want to make some final adjustments that i cant seem to figure out how so i look forward to your opinions,

Ok so i have a Model Samples from Elektron and a Microfreak, talking to each other via Midi --> i would like to have MS send PC commands to MF.
Problem is that MS sends a PC change (predetermined and not changeable in the unit) for each pattern change, ie Pattern 01 --> PC out = 1, Pattern 02 --> PC out = 2 etc up until Pattern 96 .

I don't like this functionality since for a song of say 10 patterns in MS i will have to manage 10 different presets in MF, while in reality say i want only 2 x sounds in MF for the whole song.

Here comes MidiPipe: i wrote a code that alters the PC out from MS, essentially reading my predefined MF presets from the "array" variables BankA, BankB etc, the values in the array are the presets of MF that i want to be triggered by each pattern.

It can do the above as is: problem is that when i have different patterns "calling" the same preset, the PC is send to MF and it resets the MF preset, which i dont want.

So finally my question: Is there a way to revise the code so i can "filter" out and cancel the PC command if it is the same PC as was used in the previous pattern? I think it should be possible in terms of an additional IF and somehow saving the PC in a variable like "oldPC" and comparing it to the new PC "newPC". So IF oldPC = newPC then DONT send out the PC command at all .

Here is the code and apologies for huge message:

Code: Select all

-- set MicroFreak Midi channel
property MF_channel : 8

-- INPUT which MF preset is called per MS pattern, range: 0 to 127, 
property BankA : { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 }
property BankB : { 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 101, 102, 103 }
property BankC : { 101, 101, 101, 101, 101, 101, 101, 102, 101, 101, 103, 101, 101, 101, 101, 101 }
property BankD : { 60, 61, 62, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 110, 111, 113 }
property BankE : { 50, 51, 100, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31 }
property BankF : { 50, 51, 100, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31 }


on runme(message)
		set StatusByte to (item 1 of message)
		set DataByte to (item 2 of message)

	-- if program change on MF_channel
	if (StatusByte = 191 + MF_channel) then
		if (DataByte < 16 and DataByte > -1) then 
			-- read the PC command and assign the correct index based on Bank
			set PatternIndex to (DataByte +1)
			-- assign the MF preset
			set item 2 of message to ((item (PatternIndex) of BankA) - 1)
			return message 

		else if (DataByte < 32 and DataByte > -1) then 
			-- read the PC command and assign the correct index based on Bank
			set PatternIndex to (item 2 of message -15)
			-- assign the MF preset
			set item 2 of message to ((item (PatternIndex) of BankB) - 1)
			return message 

		else if (DataByte < 48 and DataByte > -1) then 
			-- read the PC command and assign the correct index based on Bank
			set PatternIndex to (item 2 of message -31)
				-- assign the MF preset
				set item 2 of message to ((item (PatternIndex) of BankC) - 1)
				return message 

		else if (DataByte < 64 and DataByte > -1) then 
			-- read the PC command and assign the correct index based on Bank
			set PatternIndex to (item 2 of message -47)
			-- assign the MF preset
			set item 2 of message to ((item (PatternIndex) of BankD) - 1)
			return message 

		else if (DataByte < 80 and DataByte > -1) then 
			-- read the PC command and assign the correct index based on Bank
			set PatternIndex to (item 2 of message -63)
			-- assign the MF preset
			set item 2 of message to ((item (PatternIndex) of BankE) - 1)
			return message 

		else if (DataByte < 97 and DataByte > -1) then 
			-- read the PC command and assign the correct index based on Bank
			set PatternIndex to (item 2 of message -79)
			-- assign the MF preset
			set item 2 of message to ((item (PatternIndex) of BankF) - 1)
			return message 
		end if
	end if

end runme

Post Reply