[squeakland] Question about Audio Buffer/Timing

Jeremy Landry hakyoku at gmail.com
Sun Mar 18 19:47:30 UTC 2018


I haven't gotten the Evnvelope editor morph to work properly yet, but I'm
sure it will when *I* stop being lame (so far, I've got a 0/2 record with
squeak/etoys...so likely I'm doing something wrong here!)

On Sat, Mar 17, 2018 at 9:29 AM, karl ramberg <karlramberg at gmail.com> wrote:

> I fixed so EnvelopeEditorMorph can open without giving a error in
> http://source.squeak.org/trunk/MorphicExtras-kfr.225.mcz
>
> Best,
> Karl
>
> On Sat, Mar 17, 2018 at 2:13 PM, karl ramberg <karlramberg at gmail.com>
> wrote:
>
>> Hi,
>> ScorePlayerMorph is the class that has best support for making music.( FM
>> synthesizer)
>>
>> Try this do it:
>> | n score | n := 3.
>> score := (MIDIScore new tracks: ((1 to: n) collect: [:i | Array new]);
>> trackInfo: ((1 to: n) collect: [:i | 'Instrument' , i printString]);
>> tempoMap: nil; ticksPerQuarterNote: 96).
>> ScorePlayerMorph openOn: score title: 'empty score'
>>
>> In the opened ScorePlayerMorph click on PianoRoll.
>> Right click on the opened PianoRollScore and select 'add keyboard' in the
>> menu.
>> When you click on the opened keyboard it records to the PianoRollScore
>>
>> You can select different instuments in the ScorePlayerMorph.
>> Muting the different instruments in  ScorePlayerMorph to add/edit  the
>> PianoRollScore¨
>> Clicking on 'oboe1' you get a meny to select different FM synth premade
>> instruments.
>> The bottom of that menu give you 'edit oboe1'
>>
>> Selecting this will give you a DNU because the image does not have class
>> ScaleMorph anymore.
>> It can be found in old images and filed out. There where some licensing
>> issues and I think maybe the
>> author passed away before the class could be re licensed.
>>
>> Anyway, enjoy :-)
>>
>>
>> These tools funktion but have MANY rough edges and a lot can be done to
>> improve them.
>>
>> Best,
>> Karl
>>
>>
>> On Sat, Feb 24, 2018 at 5:56 PM, Jeremy Landry <hakyoku at gmail.com> wrote:
>>
>>> What can I do to make new music in Etoys, then?  According to FLOSS
>>> manual, there's nothing for recording...?  The purpose of the sequencer was
>>> to generate new music...this is basically the goal here...and to do so
>>> without using an a MIDI instrument (well, a physical one, anyway...a
>>> simulated one is fine!)
>>>
>>> On Sat, Feb 24, 2018 at 2:27 AM, karl ramberg <karlramberg at gmail.com>
>>> wrote:
>>>
>>>> Etoys ticking is not precise enough to do music timing.
>>>> Ticking might be offset by other task the system is doing.
>>>> You should use the ScorePlayerMorph for music.
>>>>
>>>> Best,
>>>> Karl
>>>>
>>>> On Thu, Feb 22, 2018 at 9:55 PM, Jeremy Landry <hakyoku at gmail.com>
>>>> wrote:
>>>>
>>>>> Maybe clicking the sequencer squares to look like this will make more
>>>>> sense when you play it back:
>>>>> https://imgur.com/a/ZHsaS
>>>>>
>>>>> Setting the script to tick should be obvious what the problem is: not
>>>>> only is the playback not timed at the same interval as the script
>>>>> tick-rate, but it will 'skip' sometimes and omit playback.  What you should
>>>>> hear is nonstop, fairly consistent drum smacks, like a drum roll.  Instead,
>>>>> you'll hear it roll a little, stop quickly, then start rolling again, stop
>>>>> quickly, and almost at random.  Does this help open up the problem?  It's
>>>>> not really about music here, just about timing and consistency of
>>>>> triggering sounds on a timer...sometimes they do sound off, sometimes they
>>>>> dont, sometimes they're in-time, sometimes they're not.  If you speed up
>>>>> the ticks per second, you can hear that 'invisible metronome' I mentioned
>>>>> earlier, there seems to be an 'always running' object that only looks for
>>>>> new sounds to play at a regular interval, if the trigger doesn't make that
>>>>> window, then it gets dropped seemingly...it's like it's aliasing the
>>>>> instructions or something...
>>>>>
>>>>> Hope this helps, and I appreciate you helping looking into it!
>>>>>
>>>>>
>>>>> On Thu, Feb 22, 2018 at 12:03 PM, Bob Arning <arning315 at comcast.net>
>>>>> wrote:
>>>>>
>>>>>> I'm not enough of a musician to really know if it's behaving or not.
>>>>>> These are drums, so it's not a continuous sound. When I set the script to
>>>>>> ticking, I do hear an occasional glitch that my well be due to garbage
>>>>>> collection -- it's possible that tweaking some gc parameters might reduce
>>>>>> this. Perhaps a youtube posting with the sound you are hearing would let me
>>>>>> compare it to what I'm hearing.
>>>>>>
>>>>>> On 2/22/18 2:33 PM, Jeremy Landry wrote:
>>>>>>
>>>>>> https://www.youtube.com/watch?v=_JlCCtHLHDk I forgot to post this in
>>>>>> the last message showing the more stable timing done with 'pure' squeak
>>>>>> classes/methods.
>>>>>>
>>>>>> On Thu, Feb 22, 2018 at 11:32 AM, Jeremy Landry <hakyoku at gmail.com>
>>>>>> wrote:
>>>>>>
>>>>>>> https://drive.google.com/file/d/1nJlQ4huXcKZmTm6GADl40ZrWAEd
>>>>>>> 7Kv97/view?usp=sharing
>>>>>>>
>>>>>>> This is a demo of the problem for ETOYS 5 (along with some other
>>>>>>> stuff there that shows what I've looked into, to some degree).  Hitting
>>>>>>> play on the scriptor, you will hear a sequence that has awful timing.  I
>>>>>>> don't expect 'sample perfect', zero latency or anything spectacular, but it
>>>>>>> would seem that if there's timers in the system, everything should adhere
>>>>>>> to it, or else not be called timers and something like,
>>>>>>> 'when-we-get-around-to-its'.  This video here demonstrates that Squeak, at
>>>>>>> least, can do timing just fine and older versions have midi demos, but
>>>>>>> again, I'm using Etoys for a specific reason, so it's confusing me as to
>>>>>>> why the delays happen...
>>>>>>>
>>>>>>> Both sequencers are mouse interactive and playing with the script
>>>>>>> timer and setting blocks on/off can reveal this hidden metronome...maybe
>>>>>>> that IS the buffer?  I'm not sure...what's most puzzling is that sometimes
>>>>>>> it will sound right, and sometimes it won't...even if it wasn't correct,
>>>>>>> I'd probably be okay if it was consistently incorrect because I can
>>>>>>> actually work with consistency, so I guess if nothing else, that's what I'm
>>>>>>> trying to figure out how to get without making tile usage unavailable for a
>>>>>>> sequencer built on etoys tiles...
>>>>>>>
>>>>>>> Thanks for all the efforts so far...I did notice some changing in
>>>>>>> the timing when I checked the preference there but also unchecked the
>>>>>>> preference of stopSoundsWhenDone, just in case it was hiccuping by shutting
>>>>>>> down the sound stream then making a new one.  It didn't help, but I had
>>>>>>> forgotten about these preferences.
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On Thu, Feb 22, 2018 at 10:57 AM, Bob Arning <arning315 at comcast.net>
>>>>>>> wrote:
>>>>>>>
>>>>>>>> There do seem to be some platform issues as to whether this will
>>>>>>>> really work. Some things you could do:
>>>>>>>>
>>>>>>>> - check the value of the Preference for #soundQuickStart -- make it
>>>>>>>> true if not already
>>>>>>>>
>>>>>>>> - put some code into the SoundPlayer method to tell you if
>>>>>>>> quickStart is being requested and if not honored, why
>>>>>>>>
>>>>>>>> On 2/22/18 1:22 PM, Jeremy Landry wrote:
>>>>>>>>
>>>>>>>> Thanks for the crossover.  I am subscribed, but generally shy away
>>>>>>>> from posting there as it seems out of my league and my main interest is in
>>>>>>>> Etoys since, well, again, leagues and all that.  I know just enough ST to
>>>>>>>> break things, not build them!  :)
>>>>>>>>
>>>>>>>> So using the code from this message from Bob Arning:
>>>>>>>> *Bob Arning* arning315 at comcast.net
>>>>>>>> <squeak-dev%40lists.squeakfoundation.org?Subject=Re%3A%20%5Bsqueak-dev%5D%20%5Bsqueakland%5D%20Question%20about%20Audio%20Buffer/Timing&In-Reply-To=%3C269cdd30-7c77-6cab-22aa-591eee543b21%40comcast.net%3E>
>>>>>>>> *Thu Feb 22 15:49:07 UTC 2018*
>>>>>>>>
>>>>>>>>    - Previous message: [squeak-dev] [squeakland] Question about
>>>>>>>>    Audio Buffer/Timing
>>>>>>>>    <http://lists.squeakfoundation.org/pipermail/squeak-dev/2018-February/197505.html>
>>>>>>>>    - Next message: [squeak-dev] [squeakland] Question about Audio
>>>>>>>>    Buffer/Timing
>>>>>>>>    <http://lists.squeakfoundation.org/pipermail/squeak-dev/2018-February/197509.html>
>>>>>>>>    - *Messages sorted by:* [ date ]
>>>>>>>>    <http://lists.squeakfoundation.org/pipermail/squeak-dev/2018-February/date.html#197508>
>>>>>>>>     [ thread ]
>>>>>>>>    <http://lists.squeakfoundation.org/pipermail/squeak-dev/2018-February/thread.html#197508>
>>>>>>>>     [ subject ]
>>>>>>>>    <http://lists.squeakfoundation.org/pipermail/squeak-dev/2018-February/subject.html#197508>
>>>>>>>>     [ author ]
>>>>>>>>    <http://lists.squeakfoundation.org/pipermail/squeak-dev/2018-February/author.html#197508>
>>>>>>>>
>>>>>>>> ------------------------------
>>>>>>>>
>>>>>>>> SoundPlayer class gives a clue:
>>>>>>>>
>>>>>>>> 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."
>>>>>>>>
>>>>>>>>
>>>>>>>> Just looking at it and taking a guess, it doesn't seem to be
>>>>>>>> *quite* the thing I was looking for.  I was thinking there's a method/class
>>>>>>>> variable with a value that could be changed to affect the system, rather
>>>>>>>> than 'poking in' every thing I want to play when I want to play it
>>>>>>>> individually because the ultimate effect is that Etoys PLAYSOUND:SOUND tile
>>>>>>>> will work as normal and this seems that it would have to be used instead of
>>>>>>>> the tiles...I have no idea if this is possible, but I'll also dig around
>>>>>>>> the class browser in Etoys, maybe I'll stumble into something, but so far,
>>>>>>>> as I noted, I only found the sound-buffer and sample rates, not the imposed
>>>>>>>> delay method that I remember reading about.  I remember the reasoning it
>>>>>>>> was put in was to prevent accidental playing of sounds inside of a
>>>>>>>> single-frame repeat-tile...i.e. a repeat tile with any value other than 1
>>>>>>>> and inside of it having a playsound:sound tile would overload the speakers
>>>>>>>> and make nasty noises because so many things are playing on top of each
>>>>>>>> other. I actually WANT this.  Based on how sound plays now, you can hear an
>>>>>>>> 'invisible' metronome that makes sure all sounds are separated and equally
>>>>>>>> spaced apart and in the case of repeat tiles, only seems to accept the last
>>>>>>>> sound as valid/playable.
>>>>>>>>
>>>>>>>> Thanks for the help so far!  I'm not expecting a solution because I
>>>>>>>> don't know if one exists, but my thought is 'if it was done, it can be
>>>>>>>> undone'...and just looking at how to undo it!  :p
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> On Thu, Feb 22, 2018 at 9:59 AM, David T. Lewis <
>>>>>>>> lewis at mail.msen.com> wrote:
>>>>>>>>
>>>>>>>>> There is some follow up discussion happening on the squeak-dev
>>>>>>>>> list. I don't
>>>>>>>>> know if it helps, but you can read the posts here if you are not
>>>>>>>>> subscribed to
>>>>>>>>> that list:
>>>>>>>>>
>>>>>>>>> http://lists.squeakfoundation.org/pipermail/squeak-dev/2018-
>>>>>>>>> February/197508.html
>>>>>>>>>
>>>>>>>>> HTH,
>>>>>>>>> Dave
>>>>>>>>>
>>>>>>>>> On Thu, Feb 22, 2018 at 10:27:18AM -0500, David T. Lewis wrote:
>>>>>>>>> > Hi Jeremy,
>>>>>>>>> >
>>>>>>>>> > I am copying this to the squeak-dev list in case someone there
>>>>>>>>> can offer
>>>>>>>>> > some guidance.
>>>>>>>>> >
>>>>>>>>> > Dave
>>>>>>>>> >
>>>>>>>>> >
>>>>>>>>> > On Wed, Feb 21, 2018 at 02:44:21PM -0800, Jeremy Landry wrote:
>>>>>>>>> > > Hi, I made a quick audio sequencer test in Etoys and found
>>>>>>>>> that there's a
>>>>>>>>> > > hidden 'timer' that limits the responsiveness of new sounds
>>>>>>>>> that go into
>>>>>>>>> > > the playback buffer (terminology isn't accurate, but hopefully
>>>>>>>>> it makes
>>>>>>>>> > > sense to people).
>>>>>>>>> > >
>>>>>>>>> > > I found the sound buffer setting, but was wondering if there's
>>>>>>>>> something
>>>>>>>>> > > else that limits how fast new sounds get added to the playback
>>>>>>>>> stream? I
>>>>>>>>> > > read somewhere (old-man-aphasia here) that some code was added
>>>>>>>>> to prevent
>>>>>>>>> > > overloading the buffer so surely there's a snippet of code I
>>>>>>>>> could add to a
>>>>>>>>> > > project to reverse this, if it's what is causing the delay?
>>>>>>>>> > >
>>>>>>>>> > > Thanks for any help finding the solution.
>>>>>>>>> >
>>>>>>>>> > > _______________________________________________
>>>>>>>>> > > squeakland mailing list
>>>>>>>>> > > squeakland at lists.squeakland.org
>>>>>>>>> > > http://lists.squeakland.org/mailman/listinfo/squeakland
>>>>>>>>> >
>>>>>>>>> > _______________________________________________
>>>>>>>>> > squeakland mailing list
>>>>>>>>> > squeakland at lists.squeakland.org
>>>>>>>>> > http://lists.squeakland.org/mailman/listinfo/squeakland
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> squeakland mailing listsqueakland at lists.squeakland.orghttp://lists.squeakland.org/mailman/listinfo/squeakland
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> squeakland mailing list
>>>>>>>> squeakland at lists.squeakland.org
>>>>>>>> http://lists.squeakland.org/mailman/listinfo/squeakland
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> squeakland mailing list
>>>>> squeakland at lists.squeakland.org
>>>>> http://lists.squeakland.org/mailman/listinfo/squeakland
>>>>>
>>>>>
>>>>
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakland.org/pipermail/squeakland/attachments/20180318/9cd9265c/attachment-0001.html>


More information about the squeakland mailing list