BOSS 980000 ÀÂãã´SoundCollectionPointfºobjectRepresented:location:lastViewRectangle:lastIconSize:ÀÂãã¯SoundCollectiona¬name:sounds:“SoundCollection4248ÀÂãä±OrderedCollectionab€aÀÂããªSoundPointa»objectRepresented:location:ÀÀÂãã´AbstractedSoundClassuµname:structureSound:icon:smallIcon:useFancyIcon:parameterSpecifications:classDescription:shouldExpandFirst:ioProfile:•SMF note envelope 1.3ÀÂããªAnnotation{°name:input:text:’SMF pitch envelopeÀÂãã¦MusicNo±name:inputs:script:left:right:retrograde:reverse:†LibEnvÀ*aÀÂãã­ConstantSoundn«name:value:ˆEnvelopeç?Channel - 1 of: ?EnvArray ÀÂãã®KymaCodeString p°string:bindings:‘| envFromSMF envArrayFromSMF | envFromSMF := [ :smf :channel | | seq beatstream timepoints timepointsArray values valuesArray notes minpitch maxpitch beats | seq := TimedEventCollection timesAndEventsFromMIDIFile: smf channel: channel. minpitch := ?Min. maxpitch := ?Max. beats := 0. beatstream := seq startingBeats readStream. seq events do: [ :note | | p | beats := beatstream next + note duration. p := note pitch nn removeUnits. (p < minpitch) ifTrue: [ minpitch := p ]. (p > maxpitch) ifTrue: [ maxpitch := p ]]. beats := beats ceiling. beatstream := seq startingBeats readStream. timepoints := OrderedCollection new. values := OrderedCollection new. notes := 0. seq events do: [ :note | | b p | b := beatstream next. timepoints add: ((b / beats) @ notes). notes := notes + 1. (maxpitch = minpitch) ifTrue: [ p := 1 ] ifFalse: [ p := note pitch nn removeUnits - minpitch / (maxpitch - minpitch) ]. values add: p. ]. timepointsArray := timepoints asArray. valuesArray := values asArray. "self debugWithLabel 'channel' value: channel." "self debugWithLabel 'beats' value: beats." "self debugWithLabel 'notes' value: notes." "self debugWithLabel 'minpitch' value: minpitch." "self debugWithLabel 'maxpitch' value: maxpitch." notes = 0 ifTrue: [ 0 ] ifFalse: [ ((?KeyDown repeatingRamp: (?BPM / beats) bpm s) into: timepointsArray) of: valuesArray ]. ]. envArrayFromSMF := [ :smf | | envs | envs := OrderedCollection new. (1 to: 16) do: [ :channel | envs add: (envFromSMF value: smf value: channel). ]. envs asArray. ]. Envelope start: 0 s EnvArray: (envArrayFromSMF value: ?EnvSMF). ÀÂãä«BindingListad€`aaää‹Anything you write in this field will be displayed in the Virtual Control Surface when you play this Sound.ÀÂãä«Depth1Imageah€ÀÂãä©ByteArraya`€`±¿€* $  ¿       „„!„@¥–@ ­–`?ÿÿà``aaÀÂãä±MonoMappedPalette rg€äÀÂãä©WordArraya`€l``````âÀÂãä¥Arraya`€ddddab`aadÀ3À7`?à 0$((<,,Ô  .¤  $ +4 4 ?üppaaÀÂãä±KymaMappedPaletteaf€äÀ?lz{z{z{ffffffâÀ#ddddfbaadäÀ#gÀÂãã¶ParameterSpecificationu¬name:typeName:viewType:rectangle:helpString:¤name33ÀÂãä©Rectangleab€ÀÂãä¥Pointab€åaaåx mÀ9aaœEnter a name for this Sound.À0§KeyDown¨hotValue¥valueÀ5À9åaaå``À9aåz m€À0§Channel !À5À9å``åy mÀ9åaaåwm€À0¦EnvSMF¬midiFileName¨fileNameÀ5À9``À9åaaåz m€À0£Min§integer!À5À9åaaåy mÀ9aåwm€À0£Max6!À5À9åaaåwmÀ9aåx m€À0£BPM !À5À9åaaåz mÀ9aåy m€žThis class has no description.ãÀÂãä®SoundIOProfileae€ab¤none¨subaudioä•SMF note envelope 1.3aaŒenvs 011.mid`dÀ9jlÀ9``À5À9} }À9urd