Etoys Inbox: Sound-kfr.21.mcz

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

Etoys Inbox: Sound-kfr.21.mcz

commits-2
A new version of Sound was added to project Etoys Inbox:
http://source.squeak.org/etoysinbox/Sound-kfr.21.mcz

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

Name: Sound-kfr.21
Author: kfr
Time: 22 February 2012, 9:36:33 pm
UUID: faaa5c22-e2d8-614d-942c-9113403e7c57
Ancestors: Sound-kfr.20

In image handling of sound volume

=============== Diff against Sound-kfr.20 ===============

Item was added:
+ (PackageInfo named: 'Sound') preamble: '"below, add code to be run before the loading of this package"
+
+ SoundPlayer initialize'!

Item was changed:
  ----- Method: AbstractSound>>playSampleCount:into:startingAt: (in category 'playing') -----
  playSampleCount: n into: aSoundBuffer startingAt: startIndex
  "Mix the next n samples of this sound into the given buffer starting at the given index. Update the receiver's control parameters periodically."
 
  | fullVol samplesBetweenControlUpdates pastEnd i remainingSamples count |
+ fullVol := AbstractSound scaleFactor * SoundPlayer soundVolume average.
- fullVol _ AbstractSound scaleFactor.
  samplesBetweenControlUpdates _ self samplingRate // self controlRate.
  pastEnd _ startIndex + n.  "index just after the last sample"
  i _ startIndex.
  [i < pastEnd] whileTrue: [
  remainingSamples _ self samplesRemaining.
  remainingSamples <= 0 ifTrue: [^ self].
  count _ pastEnd - i.
  samplesUntilNextControl < count ifTrue: [count _ samplesUntilNextControl].
  remainingSamples < count ifTrue: [count _ remainingSamples].
  self mixSampleCount: count into: aSoundBuffer startingAt: i leftVol: fullVol rightVol: fullVol.
  samplesUntilNextControl _ samplesUntilNextControl - count.
  samplesUntilNextControl <= 0 ifTrue: [
  self doControl.
  samplesUntilNextControl _ samplesBetweenControlUpdates].
  i _ i + count].
  !

Item was changed:
  Object subclass: #SoundPlayer
  instanceVariableNames: ''
+ classVariableNames: 'ActiveSounds Buffer BufferIndex BufferMSecs LastBuffer PlayerProcess PlayerSemaphore ReadyForBuffer ReverbState SamplingRate SoundJustStarted SoundSupported Stereo UseReadySemaphore UseReverb Volume'
- classVariableNames: 'ActiveSounds Buffer BufferIndex BufferMSecs LastBuffer PlayerProcess PlayerSemaphore ReadyForBuffer ReverbState SamplingRate SoundJustStarted SoundSupported Stereo UseReadySemaphore UseReverb'
  poolDictionaries: ''
  category: 'Sound-Synthesis'!

Item was changed:
  ----- Method: SoundPlayer class>>initialize (in category 'initialization') -----
  initialize
  "SoundPlayer initialize; shutDown; startUp"
  "Details: BufferMSecs represents a tradeoff between latency and quality. If BufferMSecs is too low, the sound will not play smoothly, especially during long-running primitives such as large BitBlts. If BufferMSecs is too high, there will be a long time lag between when a sound buffer is submitted to be played and when that sound is actually heard. BufferMSecs is typically in the range 50-200."
+ Volume ifNil:[Volume := #(1.0 1.0) ].
-
  SamplingRate := 22050.
  BufferMSecs := 120.
  Stereo := true.
  Preferences
  addPreference: #soundReverb
  categories: #(media)
+ default: false
- default: true
  balloonHelp: 'If true, a little echo will be added, making it sound as if it is in a larger space.'
  projectLocal: true
  changeInformee: self
  changeSelector: #reverbChanged.
 
  self reverbChanged.
  !

Item was changed:
  ----- Method: SoundPlayer class>>setVolumeLeft:volumeRight: (in category 'accessing') -----
  setVolumeLeft: aLeftVolume volumeRight: aRightVolume
  "Set sound pass in float 0.0-1.0 for left and right channel, with possible 2.0 or  higher to overdrive sound channel "
+ Volume at:1 put:aLeftVolume.
+ Volume at:2 put:aRightVolume.!
- self primSoundSetVolumeLeft: aLeftVolume volumeRight: aRightVolume!

Item was changed:
  ----- Method: SoundPlayer class>>soundVolume (in category 'accessing') -----
  soundVolume
  "Return sound as array of doubles left then right channel, range is 0.0 to 1.0 but may be overdriven"
+ ^Volume!
- ^self primSoundGetVolume!

_______________________________________________
etoys-dev mailing list
[hidden email]
http://lists.squeakland.org/mailman/listinfo/etoys-dev