# TB2-Alpha07 is here

**URL:** <https://discourse.flucoma.org/t/tb2-alpha07-is-here/724>\
**Category:** Pre-Release Toolbox2 Code Sharing\
**Created:** [December 22, 2020, 8:50pm UTC](https://discourse.flucoma.org/t/tb2-alpha07-is-here/724 "2020-12-22T20:50:47Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![tremblap](https://discourse.flucoma.org/user_avatar/discourse.flucoma.org/tremblap/32/5_2.png) [@tremblap](https://discourse.flucoma.org/u/tremblap)\
**Post date:** [December 22, 2020, 8:50pm UTC](https://discourse.flucoma.org/t/tb2-alpha07-is-here/724/1 "2020-12-22T20:50:48Z")

</div>

OK this is both major (refactor and few new tools and speed and bug fixes) and minor (not many breaking changes)… and sooooo much work on our side 🙂

[https://huddersfield.box.com/s/o1rozqmmzlfdskq58eyz69e2qs685kc8](https://huddersfield.box.com/s/o1rozqmmzlfdskq58eyz69e2qs685kc8)

I hope you enjoy it. I might post my massive parallel patch tomorrow but now, it is time to celebrate. Mac only for now, sorry…

===  
Alpha07

Improvements:

- KDTree is much faster
- AudioTransport is more accurate

New:

- new UMAP dim redux
- new RobustScaler

Breaking changes:

- Max: native support of dictionaries (removing the need for dict.(de)serialise~)
- Max: behaviour of read and write are like native objects (brings menu if no path provided)
- SC: a new sync dance. Please see below for details:

Non-breaking changes:

- SC: no more name to DataSet and LabelSet

Many, many bug fixes, including crashing NMFMorph

> SC: new non-realtime framework for improved performance and reliability, as well as fewer surprises. In some cases this means that previous behaviour with respect to server.sync is changed but the public interface remains almost unchanged. In particular  
> – calls to process (the non-blocking versions) in a Routine no longer block in the language. Where this behaviour is needed, there is a new .wait method that can be called on the object instance returned from process(), i.e.
> 
> Routine{  
> FluidBufWhatever.process(…).wait;  
> }
> 
> Produces the equivalent of the old behaviour.
> 
> – For the second toolbox objects with realtime querying (KDTree etc), you no longer need to communicate via a bus. Instead, a UGen can be obtained directly from the object instance and used in a Synth, like ~[tree.kr](http://tree.kr/)(…). See the updated help files for examples.

---

<div class="post-metadata">

**Author:** ![tedmoore](https://discourse.flucoma.org/user_avatar/discourse.flucoma.org/tedmoore/32/439_2.png) [@tedmoore](https://discourse.flucoma.org/u/tedmoore)\
**Post date:** [December 26, 2020, 11:54pm UTC](https://discourse.flucoma.org/t/tb2-alpha07-is-here/724/2 "2020-12-26T23:54:40Z")

</div>

Thank you! Excited to play with this. I just put it in my extensions and got this error on recompiling the class library:

`ERROR: No UGen class found for FluidBufFlattenTrigger`

I have a SynthDef that uses `FluidBufFlatten.kr` that gets written with `.writeDefFile` when the library re-compiles, so this is likely what is throwing the error, but not sure how to get around it. This error didn’t happen with Alpha 06. Thoughts?

Thank you !

T

---

<div class="post-metadata">

**Author:** ![balintlaczko](https://discourse.flucoma.org/user_avatar/discourse.flucoma.org/balintlaczko/32/1184_2.png) [@balintlaczko](https://discourse.flucoma.org/u/balintlaczko)\
**Post date:** [December 27, 2020, 2:14pm UTC](https://discourse.flucoma.org/t/tb2-alpha07-is-here/724/3 "2020-12-27T14:14:02Z")

</div>

Yaaaaaaaaay!!! Congratulations!  
Looking forward to the Windows build. :))

---

<div class="post-metadata">

**Author:** ![weefuzzy](https://discourse.flucoma.org/user_avatar/discourse.flucoma.org/weefuzzy/32/362_2.png) [@weefuzzy](https://discourse.flucoma.org/u/weefuzzy)\
**Post date:** [December 27, 2020, 4:22pm UTC](https://discourse.flucoma.org/t/tb2-alpha07-is-here/724/4 "2020-12-27T16:22:34Z")

</div>

Possibly SC is caching the old binaries (it sometimes likes to, just to keep us on our toes). Did you try rebooting the interpreter / IDE ?

---

<div class="post-metadata">

**Author:** ![weefuzzy](https://discourse.flucoma.org/user_avatar/discourse.flucoma.org/weefuzzy/32/362_2.png) [@weefuzzy](https://discourse.flucoma.org/u/weefuzzy)\
**Post date:** [December 27, 2020, 4:24pm UTC](https://discourse.flucoma.org/t/tb2-alpha07-is-here/724/5 "2020-12-27T16:24:30Z")

</div>

Just as soon as me and MSVC linker come to an agreement 😆

I don’t think there’s a particular obstacle to the Max Windows build, actually (famous last words), so if the SC doesn’t start playing nicely next time I look at it, I’ll push Max out anyway.

---

<div class="post-metadata">

**Author:** ![tedmoore](https://discourse.flucoma.org/user_avatar/discourse.flucoma.org/tedmoore/32/439_2.png) [@tedmoore](https://discourse.flucoma.org/u/tedmoore)\
**Post date:** [December 27, 2020, 5:43pm UTC](https://discourse.flucoma.org/t/tb2-alpha07-is-here/724/6 "2020-12-27T17:43:24Z")

</div>

Thanks for a quick reply @weefuzzy ! Yup, rebooted all the things.

In an effort to troubleshoot just now, I replaced the Alpha 07 FluidBufFlatten.sc and FluidBufFlatten.scx with the eponymous files from Alpha 06 and I’m no longer getting that error… and after some (minimal) testing it all seems to be working fine.  
_shrug emoji_

---

<div class="post-metadata">

**Author:** ![weefuzzy](https://discourse.flucoma.org/user_avatar/discourse.flucoma.org/weefuzzy/32/362_2.png) [@weefuzzy](https://discourse.flucoma.org/u/weefuzzy)\
**Post date:** [December 27, 2020, 6:22pm UTC](https://discourse.flucoma.org/t/tb2-alpha07-is-here/724/7 "2020-12-27T18:22:27Z")

</div>

But no issues with other `FluidBuf*` objects in `kr`? The alpha 6 and 7 versions are pretty radically different, but I guess (in principle) because it’s standalone, subbing in the earlier version shouldn’t cause widespread weirdness.

Looking at the error message again, I misinterpreted it to mean that scsynth couldn’t find a plugin with the right name, but actually:

> [@tedmoore](#):
>
> ERROR: No UGen class found for FluidBufFlattenTrigger

is completely a language side thing. i.e. _something_ must be trying to directly invoke a UGen in a SynthDef that resolves to `FluidBufFlattenTrigger` (which, indeed, isn’t a language-side entity).

So: chances are the binaries are ok. Can you share your SynthDef code and we’ll see if we can work out what I’ve done wrong…

---

<div class="post-metadata">

**Author:** ![tedmoore](https://discourse.flucoma.org/user_avatar/discourse.flucoma.org/tedmoore/32/439_2.png) [@tedmoore](https://discourse.flucoma.org/u/tedmoore)\
**Post date:** [December 27, 2020, 6:41pm UTC](https://discourse.flucoma.org/t/tb2-alpha07-is-here/724/8 "2020-12-27T18:41:01Z")

</div>

> [@weefuzzy](#):
>
> But no issues with other `FluidBuf*` objects in `kr`?

Hmm. Just tested this quickly, and I feel like it should work but when I try to plot the features, I get `WARNING: Buffer not allocated, can't plot data`. Am I just confused here or is this possibly tied up in it too?

```auto
b = Buffer.read(s,"/Volumes/Ted's 10TB My Book (June 2020)/SOUND DESIGNS/shoe squeak/bounces/shoe squeak.wav");
f = Buffer.new(s);

{
	FluidBufMFCC.kr(b,0,s.sampleRate,features:f,trig:Impulse.kr(1));
}.play;

f.plot;

```

//====================================

> [@weefuzzy](#):
>
> Can you share your SynthDef code and we’ll see if we can work out what I’ve done wrong…

Sorry, it’s just kind of without comment here, but let me know if this is helpful or if you need more!

```auto
			SynthDef(\fmnn_analysis1,{
				arg inBus, analysis_scaler_inBuf,analysis_scaler_inBus, input_buf0, amp_bus, trig_rate = 25;
				var sig = Mix(In.ar(inBus,4)) * 0.25;
				//var sig = PlayBuf.ar(1,test_buf,loop:1);
				var spec = FluidSpectralShape.kr(sig);
				var pitch = FluidPitch.kr(sig);
				var loudness = FluidLoudness.kr(sig);
				var zc = A2K.kr(ZeroCrossing.ar(sig));
				var senseDis = SensoryDissonance.kr(FFT(LocalBuf(2048),sig));
				var trig = Impulse.kr(trig_rate);
				var vector = spec ++ pitch ++ loudness ++ [zc,senseDis];
				var t1;
				Out.kr(amp_bus,DelayN.kr(Amplitude.kr(sig),trig_rate.reciprocal,trig_rate.reciprocal));

				vector = Median.kr(31,vector);

				//vector.poll(label:"analysis");

				RecordBuf.kr(vector,input_buf0);

				t1 = FluidBufFlatten.kr(input_buf0,analysis_scaler_inBuf,trig:trig);
				//t1.poll(label:"t1");
				Out.kr(analysis_scaler_inBus,t1);
			}).writeDefFile;

```

---

<div class="post-metadata">

**Author:** ![weefuzzy](https://discourse.flucoma.org/user_avatar/discourse.flucoma.org/weefuzzy/32/362_2.png) [@weefuzzy](https://discourse.flucoma.org/u/weefuzzy)\
**Post date:** [December 27, 2020, 6:45pm UTC](https://discourse.flucoma.org/t/tb2-alpha07-is-here/724/9 "2020-12-27T18:45:09Z")

</div>

Uh. Also 😬😬  
Line 11 of `FluidBufCompose.sc` has a bit of a clanger. It should say `\FluidBufComposeTrigger` not `\FluidBufNMFTrigger` 😭

Meanwhile, thanks for the code. Will prod and get back asap

---

<div class="post-metadata">

**Author:** ![weefuzzy](https://discourse.flucoma.org/user_avatar/discourse.flucoma.org/weefuzzy/32/362_2.png) [@weefuzzy](https://discourse.flucoma.org/u/weefuzzy)\
**Post date:** [December 27, 2020, 6:56pm UTC](https://discourse.flucoma.org/t/tb2-alpha07-is-here/724/10 "2020-12-27T18:56:54Z")

</div>

> [@tedmoore](#):
>
> Hmm. Just tested this quickly, and I feel like it should work but when I try to plot the features, I get `WARNING: Buffer not allocated, can't plot data`. Am I just confused here or is this possibly tied up in it too?

For this one, you just need to call `updateInfo` or `query` on `f` before plotting, because the `kr` versions of the `FluidBuf*` things don’t (can’t?) get the language to do this automagically.

---

<div class="post-metadata">

**Author:** ![weefuzzy](https://discourse.flucoma.org/user_avatar/discourse.flucoma.org/weefuzzy/32/362_2.png) [@weefuzzy](https://discourse.flucoma.org/u/weefuzzy)\
**Post date:** [December 27, 2020, 7:12pm UTC](https://discourse.flucoma.org/t/tb2-alpha07-is-here/724/11 "2020-12-27T19:12:57Z")

</div>

> [@tedmoore](#):
>
> `.writeDefFile;`

Looks like magic that happens with `writeDefFile` isn’t the same as (say) with `Function#play` or, uh, anything else we tested. I’ll drill into and see if I can figure it out.

(It looks like writeDefFile actually cares if there’s a language side class for a given server-synth name, which nothing else seems to mind about.)

---

<div class="post-metadata">

**Author:** ![tremblap](https://discourse.flucoma.org/user_avatar/discourse.flucoma.org/tremblap/32/5_2.png) [@tremblap](https://discourse.flucoma.org/u/tremblap)\
**Post date:** [December 28, 2020, 10:14am UTC](https://discourse.flucoma.org/t/tb2-alpha07-is-here/724/12 "2020-12-28T10:14:17Z")

</div>

> [@weefuzzy](#):
>
> like magic that happens with `writeDefFile` isn’t the same as (say) with `Function#play`

I thought that we tested that - in the helpfile of bufnmf there are synths that are too big and are sent that way, but now that I look at them, they do not include our code, just the resulting buffers…

---

<div class="post-metadata">

**Author:** ![weefuzzy](https://discourse.flucoma.org/user_avatar/discourse.flucoma.org/weefuzzy/32/362_2.png) [@weefuzzy](https://discourse.flucoma.org/u/weefuzzy)\
**Post date:** [December 28, 2020, 11:53pm UTC](https://discourse.flucoma.org/t/tb2-alpha07-is-here/724/13 "2020-12-28T23:53:44Z")

</div>

`baboon junking laptop dot gif`

> [@weefuzzy](#):
>
> Looks like magic that happens with `writeDefFile`

Not `writeDefFile` but `SynthDesc#readUGenSpec2`. Turns out I was horribly wrong about strict symmetry between SC UGen class names and scsynth Unit names being convention rather than necessary. In order to make a usable `Synth` from a `SynthDef`, the latter has to be read by the language as well as the server (so that it can make name-able controls, I guess). The code that does the reading straight up assumes that the symbol in the `SynthDef` file will map to a class.

😭😭😭

I don’t like either of my options for fixing this, so will have to have a small tantrum (quietly), before working out what to do. (The options being either (a) make, by hand\*, gazillons of pointlessly identical UGen classes in sclang differentiated only by their name or (b) keep doing what I’m doing language side and implement my own lookup (in addition to scsynth’s) to get the right `Unit` for a given symbol.

- Unless there’s actually a way of programatically generating classes that I’ve missed. This would make me happy.

---

<div class="post-metadata">

**Author:** ![tedmoore](https://discourse.flucoma.org/user_avatar/discourse.flucoma.org/tedmoore/32/439_2.png) [@tedmoore](https://discourse.flucoma.org/u/tedmoore)\
**Post date:** [January 20, 2021, 4:09pm UTC](https://discourse.flucoma.org/t/tb2-alpha07-is-here/724/14 "2021-01-20T16:09:27Z")

</div>

I got this error again, when I was trying to make a synth (just a `function.play`, not a `SynthDef()`) that was _too_ big, so SC wanted to write it to a file (I’m guessing same as `.writeDefFile`).

I think it’s probably the same thing but just thought I’d toss it on here in case that’s useful!

Thanks!

```auto
WARNING: SynthDef temp__4 too big for sending. Retrying via synthdef file
ERROR: No UGen class found for FluidMLPRegressor/query which was specified in synth def file: temp__4.scsyndef

```

---

<div class="post-metadata">

**Author:** ![weefuzzy](https://discourse.flucoma.org/user_avatar/discourse.flucoma.org/weefuzzy/32/362_2.png) [@weefuzzy](https://discourse.flucoma.org/u/weefuzzy)\
**Post date:** [January 20, 2021, 4:14pm UTC](https://discourse.flucoma.org/t/tb2-alpha07-is-here/724/15 "2021-01-20T16:14:30Z")

</div>

Did you try Alpha08 yet? This shouldn’t be A Thing anymore. (can’t help with the size of the Synth though 😜)

---

<div class="post-metadata">

**Author:** ![tedmoore](https://discourse.flucoma.org/user_avatar/discourse.flucoma.org/tedmoore/32/439_2.png) [@tedmoore](https://discourse.flucoma.org/u/tedmoore)\
**Post date:** [January 20, 2021, 4:15pm UTC](https://discourse.flucoma.org/t/tb2-alpha07-is-here/724/16 "2021-01-20T16:15:29Z")

</div>

Oh thank you! I have not! Where is that?

---

<div class="post-metadata">

**Author:** ![weefuzzy](https://discourse.flucoma.org/user_avatar/discourse.flucoma.org/weefuzzy/32/362_2.png) [@weefuzzy](https://discourse.flucoma.org/u/weefuzzy)\
**Post date:** [January 20, 2021, 4:34pm UTC](https://discourse.flucoma.org/t/tb2-alpha07-is-here/724/17 "2021-01-20T16:34:39Z")

</div>

It is here:

> [@New Version Alpha08 for Max and SC: available for Mac and Win and Linux](https://discourse.flucoma.org/t/mac-win-linux-alpha08-for-max-and-sc/748):
>
> For people on Linux SC and Win SC or Max this is big, you can see the [Alpha07](https://discourse.flucoma.org/t/tb2-alpha07-is-here/724) announce to give you the motivation to move up - it is 2 steps forward. For the people on Mac, it is subtle but still very good. Less bug is better, right? if you are on MacOS 10.9 to 10.14 you will also need to download recompiled externals [https://huddersfield.box.com/s/rc23zxl4inv3oo2duixhbhedhn5n9uy9](https://huddersfield.box.com/s/rc23zxl4inv3oo2duixhbhedhn5n9uy9) Enjoy! FluidCorpusManipulation Toolbox 2 Alpha 08 Bugs fixed: Compilation for Windows and Linux Realtime mem…

---

<div class="post-metadata">

**Author:** ![tremblap](https://discourse.flucoma.org/user_avatar/discourse.flucoma.org/tremblap/32/5_2.png) [@tremblap](https://discourse.flucoma.org/u/tremblap)\
**Post date:** [January 20, 2021, 5:18pm UTC](https://discourse.flucoma.org/t/tb2-alpha07-is-here/724/18 "2021-01-20T17:18:34Z")

</div>

wasn’t my post obvious enough? I’ll change its title for @tedmoore 😃

---

<div class="post-metadata">

**Author:** ![tedmoore](https://discourse.flucoma.org/user_avatar/discourse.flucoma.org/tedmoore/32/439_2.png) [@tedmoore](https://discourse.flucoma.org/u/tedmoore)\
**Post date:** [January 21, 2021, 10:33am UTC](https://discourse.flucoma.org/t/tb2-alpha07-is-here/724/19 "2021-01-21T10:33:32Z")

</div>

Oh I think your post was plenty clear, but if you’re thinking about changing titles just for me, maybe you could change it to something like, “Hey Ted, here’s the thing you’re looking for”. That’s be great. Thanks.

---

<div class="post-metadata">

**Author:** ![tremblap](https://discourse.flucoma.org/user_avatar/discourse.flucoma.org/tremblap/32/5_2.png) [@tremblap](https://discourse.flucoma.org/u/tremblap)\
**Post date:** [January 21, 2021, 11:32am UTC](https://discourse.flucoma.org/t/tb2-alpha07-is-here/724/20 "2021-01-21T11:32:09Z")

</div>

I tried to make this work:

`<blink>Ted-Interest-Alert</blink>`

but it doesn’t. Then I remembered something long ago as being bad practice… and then it got cancelled it seems:

> **[: The Blinking Text element (obsolete) - HTML: HyperText Markup Language | MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/blink)**
