[squeakland] Question about Audio Buffer/Timing

karl ramberg karlramberg at gmail.com
Sat Mar 17 16:29:18 UTC 2018


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/20180317/9575bbb3/attachment-0001.html>


More information about the squeakland mailing list