The Trunk: Sound-mt.52.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-mt.52.mcz

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

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

Name: Sound-mt.52
Author: mt
Time: 6 April 2016, 6:06:14.405125 pm
UUID: c5f62084-edd7-a64f-a95a-9ae29db062f6
Ancestors: Sound-mt.51

Adds descriptive process names to the processes that are playing sound and MIDI.

=============== Diff against Sound-mt.51 ===============

Item was changed:
  ----- Method: MIDIFileReader>>asScore (in category 'chunk reading') -----
  asScore
 
  ^ MIDIScore new
  tracks: tracks;
  trackInfo: trackInfo;
  tempoMap: tempoMap;
+ ticksPerQuarterNote: ticksPerQuarter;
+ source: stream localName
- ticksPerQuarterNote: ticksPerQuarter
  !

Item was changed:
  Object subclass: #MIDIScore
+ instanceVariableNames: 'tracks trackInfo ambientTrack tempoMap ticksPerQuarterNote source'
- instanceVariableNames: 'tracks trackInfo ambientTrack tempoMap ticksPerQuarterNote'
  classVariableNames: ''
  poolDictionaries: ''
  category: 'Sound-Scores'!
 
  !MIDIScore commentStamp: '<historical>' prior: 0!
  A MIDIScore is a container for a number of MIDI tracks as well as an ambient track for such things as sounds, book page triggers and other related events.!

Item was added:
+ ----- Method: MIDIScore>>printOn: (in category 'printing') -----
+ printOn: stream
+
+ self source
+ ifNotNil: [:s | s printOn: stream]
+ ifNil: [super printOn: stream].!

Item was added:
+ ----- Method: MIDIScore>>source (in category 'accessing') -----
+ source
+ ^ source!

Item was added:
+ ----- Method: MIDIScore>>source: (in category 'accessing') -----
+ source: anObject
+ source := anObject.!

Item was changed:
  ----- Method: ScorePlayer>>startMIDIPlaying (in category 'midi output') -----
  startMIDIPlaying
  "Start up a process to play this score via MIDI."
 
  midiPort ensureOpen.
  midiPlayerProcess ifNotNil: [midiPlayerProcess terminate].
  midiPlayerProcess := [self midiPlayLoop] newProcess.
  midiPlayerProcess
+ name: 'Score Player (', self score printString, ')';
  priority: Processor userInterruptPriority;
  resume.
  !

Item was changed:
  ----- Method: SoundPlayer class>>resumePlaying:quickStart: (in category 'playing') -----
  resumePlaying: aSound quickStart: quickStart
  "Start playing the given sound without resetting it; it will resume playing from where it last stopped. If quickStart is true, then try to start playing the given sound immediately."
 
  | doQuickStart |
  SoundService soundEnabled ifFalse: [^ self].
  doQuickStart := quickStart.
  self soundQuickStart ifFalse: [doQuickStart := false].
  PlayerProcess == nil ifTrue: [
  self canStartPlayer ifFalse: [^ self].
  ^self startUpWithSound: aSound].
+
-
  PlayerSemaphore critical: [
  (ActiveSounds includes: aSound)
  ifTrue: [doQuickStart := false]
+ ifFalse: [doQuickStart ifFalse: [ActiveSounds add: aSound]].
+ PlayerProcess name: 'Sound Player (', ActiveSounds size asString, ')'].
- ifFalse: [
- doQuickStart ifFalse: [ActiveSounds add: aSound]]].
 
  "quick-start the given sound, unless the sound player has just started"
  doQuickStart ifTrue: [self startPlayingImmediately: aSound].
  !

Item was changed:
  ----- Method: SoundPlayer class>>startPlayerProcessBufferSize:rate:stereo:sound: (in category 'player process') -----
  startPlayerProcessBufferSize: bufferSize rate: samplesPerSecond stereo: stereoFlag sound: aSound
  "Start the sound player process. Terminate the old process, if any."
  "SoundPlayer startPlayerProcessBufferSize: 1000 rate: 11025 stereo: false"
 
  self stopPlayerProcess.
  aSound
  ifNil:[ActiveSounds := OrderedCollection new]
  ifNotNil:[ActiveSounds := OrderedCollection with: aSound].
  Buffer := SoundBuffer newStereoSampleCount: (bufferSize // 4) * 4.
  LastBuffer ifNotNil:[LastBuffer := SoundBuffer basicNew: Buffer basicSize].
  PlayerSemaphore := Semaphore forMutualExclusion.
  SamplingRate := samplesPerSecond.
  Stereo := stereoFlag.
  SoundSupported := true. "Assume so"
  UseReadySemaphore := true.  "set to false if ready semaphore not supported by VM"
  Smalltalk newExternalSemaphoreDo: [ :semaphore :index |
  ReadyForBuffer := semaphore.
  self primSoundStartBufferSize: Buffer stereoSampleCount
  rate: samplesPerSecond
  stereo: Stereo
  semaIndex: index ].
  "Check if sound start prim was successful"
  SoundSupported ifFalse:[
  Smalltalk unregisterExternalObject: ReadyForBuffer.
  ReadyForBuffer := nil.
  ^self ].
  UseReadySemaphore
  ifTrue: [PlayerProcess := [SoundPlayer playLoop] newProcess]
  ifFalse: [PlayerProcess := [SoundPlayer oldStylePlayLoop] newProcess].
  UseReverb ifTrue: [self startReverb].
 
+ PlayerProcess
+ name: 'Sound Player (', ActiveSounds size asString, ')';
+ priority: Processor userInterruptPriority;
+ resume!
- PlayerProcess priority: Processor userInterruptPriority.
- PlayerProcess resume!