The Trunk: Sound-dtl.68.mcz

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

The Trunk: Sound-dtl.68.mcz

commits-2
Marcel Taeumel uploaded a new version of Sound to project The Trunk:
http://source.squeak.org/trunk/Sound-dtl.68.mcz

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

Name: Sound-dtl.68
Author: dtl
Time: 12 December 2019, 7:20:38.226903 am
UUID: c7b5a141-2b1b-4d24-ab88-0a96dd78600b
Ancestors: Sound-dtl.67

Resolve unimplemented calls in the previous update.
Discussion on squeak-dev http://lists.squeakfoundation.org/pipermail/squeak-dev/2019-December/205515.html

=============== Diff against Sound-dtl.67 ===============

Item was changed:
  ----- Method: AbstractSound>>loudness (in category 'volume') -----
  loudness
  "Answer the current volume setting for this sound."
 
+ ^ envelopes detect: [:e | e isKindOf: VolumeEnvelope]
+ ifFound: [ :envelope | envelope scale ]
+ ifNone: [scaledVol asFloat / FloatScaleFactor]
+ !
- self hasVolumeEnvelope ifTrue: [^ self volumeEnvelope scale].
-
- ^ scaledVol asFloat / ScaleFactor!

Item was changed:
  ----- Method: SequentialSound>>mixSampleCount:into:startingAt:leftVol:rightVol: (in category 'sound generation') -----
  mixSampleCount: n into: aSoundBuffer startingAt: startIndex leftVol: leftVol rightVol: rightVol
  "Play a collection of sounds in sequence."
  "PluckedSound chromaticScale play"
 
  | finalIndex i snd remaining count leftScaledVol rightScaledVol |
  currentIndex = 0 ifTrue: [^ self].  "already done"
 
+ leftScaledVol := leftVol * scaledVol / ScaleFactor asFloat.
+ rightScaledVol := rightVol * scaledVol / ScaleFactor asFloat.
- leftScaledVol := leftVol * scaledVol /// ScaleFactor.
- rightScaledVol := rightVol * scaledVol /// ScaleFactor.
 
  finalIndex := (startIndex + n) - 1.
  i := startIndex.
  [i <= finalIndex] whileTrue: [
  snd := (sounds at: currentIndex).
  [(remaining := snd samplesRemaining) <= 0] whileTrue: [
  "find next undone sound"
  currentIndex < sounds size
  ifTrue: [
  currentIndex := currentIndex + 1.
  snd := (sounds at: currentIndex)]
  ifFalse: [
  currentIndex := 0.
  ^ self]].  "no more sounds"
  count := (finalIndex - i) + 1.
  remaining < count ifTrue: [count := remaining].
  snd mixSampleCount: count into: aSoundBuffer startingAt: i
  leftVol: leftScaledVol
  rightVol: rightScaledVol.
  i := i + count].
  !