[linux-audio-user] remapping midi notes

Joey Reid joe at joeyreid.com
Wed Jul 14 13:46:30 EDT 2004

On Jul 14, 2004, at 11:45 AM, Frank Barknecht wrote:
>> well, i was hoping i wouldn't have to learn C to do this, but I 
>> suppose I can't expect ot not get my hands dirty with this, can I ;-)
> Some people here might already wait for me suggesting to take a look 
> at Pd again (http://www.pure-data.info). It is very easy to create all 
> kinds of note and control filters in Pd, if you first learn a tiny bit 
> of Pd.

thanks, Frank. I am looking at pd now - trying to figure out where to 
start form the docs is not obvious

> The .pd-files /usr/lib/pd/doc/2.control.examples/17.PART3.midi.pd and
> /usr/lib/pd/doc/5.reference/help-midi.pd show the available midi 
> objects inside Pd which are for example [notein] and [noteout], 
> [ctlin],...

I am looking at these now. I am not on my linux pc, and it seems there 
is an annoying bug in the OS X version where the mouse pointer is not 
getting interpreted at the correct location. very annoying (could be a 
tk bug, but I don't have any other tk apps to check against.

> To create mappings, the [route], [select], [moses], [pack], [unpack] 
> and of course all math objects like [>] or [<] are useful, as Pd 
> treats midi data as simple lists of numbers. So a simple midi filter, 
> which just accepts all notes on channel 7, then sends the channel-7 
> notes to channel 1 would look like this in ASCII-patching:
>   [notein 7]
>   |      /
>   [pack 0 0 1]
>   |  |        \
>   [unpack 0 0 1]
>   |  |       /
>   [ noteout ]

so in my case, it would look like the following:

   |     /
[<do something to change note value>]
   |  |   /

the <do something to change note value> would have to be something that 
will read only the note value, change it based on a
set of rules, and then pass it on without modifying the velocity/type.  
i probably should be filtering for note-on.

the help files show notein like this:

[0] [0] [0]

i assume this means that it produces three numbers. do these represent 
type, key and velocity? which is which? and how do i modify the value 
of one of those numbers? i assume this is where pack/unpack come in, 
but i don't quite get that. sorry if i'm being dense here.

> (Unfortunatly noteout doesn't accept a channel argument like notein 
> does.)

that doesn't matter (i don't think) if it passes everything back out on 
the same channel it was received on.

> Ciao
> -- 
> Frank Barknecht

thanks again
Joey Reid aka Dr.Whiz-Bang
Geek, musician, and friend of God

More information about the Linux-audio-user mailing list