Yes it does :) On Sun, Mar 10, 2013 at 10:26 PM, stephane ducasse <stephane.ducasse@free.fr
wrote:
Guillermo
can you try if the following method works with you? I folded the external register inside each note.
Stef
buildKeyboard | wtWid bkWid keyRect octavePt nWhite nBlack | self removeAllMorphs. wtWid := 8. bkWid := 5. self extent: 10@10. 1 to: nOctaves+1 do: [:i | i <= nOctaves ifTrue: [nWhite := 7. nBlack := 5] ifFalse: [nWhite := 1. nBlack := 0 "High C"]. octavePt := self innerBounds topLeft + ((7*wtWid*(i-1)-1) @ -1). 1 to: nWhite do: [:j | | val | keyRect := octavePt + (j-1*wtWid@0) extent: (wtWid+1)@36. val := i-1*12 + (#(1 3 5 6 8 10 12) at: j). self addMorph: ((RectangleMorph newBounds: keyRect color: whiteKeyColor)
borderWidth: 1; on: #mouseDown send: #mouseDownPitch:event:noteMorph: to: self withValue: val; on: #mouseUp send: #mouseUpPitch:event:noteMorph: to: self withValue: val; on: #mouseLeaveDragging send: #mouseUpPitch:event:noteMorph: to: self withValue: val; on: #mouseMove send: #mouseMovePitch:event:noteMorph: to: self withValue: val; on: #mouseEnterDragging send: #mouseDownPitch:event:noteMorph: to: self withValue: val) ]. 1 to: nBlack do: [:j | |val| keyRect := octavePt + ((#(6 15 29 38 47) at: j)@1) extent: bkWid@21. val := i-1*12 + (#(2 4 7 9 11) at: j). self addMorph: ((Morph newBounds: keyRect color: blackKeyColor) on: #mouseDown send: #mouseDownPitch:event:noteMorph: to: self withValue: val; on: #mouseUp send: #mouseUpPitch:event:noteMorph: to: self withValue: val ; on: #mouseLeaveDragging send: #mouseUpPitch:event:noteMorph: to: self withValue: val; on: #mouseMove send: #mouseMovePitch:event:noteMorph: to: self withValue: val; on: #mouseEnterDragging send: #mouseDownPitch:event:noteMorph: to: self withValue: val )]]. "self submorphsDo: [:m | m on: #mouseMove send: #mouseMovePitch:event:noteMorph: to: self; on: #mouseUp send: #mouseUpPitch:event:noteMorph: to: self; on: #mouseEnterDragging send: #mouseDownPitch:event:noteMorph: to: self; on: #mouseLeaveDragging send: #mouseUpPitch:event:noteMorph: to: self]." self extent: (self fullBounds extent + borderWidth - 1)