[squeak-dev] The Inbox: MorphicExtras-ct.323.mcz
karl ramberg
karlramberg at gmail.com
Tue Aug 23 17:43:40 UTC 2022
Nice,
And maybe do something like this as well, to show that the instruments are
changeable.
[image: bild.png]
Best,
Karl
On Tue, Aug 23, 2022 at 12:10 PM Thiede, Christoph <
Christoph.Thiede at student.hpi.uni-potsdam.de> wrote:
> Before:
>
>
>
> After:
>
>
> ------------------------------
> *Von:* Squeak-dev <squeak-dev-bounces at lists.squeakfoundation.org> im
> Auftrag von commits at source.squeak.org <commits at source.squeak.org>
> *Gesendet:* Dienstag, 23. August 2022 12:09:41
> *An:* squeak-dev at lists.squeakfoundation.org
> *Betreff:* [squeak-dev] The Inbox: MorphicExtras-ct.323.mcz
>
> A new version of MorphicExtras was added to project The Inbox:
> http://source.squeak.org/inbox/MorphicExtras-ct.323.mcz
>
> ==================== Summary ====================
>
> Name: MorphicExtras-ct.323
> Author: ct
> Time: 23 August 2022, 12:09:37.941308 pm
> UUID: ab99afa5-a3f1-d94f-a74e-c525589f0ec0
> Ancestors: MorphicExtras-eem.322
>
> Adds high-dpi support for ScorePlayerMorph.
>
> Implementation detail: Explicitly specify orientation of sliders to avoid
> auto-orientation as vertical during first layout run.
>
> =============== Diff against MorphicExtras-eem.322 ===============
>
> Item was changed:
> ----- Method: ScorePlayerMorph>>defaultBorderWidth (in category
> 'initialization') -----
> defaultBorderWidth
> "answer the default border width for the receiver"
> + ^ 2 px!
> - ^ 2!
>
> Item was changed:
> ----- Method: ScorePlayerMorph>>initialize (in category
> 'initialization') -----
> initialize
> "initialize the state of the receiver"
> super initialize.
> ""
> self listDirection: #topToBottom;
> wrapCentering: #center;
> cellPositioning: #topCenter;
> hResizing: #shrinkWrap;
> vResizing: #shrinkWrap;
> layoutInset: 3;
> onScorePlayer: ScorePlayer new initialize;
> + extent: 20 px @ 20 px.!
> - extent: 20 @ 20 !
>
> Item was changed:
> ----- Method: ScorePlayerMorph>>makeControls (in category 'layout') -----
> makeControls
>
> | bb r reverbSwitch repeatSwitch |
> r := AlignmentMorph newRow.
> r color: color; borderWidth: 0; layoutInset: 0.
> + r hResizing: #shrinkWrap; vResizing: #shrinkWrap; extent: 5 px @
> 5 px.
> - r hResizing: #shrinkWrap; vResizing: #shrinkWrap; extent: 5 at 5.
> bb := SimpleButtonMorph new target: self; borderColor: #raised;
> + borderWidth: 2 px; color: color.
> - borderWidth: 2; color: color.
> r addMorphBack: (bb label: 'Menu' translated; actWhen:
> #buttonDown;
>
> actionSelector: #invokeMenu).
> bb := SimpleButtonMorph new target: self; borderColor: #raised;
> + borderWidth: 2 px; color: color.
> - borderWidth: 2; color: color.
> r addMorphBack: (bb label: 'Piano Roll' translated;
> actionSelector: #makePianoRoll).
> bb := SimpleButtonMorph new target: self; borderColor: #raised;
> + borderWidth: 2 px; color: color.
> - borderWidth: 2; color: color.
> r addMorphBack: (bb label: 'Rewind' translated;
> actionSelector: #rewind).
> bb := SimpleButtonMorph new target: scorePlayer; borderColor:
> #raised;
> + borderWidth: 2 px; color: color.
> - borderWidth: 2; color: color.
> r addMorphBack: (bb label: 'Play' translated;
> actionSelector: #resumePlaying).
> bb := SimpleButtonMorph new target: scorePlayer; borderColor:
> #raised;
> + borderWidth: 2 px; color: color.
> - borderWidth: 2; color: color.
> r addMorphBack: (bb label: 'Pause' translated;
> actionSelector: #pause).
> reverbSwitch := SimpleSwitchMorph new
> offColor: color;
> onColor: (Color r: 1.0 g: 0.6 b: 0.6);
> + borderWidth: 2 px;
> - borderWidth: 2;
> label: 'Reverb Disable' translated;
> actionSelector: #disableReverb:;
> target: scorePlayer;
> setSwitchState: SoundPlayer isReverbOn not.
> r addMorphBack: reverbSwitch.
> scorePlayer ifNotNil:
> [repeatSwitch := SimpleSwitchMorph new
> offColor: color;
> onColor: (Color r: 1.0 g: 0.6 b: 0.6);
> + borderWidth: 2 px;
> - borderWidth: 2;
> label: 'Repeat' translated;
> actionSelector: #repeat:;
> target: scorePlayer;
> setSwitchState: scorePlayer repeat.
> r addMorphBack: repeatSwitch].
> + ^ r!
> - ^ r
> - !
>
> Item was changed:
> ----- Method: ScorePlayerMorph>>onScorePlayer:title: (in category
> 'initialization') -----
> onScorePlayer: aScorePlayer title: scoreName
> | divider col r |
> scorePlayer := aScorePlayer.
> scorePlayer ifNotNil:
> [scorePlayer reset.
> instrumentSelector := Array new: scorePlayer score tracks
> size].
>
> self removeAllMorphs.
> self addMorphBack: self makeControls.
> scorePlayer ifNil: [^ self].
>
> r := self makeRow
> hResizing: #spaceFill;
> vResizing: #shrinkWrap.
> r addMorphBack: self rateControl;
> + addMorphBack: (Morph newBounds: (0 @ 0 extent: 20 px @ 0)
> color: Color transparent);
> - addMorphBack: (Morph newBounds: (0 at 0 extent: 20 at 0)
> color: Color transparent);
> addMorphBack: self volumeControl.
> self addMorphBack: r.
> self addMorphBack: self scrollControl.
> +
> -
> col := AlignmentMorph newColumn color: color; layoutInset: 0.
> self addMorphBack: col.
> 1 to: scorePlayer trackCount do: [:trackIndex |
> divider := AlignmentMorph new
> + extent: 10 px @ 1 px;
> - extent: 10 at 1;
> layoutInset: 0;
> + borderStyle: (BorderStyle raised width: 1 px);
> - borderStyle: (BorderStyle raised width: 1);
> color: color;
> hResizing: #spaceFill;
> vResizing: #rigid.
> col addMorphBack: divider.
> col addMorphBack: (self trackControlsFor: trackIndex)].
>
> LastMIDIPort ifNotNil: [
> "use the most recently set MIDI port"
> + scorePlayer openMIDIPort: LastMIDIPort].!
> - scorePlayer openMIDIPort: LastMIDIPort].
> - !
>
> Item was changed:
> ----- Method: ScorePlayerMorph>>panAndVolControlsFor: (in category
> 'layout') -----
> panAndVolControlsFor: trackIndex
>
> | volSlider panSlider c r middleLine pianoRollColor |
> pianoRollColor := (Color wheel: scorePlayer score tracks size)
> at: trackIndex.
> volSlider := SimpleSliderMorph new
> color: color;
> sliderColor: pianoRollColor;
> + extent: 101 px @ 6 px;
> - extent: 101 at 6;
> target: scorePlayer;
> arguments: (Array with: trackIndex);
> actionSelector: #volumeForTrack:put:;
> + orientation: #horizontal;
> minVal: 0.0;
> maxVal: 1.0;
> adjustToValue: (scorePlayer volumeForTrack: trackIndex).
> panSlider := SimpleSliderMorph new
> color: color;
> sliderColor: pianoRollColor;
> + extent: 101 px @ 6 px;
> - extent: 101 at 6;
> target: scorePlayer;
> arguments: (Array with: trackIndex);
> actionSelector: #panForTrack:put:;
> + orientation: #horizontal;
> minVal: 0.0;
> maxVal: 1.0;
> adjustToValue: (scorePlayer panForTrack: trackIndex).
> c := AlignmentMorph newColumn
> color: color;
> layoutInset: 0;
> wrapCentering: #center; cellPositioning: #topCenter;
> hResizing: #spaceFill;
> vResizing: #shrinkWrap.
> middleLine := Morph new "center indicator for pan slider"
> color: (Color r: 0.4 g: 0.4 b: 0.4);
> + extent: 1 px @ (panSlider height - 4 px);
> + position: panSlider center x @ (panSlider top + 2 px).
> - extent: 1@(panSlider height - 4);
> - position: panSlider center x@(panSlider top + 2).
> panSlider addMorphBack: middleLine.
> r := self makeRow.
> r addMorphBack: (StringMorph contents: '0').
> r addMorphBack: volSlider.
> r addMorphBack: (StringMorph contents: '10').
> c addMorphBack: r.
> r := self makeRow.
> r addMorphBack: (StringMorph contents: 'L' translated).
> r addMorphBack: panSlider.
> r addMorphBack: (StringMorph contents: 'R' translated).
> c addMorphBack: r.
> + ^ c!
> - ^ c
> - !
>
> Item was changed:
> ----- Method: ScorePlayerMorph>>rateControl (in category 'layout') -----
> rateControl
>
> | rateSlider middleLine r |
> rateSlider := SimpleSliderMorph new
> color: color;
> sliderColor: Color gray;
> + extent: 180 px @ 12 px;
> - extent: 180 at 12;
> target: self;
> actionSelector: #setLogRate:;
> + orientation: #horizontal;
> minVal: -1.0;
> maxVal: 1.0;
> adjustToValue: 0.0.
> middleLine := Morph new "center indicator for pan slider"
> color: (Color r: 0.4 g: 0.4 b: 0.4);
> + extent: 1 px @ (rateSlider height - 4 px);
> + position: rateSlider center x @ (rateSlider top + 2 px).
> - extent: 1@(rateSlider height - 4);
> - position: rateSlider center x@(rateSlider top + 2).
> rateSlider addMorphBack: middleLine.
> r := self makeRow
> hResizing: #spaceFill;
> vResizing: #rigid;
> + height: 24 px.
> - height: 24.
> r addMorphBack: (StringMorph contents: 'slow ' translated).
> r addMorphBack: rateSlider.
> r addMorphBack: (StringMorph contents: ' fast' translated).
> + ^ r!
> - ^ r
> - !
>
> Item was changed:
> ----- Method: ScorePlayerMorph>>scrollControl (in category 'layout')
> -----
> scrollControl
>
> | r |
> scrollSlider := SimpleSliderMorph new
> color: color;
> sliderColor: Color gray;
> + extent: 360 px @ 12 px;
> - extent: 360 at 12;
> target: scorePlayer;
> + orientation: #horizontal;
> actionSelector: #positionInScore:;
> adjustToValue: scorePlayer positionInScore.
> r := self makeRow
> hResizing: #spaceFill;
> vResizing: #rigid;
> + height: 24 px.
> - height: 24.
> r addMorphBack: (StringMorph contents: 'start ' translated).
> r addMorphBack: scrollSlider.
> r addMorphBack: (StringMorph contents: ' end' translated).
> + ^ r!
> - ^ r
> - !
>
> Item was changed:
> ----- Method: ScorePlayerMorph>>trackControlsFor: (in category 'layout')
> -----
> trackControlsFor: trackIndex
>
> | r |
> r := self makeRow
> hResizing: #spaceFill;
> vResizing: #shrinkWrap.
> r addMorphBack: (self trackNumAndMuteButtonFor: trackIndex).
> + r addMorphBack: (Morph new extent: 10 px @ 5 px; color: color).
> "spacer"
> - r addMorphBack: (Morph new extent: 10 at 5; color: color). "spacer"
> r addMorphBack: (self panAndVolControlsFor: trackIndex).
> + ^ r!
> - ^ r
> - !
>
> Item was changed:
> ----- Method: ScorePlayerMorph>>trackNumAndMuteButtonFor: (in category
> 'layout') -----
> trackNumAndMuteButtonFor: trackIndex
>
> | muteButton instSelector pianoRollColor r |
> muteButton := SimpleSwitchMorph new
> onColor: (Color r: 1.0 g: 0.6 b: 0.6);
> offColor: color;
> color: color;
> label: 'Mute' translated;
> target: scorePlayer;
> actionSelector: #mutedForTrack:put:;
> arguments: (Array with: trackIndex).
> instSelector := PopUpChoiceMorph new
> + extent: 95 px @ 14 px;
> - extent: 95 at 14;
> contentsClipped: 'oboe1';
> target: self;
> actionSelector: #atTrack:from:selectInstrument:;
> getItemsSelector: #instrumentChoicesForTrack:;
> getItemsArgs: (Array with: trackIndex).
> instSelector arguments:
> (Array with: trackIndex with: instSelector).
> instrumentSelector at: trackIndex put: instSelector.
>
> "select track color using same color list as PianoRollScoreMorph"
> + pianoRollColor := (Color wheel: scorePlayer score tracks size)
> at: trackIndex.
> - pianoRollColor := (Color wheel: scorePlayer score tracks size)
> at: trackIndex.
>
> r := self makeRow
> hResizing: #spaceFill;
> vResizing: #spaceFill;
> + extent: 70 px @ 10 px.
> - extent: 70 at 10.
> r addMorphBack:
> ((StringMorph
> contents: trackIndex printString
> + font: (TextStyle defaultFont asPointSize:
> TextStyle defaultFont pointSize * 1.57)) color: pianoRollColor).
> - font: (TextStyle default fontOfSize: 24)) color:
> pianoRollColor).
> trackIndex < 10
> + ifTrue: [r addMorphBack: (Morph new color: color; extent:
> 19 px @ 8 px)] "spacer"
> + ifFalse: [r addMorphBack: (Morph new color: color;
> extent: 8 px @ 8 px)]. "spacer"
> - ifTrue: [r addMorphBack: (Morph new color: color; extent:
> 19 at 8)] "spacer"
> - ifFalse: [r addMorphBack: (Morph new color: color;
> extent: 8 at 8)]. "spacer"
> r addMorphBack:
> (StringMorph new
> + extent: 80 px @ 14 px;
> - extent: 80 at 14;
> contentsClipped: (scorePlayer infoForTrack:
> trackIndex)).
> + r addMorphBack: (Morph new color: color; extent: 8 px @ 8 px).
> "spacer"
> - r addMorphBack: (Morph new color: color; extent: 8 at 8). "spacer"
> r addMorphBack: instSelector.
> r addMorphBack: (AlignmentMorph newRow color: color). "spacer"
> r addMorphBack: muteButton.
> + ^ r!
> - ^ r
> - !
>
> Item was changed:
> ----- Method: ScorePlayerMorph>>volumeControl (in category 'layout')
> -----
> volumeControl
>
> | volumeSlider r |
> volumeSlider := SimpleSliderMorph new
> color: color;
> sliderColor: Color gray;
> + extent: 80 px @ 12 px;
> - extent: 80 at 12;
> target: scorePlayer;
> + orientation: #horizontal;
> actionSelector: #overallVolume:;
> adjustToValue: scorePlayer overallVolume.
> r := self makeRow
> hResizing: #spaceFill;
> vResizing: #rigid;
> + height: 24 px.
> - height: 24.
> r addMorphBack: (StringMorph contents: 'soft ' translated).
> r addMorphBack: volumeSlider.
> r addMorphBack: (StringMorph contents: ' loud' translated).
> + ^ r!
> - ^ r
> - !
>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20220823/0d07add5/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: pastedImage.png
Type: image/png
Size: 60550 bytes
Desc: not available
URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20220823/0d07add5/attachment-0003.png>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: pastedImage.png
Type: image/png
Size: 88935 bytes
Desc: not available
URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20220823/0d07add5/attachment-0004.png>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: bild.png
Type: image/png
Size: 23907 bytes
Desc: not available
URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20220823/0d07add5/attachment-0005.png>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: ScorePlayerMorph-trackNumAndMuteButtonFor.st
Type: application/octet-stream
Size: 1963 bytes
Desc: not available
URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20220823/0d07add5/attachment-0001.obj>
More information about the Squeak-dev
mailing list
|