[squeak-dev] The Trunk: Sound-nice.38.mcz

commits at source.squeak.org commits at source.squeak.org
Wed Dec 25 22:27:54 UTC 2013


Nicolas Cellier uploaded a new version of Sound to project The Trunk:
http://source.squeak.org/trunk/Sound-nice.38.mcz

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

Name: Sound-nice.38
Author: nice
Time: 25 December 2013, 11:27:25.908 pm
UUID: b626daf0-be23-4fb8-b2d5-04b9cd370539
Ancestors: Sound-fbs.37

Change a few print:(aFloat roundTo: 0.01) into nextPutAll:(aFloat printShowingMaxDecimalPlaces: 2)

=============== Diff against Sound-fbs.37 ===============

Item was changed:
  ----- Method: FWT>>viewPhiAndPsi (in category 'testing') -----
  viewPhiAndPsi  "(FWT new nSamples: 256 nLevels: 6) viewPhiAndPsi"
  	"View the scaling function and mother wavelets for this transform"
  	| p |
  	Display fillWhite: (0 at 0 extent: 300 at 300).
  	Display border: (0 at 0 extent: 300 at 300) width: 2.
  	[Sensor anyButtonPressed] whileFalse:
  		["Move mouse around in the outer rectangle to explore"
  		p := Sensor cursorPoint min: 300 at 300.
  		self setAlpha: (p x - 150) / 150.0 * Float pi
  				beta: (p y - 150) / 150.0 * Float pi.
+ 		'alpha=', (alpha printShowingMaxDecimalPlaces: 2), '   ',
+ 			'beta=', (beta printShowingMaxDecimalPlaces: 2), '    ' displayAt: 50 at 5.
- 		'alpha=', (alpha roundTo: 0.01) printString, '   ',
- 			'beta=', (beta roundTo: 0.01) printString, '    ' displayAt: 50 at 5.
  		transform do: [:w | w atAllPut: 0.0].
  		(transform at: transform size - 1) at: (nSamples>>nLevels) put: 1.0.
  		self transformForward: false.
  		FFT new plot: (samples copyFrom: 1 to: nSamples) in: (20 at 30 extent: nSamples at 100).
  
  		transform do: [:w | w atAllPut: 0.0].
  		(transform at: transform size) at: (nSamples>>nLevels) put: 1.0.
  		self transformForward: false.
  		FFT new plot: (samples copyFrom: 1 to: nSamples) in: (20 at 170 extent: nSamples at 100)].
  	Sensor waitNoButton!

Item was changed:
  ----- Method: SoundRecorder>>segmentsAbove:normalizedVolume: (in category 'trimming') -----
  segmentsAbove: threshold normalizedVolume: percentOfMaxVolume
  	"Break the current recording up into a sequence of sound segments separated by silences."
  
  	| dcOffset firstPlace endPlace resultBuf nFactor lastPlace segments gapSize minDur minLull soundSize restSize max min sum totalSamples |
  	stereo ifTrue: [self error: 'stereo trimming is not yet supported'].
  	paused ifFalse: [self error: 'must stop recording before trimming'].
  	(recordedSound == nil or: [recordedSound sounds isEmpty]) ifTrue:[^ self].
  	"Reconstruct buffers so old trimming code will work"
  	recordedBuffers := recordedSound sounds collect: [:snd | snd samples].
  	soundSize := restSize := 0.
  
  	max := min := sum := totalSamples := 0.
  	recordedBuffers do: [:buf | | bufSize s |
  		bufSize := buf size.
  		totalSamples := totalSamples + buf size.
  		1 to: bufSize do: [:i |
  			s := buf at: i.
  			s > max ifTrue: [max := s].
  			s < min ifTrue: [min := s].
  			sum := sum + s]].
  	dcOffset := sum // totalSamples.
  
  	minDur := (samplingRate/20.0) asInteger.  " 1/20 second "
  	minLull := (samplingRate/4.0) asInteger.  " 1/2 second "
  	segments := SequentialSound new.
  	endPlace := self endPlace.
  	lastPlace := #(1 1).
  	[firstPlace := self scanForStartThreshold: threshold
  						dcOffset: dcOffset
  						minDur: minDur
  						startingAt: lastPlace.
  	firstPlace = endPlace]
  		whileFalse:
  		[firstPlace = lastPlace ifFalse:
  			["Add a silence equal to the gap size"
  			"Wasteful but simple way to get gap size..."
  			gapSize := (self copyFrom: lastPlace to: firstPlace
  						normalize: 1000 dcOffset: dcOffset) size - 2.
  			"... -2 makes up for overlap of one sample on either end"
  			segments add: (RestSound dur: gapSize asFloat / samplingRate).
  			restSize := restSize + gapSize.
  "Transcript cr; print: firstPlace; space; print: lastPlace; space; print: gapSize; space; show: 'gap'."
  			].
  		lastPlace := self scanForEndThreshold: threshold
  						dcOffset: dcOffset
  						minLull: minLull + minDur
  						startingAt: firstPlace.
  		"Allow room for lead time of next sound"
  		lastPlace := self place: lastPlace plus: minDur negated.
  		nFactor := self normalizeFactorFor: percentOfMaxVolume
  						min: min max: max dcOffset: dcOffset.
  		resultBuf := self copyFrom: firstPlace to: lastPlace
  						normalize: nFactor dcOffset: dcOffset.
  		soundSize := soundSize + resultBuf size.
  "Transcript cr; print: firstPlace; space; print: lastPlace; space; print: resultBuf size; space; show: 'sound'."
  		segments add: (codec == nil
  			ifTrue: [SampledSound new setSamples: resultBuf samplingRate: samplingRate]
  			ifFalse: [codec compressSound: (SampledSound new setSamples: resultBuf samplingRate: samplingRate)])].
  
  	"Final gap for consistency"
  	gapSize := (self copyFrom: lastPlace to: self endPlace
  				normalize: 1000 dcOffset: dcOffset) size - 1.
  	segments add: (RestSound dur: gapSize asFloat / samplingRate).
  	restSize := restSize + gapSize.
+ 	self inform: (soundSize+restSize/samplingRate printShowingMaxDecimalPlaces: 1) , ' secs reduced to ' , (soundSize/samplingRate printShowingMaxDecimalPlaces: 1).
- 	self inform: ((soundSize+restSize/samplingRate) roundTo: 0.1) printString , ' secs reduced to ' , ((soundSize/samplingRate) roundTo: 0.1) printString.
  	recordedBuffers := nil.
  	^ segments!

Item was changed:
  ----- Method: TempoEvent>>printOn: (in category 'as yet unclassified') -----
  printOn: aStream
  
  	aStream nextPut: $(.
  	time printOn: aStream.
  	aStream nextPutAll: ': tempo '.
+ 	aStream nextPutAll:  (120.0 * (500000.0 / tempo) printShowingMaxDecimalPlaces: 2).
- 	((120.0 * (500000.0 / tempo)) roundTo: 0.01) printOn: aStream.
  	aStream nextPut: $).
  !



More information about the Squeak-dev mailing list