[squeak-dev] The Trunk: Morphic-dtl.1418.mcz

commits at source.squeak.org commits at source.squeak.org
Sun Apr 22 16:38:42 UTC 2018


David T. Lewis uploaded a new version of Morphic to project The Trunk:
http://source.squeak.org/trunk/Morphic-dtl.1418.mcz

==================== Summary ====================

Name: Morphic-dtl.1418
Author: dtl
Time: 22 April 2018, 12:38:19.743621 pm
UUID: 3e663437-df0d-445a-946a-fb072a336165
Ancestors: Morphic-cmm.1417

Re-save Morphic-kfr.1418 to fix a problem in its ancestry.

Name: Morphic-kfr.1418
Author: kfr
Time: 22 April 2018, 11:30:41.518937 am
UUID: d6dd46c1-fa46-5043-bf0d-8b4542cf733d
Ancestors: Morphic-kfr.1416, Morphic-cmm.1417

Some maintenance to ScorePlayerMorph. 
Fixing some layout issues.
Add menu options to make a new score and add tracks to the score.

=============== Diff against Morphic-cmm.1417 ===============

Item was added:
+ ----- Method: ScorePlayerMorph>>addNewScore (in category 'menu') -----
+ addNewScore
+ 	"Open a MIDI score and re-init controls..."
+ 	| score player |
+ 
+ 	score := MIDIScore new.
+ 	score tracks: (Array with: Array new).
+ 	score trackInfo: #('Instrument').
+ 	player := ScorePlayer onScore: score.
+ 	^self onScorePlayer: player title: 'new'!

Item was added:
+ ----- Method: ScorePlayerMorph>>addTrackToScore (in category 'menu') -----
+ addTrackToScore
+ 	"add a instrument track to the current score"
+ 	| score tracks trackInfo player |
+ 	score := scorePlayer score.
+       tracks := score tracks copyWith:#().
+ 	score tracks: tracks.
+       trackInfo := score trackInfo copyWith: 'Instrument'.
+ 	score trackInfo: trackInfo.
+ 	player := ScorePlayer onScore: score.
+ 	^self onScorePlayer: player title: 'new'!

Item was changed:
  ----- Method: ScorePlayerMorph>>invokeMenu (in category 'menu') -----
  invokeMenu
  	"Invoke a menu of additonal functions for this ScorePlayer."
- 
  	| aMenu |
  	aMenu := MenuMorph new defaultTarget: self.
+ 	aMenu add: 'add a new score' translated action: #addNewScore.
+ 	aMenu add: 'add a new track to score' translated action: #addTrackToScore.
  	aMenu add: 'open a MIDI file' translated action: #openMIDIFile.
+ 	aMenu addList: {#-. {'save as AIFF file' translated. #saveAsAIFF}. {'save as WAV file' translated. #saveAsWAV}. {'save as Sun AU file' translated. #saveAsSunAudio}. #-}.
+ 	aMenu
+ 		add: 'reload instruments' translated
+ 		target: AbstractSound
+ 		selector: #updateScorePlayers.
- 	aMenu addList: {
- 		#-.
- 		{'save as AIFF file' translated.	#saveAsAIFF}.
- 		{'save as WAV file' translated.		#saveAsWAV}.
- 		{'save as Sun AU file' translated.	#saveAsSunAudio}.
- 		#-}.
- 	aMenu add: 'reload instruments' translated target: AbstractSound selector: #updateScorePlayers.
  	aMenu addLine.
  	scorePlayer midiPort
+ 		ifNil: [aMenu add: 'play via MIDI' translated action: #openMIDIPort]
+ 		ifNotNil: [aMenu add: 'play via built in synth' translated action: #closeMIDIPort.
- 		ifNil: [
- 			aMenu add: 'play via MIDI' translated action: #openMIDIPort]
- 		ifNotNil: [
- 			aMenu add: 'play via built in synth' translated action: #closeMIDIPort.
  			aMenu add: 'new MIDI controller' translated action: #makeMIDIController:].
  	aMenu addLine.
  	aMenu add: 'make a pause marker' translated action: #makeAPauseEvent:.
+ 	aMenu popUpInWorld: self world!
- 
- 	aMenu popUpInWorld: self world.
- !

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;
- 		hResizing: #shrinkWrap;
  		vResizing: #shrinkWrap.
  	r addMorphBack: self rateControl;
  		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 at 1;
  			borderWidth: 1;
  			layoutInset: 0;
  			borderColor: #raised;
  			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].
  !

Item was changed:
  ----- Method: ScorePlayerMorph>>rateControl (in category 'layout') -----
  rateControl
  
  	| rateSlider middleLine r |
  	rateSlider := SimpleSliderMorph new
  		color: color;
  		sliderColor: Color gray;
+ 		extent: 180 at 12;
- 		extent: 180 at 6;
  		target: self;
  		actionSelector: #setLogRate:;
  		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@(rateSlider height - 4);
  		position: rateSlider center x@(rateSlider top + 2).
  	rateSlider addMorphBack: middleLine.
  	r := self makeRow
+ 		hResizing: #spaceFill;
- 		hResizing: #shrinkWrap;
  		vResizing: #rigid;
  		height: 24.
  	r addMorphBack: (StringMorph contents: 'slow ' translated).
  	r addMorphBack: rateSlider.
  	r addMorphBack: (StringMorph contents: ' fast' translated).
  	^ r
  !

Item was changed:
  ----- Method: ScorePlayerMorph>>scrollControl (in category 'layout') -----
  scrollControl
  
  	| r |
  	scrollSlider := SimpleSliderMorph new
  		color: color;
  		sliderColor: Color gray;
+ 		extent: 360 at 12;
- 		extent: 360 at 6;
  		target: scorePlayer;
  		actionSelector: #positionInScore:;
  		adjustToValue: scorePlayer positionInScore.
  	r := self makeRow
+ 		hResizing: #spaceFill;
- 		hResizing: #shrinkWrap;
  		vResizing: #rigid;
  		height: 24.
  	r addMorphBack: (StringMorph contents: 'start ' translated).
  	r addMorphBack: scrollSlider.
  	r addMorphBack: (StringMorph contents: ' end' translated).
  	^ 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 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.
  
  	r := self makeRow
  		hResizing: #spaceFill;
  		vResizing: #spaceFill;
  		extent: 70 at 10.
  	r addMorphBack:
  		((StringMorph
  			contents: trackIndex printString
  			font: (TextStyle default fontOfSize: 24)) color: pianoRollColor).
  	trackIndex < 10
  		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 at 14;
- 			extent: 140 at 14;
  			contentsClipped: (scorePlayer infoForTrack: trackIndex)).
  	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
  !

Item was changed:
  ----- Method: ScorePlayerMorph>>volumeControl (in category 'layout') -----
  volumeControl
  
  	| volumeSlider r |
  	volumeSlider := SimpleSliderMorph new
  		color: color;
  		sliderColor: Color gray;
+ 		extent: 80 at 12;
- 		extent: 80 at 6;
  		target: scorePlayer;
  		actionSelector: #overallVolume:;
  		adjustToValue: scorePlayer overallVolume.
  	r := self makeRow
+ 		hResizing: #spaceFill;
- 		hResizing: #shrinkWrap;
  		vResizing: #rigid;
  		height: 24.
  	r addMorphBack: (StringMorph contents: 'soft  ' translated).
  	r addMorphBack: volumeSlider.
  	r addMorphBack: (StringMorph contents: ' loud' translated).
  	^ r
  !



More information about the Squeak-dev mailing list