3-op FM synth with mod matrix
@zxcvbs Hi, yes I realise the patch is very counterintuitive, I'll do my best to try and explain what's going on. Let's forget about polyphony and consider one voice.
The PMops abstraction is the single voice, inside it are the three operators (PMop, both badly named sorry) and the tables subpatch. The basic structure of each operator could be reduced to the simple:
but the +~ object, instead of receiving the phase from a fixed modulator, it receives it from a table. Each operator has its own table, so operator 1 receives the phase from tabreceive~ $0-phase1 which is connected to +~.
At the same time (to populate those tables), the output from cos~ of each operator is sent to all tables, how much of the signal goes to each is decided in the modulation matrix.
The reason I decided for this arrangement is because this way each operator can send its phase to any operator, including itself (feedback). As explained in the first post, feedback has to be done with the operator working at block~ 1 in order to sound good, but if an operator receives the feedback every sample (block~ 1) but to that you add the phase of the other modulators every 64 samples (the default block size), the result sounds bad. This is the reason I used this mess of tables, to have an FM-8 style modulation matrix.
If you want to implement hard-coded algorithms, the same thing can be done without tables, patching each algorithm in its own abstraction or subpatch and switch between them as @whale-av suggested in your thread. Plus I see none of your algorithms have feedback, so they don't even need to run at block~ 1, and therefore the approach with tables is really not necessary.
Hope this clarifies things a bit.
Kraken a low-cpu, compact, highly versatile guitar effects stompbox
Kraken a low-cpu, compact, highly versatile guitar effects stompbox
Intent:
Make a guitar effects rack that would
- do a lot (includes 8000 pedal combinations)
- cost very little cpu; and
- eliminate the need to "connect" effects abstractions
(Master-Kraken-help.pd is the main patch.)
The Stack (in this order):
eq3
pre (gain)
3 effect/pedal slots (with clean-dirty "bypass" toggle for the whole set)
with each slot containing
a (tof) menu to select from 21 effects (0 being raw)
3 parameters (mknobs)
a dry-wet slider
a bypass toggle (for that line which crossfades in and out (set by the crossfade control, in ms)
and
an infinite sustain toggle (for that line)
reverb (with brightness and roomsize control and off|on toggle)
compressor (with threshold, limit, ratio, attack, release (zexy~))
master out level.
Kraken also includes:
a simple recorder (record and play (loop) toggles and recording the entire result)
a popup (standard tuning) guitar tuner
an [ adc~ | sample ] (a|s) switch (to test the sound or even post-process a track/file using openpanel)
and
a presets control which loads or saves the current settings (for the entire rack and includes a date+time prefix as well as an entered name for each preset).
Additional Info:
OpenSoundControl (OSC) has been exposed for a future/additional post ("Kraken-OSC") which I have almost finished in Mobmuplat (only, for now, PdParty and others to be added later) and can be accessed via the send and receive to network abstractions inside the patch.
**
EFFECTS LIST:
00-raw
01-chorus
02-compressor
03-delay(3-tap)
04-delay(fb)
05-delay(spectr)
06-distortion
07-filter
08-flanger
09-fuzz
10-looper(fw-bw) (>0.5 on, <0.5 off to record, play forward, or play backward)
11-octave_harmonizer
12-overdrive
13-phaser
14-pitchshifter
15-reverb
16-step-vibrato
17-tremolo
18-vcf
19-vibrato
20-wah-wah
Dependencies:
(which I believe are all available in Deken)
zexy
cyclone
moonlib
iemlib
ggee
plus zexy~ "load on startup"
Credits/Thanks/Acknowledgements:
As I think with most pure data patches Kraken is built on the back of lots of other people's hardwork and diligent effort. In particular, it owes its effects to predominantly the DYI2 library (by Hardoff), the Stamp Album library (by Balwyn), those on the Guitar Extended website (by Pierre), and less so to a few others. And to all of them, I am deeply thankful.
Tally-Ho! Happy playing.
I am very thankful to finally "Release the Kraken!". I hope it may bring you many hours of pleasure, entertainment, and possibly education.
p.s. if you see some of your work inside this, DO please let me know and I will credit you more specifically.
Thanks again. Feel free to ask any questions you may like regarding using the tool, the abstractions, etc., and I will respond to them as soon as I am able. -Peace
[pak ] / [unpak ] - lazy pack/unpack objects with 'anything' inlets/outlets
Similar to [pack ] and [unpack ] but instead of the default atom type being a float, the default type is anything.
Also comes with a new creation arg 'a' for anything. Numbers and unrecognized types will also default to anything.
For strict type checking, use f(loat), s(ymbol), and p(ointer).
The pak object will also store unrecognized types as symbols and interpret 'b' as a 'bang' symbol.
You can send lists to any of the additional pak inlets and it will store the list values with the inlet as the starting point. For example, sending the message [foo bar 3 baz( to the 2nd inlet of [pak 1 2 3 4] would result in the list: 1 foo bar 3
The example includes another object called [x ], which is a kind of trigger object that dehusks lists that consist of only 1 element when you use 'a' or nothing for creation args. For pd-vanilla users, the example also requires zexy's [demux].
You can also use "." to skip inlets and assign only specific ones.
For example, sending the message [. . 123( would assign 123 to the 3rd inlet and leave the first two values the same as they were. You can send these messages to any inlet.
The skip arg feature only applies to list and anything type messages, so if you really want to, you can still assign a single period to an inlet by sending it as a symbol.
There are two more objects [@pak] / [@unpak] - reverse pak/unpak, which output the lists in reverse order.
Strict-type error messages are muted by default and to unmute them, you need to send [mute 0( to the 1st inlet. The number sent to mute acts as a bit mask for the inlets, so when a bit is turned on, the associated inlet will output error messages.
[is ] - atom type checker
Returns a boolean 1 or 0 if the value sent to the 1st inlet matches the type specified in the creation arg or 2nd inlet.
You can set the type to be matched against either as a creation argument or with the message [type $1(, or by sending to the 2nd inlet either the type name or an example of the atom whose type you want matched against.
EDIT: the "type" method needed a bug fix. The help file has also been slightly altered:
EDIT2: Now the type can be virtually anything, rather than one of 5 possible types. This allows us to check for specific messages. For example, sending the message [foo 1 2 3( to the object [is foo] will return true.
EDIT3: Defaults to float if no creation argument given. Also added a pointer example to the help file.
EDIT4: A memory-freeing method was necessary to clear the proxy inlet.
[gme~] / [gmes~] - Game Music Emu
Allows you to play various game music formats, including:
AY - ZX Spectrum/Amstrad CPC
GBS - Nintendo Game Boy
GYM - Sega Genesis/Mega Drive
HES - NEC TurboGrafx-16/PC Engine
KSS - MSX Home Computer/other Z80 systems (doesn't support FM sound)
NSF/NSFE - Nintendo NES/Famicom (with VRC 6, Namco 106, and FME-7 sound)
SAP - Atari systems using POKEY sound chip
SPC - Super Nintendo/Super Famicom
VGM/VGZ - Sega Master System/Mark III, Sega Genesis/Mega Drive,BBC Micro
The externals use the game-music-emu library, which can be found here: https://bitbucket.org/mpyne/game-music-emu/wiki/Home
[gme~] has 2 outlets for left and right audio channels, while [gmes~] is a multi-channel variant that has 16 outlets for 8 voices, times 2 for stereo.
[gmes~] only works for certain emulator types that have implemented a special class called Classic_Emu. These types include AY, GBS, HES, KSS, NSF, SAP, and sometimes VGM. You can try loading other formats into [gmes~] but most likely all you'll get is a very sped-up version of the song and the voices will not be separated into their individual channels. Under Linux, [gmes~] doesn't appear to work even for those file types.
Luckily, there's a workaround which involves creating multiple instances of [gme~] and dedicating each one to a specific voice/channel. I've included an example of how that works in the zip file.
Methods
- [ info ( - Post game and song info, and track number in the case of multi-track formats
- this currently does not include .rsn files, though I plan to make that possible in the future. Since .rsn is essentially a .rar file, you'll need to first extract the .spc's and open them individually.
- [ path ( - Post the file's full path
- [ read $1 ( - Reads the path of a file
- To get gme~ to play music, start by reading in a file, then send either a bang or a number indicating a specific track.
- [ goto $1 ( - Seeks to a time in the track in milliseconds
- Still very buggy. It works well for some formats and not so well for others. My guess is it has something to do with emulators that implement Classic_Emu.
- [ tempo $1 ( - Sets the tempo
- 0.5 is half speed, while 2 is double. It caps at 4, though I might eventually remove or increase the cap if it's safe to do so.
- [ track $1 ( - Sets the track without playing it
- sending a float to gme~ will cause that track number to start playing if a file has been loaded.
- [ mute $1 ... ( - Mutes the channels specified.
- can be either one value or a list of values.
- [ solo $1 ... ( - Mutes all channels except the ones specified.
- it toggles between solo and unmute-all if it's the same channel(s) being solo'd.
- [ mask ($1) ( - Sets the muting mask directly, or posts its current state if no argument is given.
- muting actually works by reading an integer and interpreting each bit as an on/off switch for a channel.
- -1 mutes all channels, 0 unmutes all channels, 5 would mute the 1st and 3nd channels since 5 in binary is 0101.
- [ stop ( - Stops playback.
- start playback again by sending a bang or "play" message, or a float value
- [ play | bang ( - Starts playback or pauses/unpauses when playback has already started, or restarts playback if it has been stopped.
- "play" is just an alias for bang in the event that it needs to be interpreted as its own unique message.
Creation args
Both externals optionally take a list of numbers, indicating the channels that should be played, while the rest get muted. If there are no creation arguments, all channels will play normally.
Note: included in the zip are libgme.* files. These files, depending on which OS you're running, might need to accompany the externals. In the case of Windows, libgme.dll almost definitely needs to accompany gme(s)~.dll
Also, gme can read m3u's, but not directly. When you read a file like .nsf, gme will look for a file that has the exact same name but with the extension m3u, then use that file to determine track names and in which order the tracks are to be played.
Hello everyone
People, especially kids are always restricted from playing video games. It is said that games will improve the violence, affect our health and eyes. However, you may be surprised with what researchers found out. There are endless health benefits to us, especially kids.
Games are now not just aggressive actions in action games or shooting games. Here we with a more gentle game genre that can help people relieve stress, boost the brain, etc. It is art games. Therefore, if you are wondering if art games can be beneficial or not, it’s time to explore over-expected benefits art games.
1. Promote Creativity
Creativity is one of the most significant ability for us to solve almost every single problems in our life. In art games, we will no longer have to face incredible challenges in real life such as global warming, wars, and mass extinctions. Free your soul in colouring games, room decoration, design or music games.
Art games promote creativity.
Paint your best picture with full of colours or mix the clothes of the princesses in dress-up games in your own way. It’s the way to build up the better creativity. If you want to help your kids boost their creativity, here’s top highly rated online art games for 7 to 12 year olds.
2. Support Fine Motor Skills
Now, it’s time to hold the paintbrush, draw lines and dots, mix different colours in games instead of real life. Alternatively, show your ability in decorating the most stunning room ever. These tasks will be the best way to enhance coordination and dexterity. They are fun and rewarding enough to keep gamers, especially kids coming back again and again. Especially, when kids get hooked on these art activities in games over time. Their motor skills can be improved fast. What a deal!
3. Develop Problem-solving Abilities
Art activities in games with epic graphics may give gamers endless opportunity to make choices, come to conclusion, evaluate results, and second-guessing decisions. People will feel comfortable with common uncertainty, and they will be flexible thinkers, more creative and confident people.
Games develop your problem-solving skills.
Which colour should be applied to the character? Which furniture will this house match and need? To play these games with high scores, good techniques are needed for suitable combinations and good ideas. These games are more suitable for girls than boys. So, enjoy art games for girl here!
4. Improve Vision
This game seems to be a little weird; however, some electronic gadgets such as tab, mobile, computer, etc can negatively damage your eyes with too much exposure. However, scientists show that playing games can help improve your vision. Especially, when entering colouring games, people will identify 4 colour shades well.
5. Reduces Stress
Art games are such a quick stress relief for people in depression. In these gentle games, people will quickly throw their worries away and free their mind from all disturbances once they concentrate on gaming sessions. Moreover, the heart rate will be kept at a normal level for certain games.
Reduce stress with amazing art games!
So, now, after understanding all the advantages of art games, it’s time to enjoy Coolest free online art games to play - check out now.
Need help
Lời khuyên khi mua bán đất đường Trần Phú Điện Thắng dành cho khách hàng
Mỗi khách hàng tham gia vào mua bán đất đai luôn mong muốn có lợi nhuận và làm giàu. Tuy nhiên để đảm bảo an toàn khi đầu tư, bất kỳ khách hàng nào cũng cần có kinh nghiệm cho bản thân. Từ đó mới có thể mua bán đất đai có lợi nhuận cao và dễ dàng hơn. Qua đó, khi tham gia vào bán đất đường Trần Phú Điện Thắng cần có kiến thức và kinh nghiệm. Bởi vì,mua bán đất đường Trần Phú Điện Thắng có thuận lợi nhưng vẫn tồn tại những điều bất lợi. Do vậy, mỗi khách hàng cần trang bị kiến thức đầy đủ khi quyết định đầu tư vào đất đường Trần Phú Điện Thắng. Như vậy mới có thể đảm bảo an toàn khi đầu tư cũng như có lợi nhuận hấp dẫn.
Tìm hiểu thông tin trước khi đầu tư vào bán đất đường Trần Phú Điện Thắng
Trước khi quyết định đầu tư vào mua bán đất đường Trần Phú Điện Thắng phải xem xét kỹ lưỡng. Điều này nhằm đảo bảo an toàn khi có những trường hợp mảnh đất không đúng với giấy tờ. Bên cạnh đó, còn có trường hợp giấy tờ giả và mảnh đất đó trái phép. Qua đó nhận thấy rằng, việc mua bán đất có rất nhiều trường hợp rủi ro. Vì vậy, khách hàng cần cẩn trọng trong quá trình mua bán đất đường Trần Phú Điện Thắng. Như thế mới giúp khách hàng dễ dàng đầu tư mà không gặp những bất lợi không đáng có.
Bên cạnh đó, tìm hiểu rõ tình hình thị trường tại Đất đường Trần Phú Điện Thắng. Bởi vì, đất đường Trần Phú Điện Thắng trở nên sôi nổi gần đây nên có sự cạnh tranh rất mạnh. Chính vì thế, giá đất tại đây sẽ có nhiều thay đổi, thậm chí các cò đất thổi giá khi bán đất đường Trần Phú Điện Thắng. Do đó để hạn chế khi mua đất với giá quá cao so với thị trường thì khách hàng nên suy xét kỹ càng hơn. Như vậy khách hàng có cơ hội mua bán đất đường Trần Phú Điện Thắng và không gặp rủi ro.
Bán đất đường Trần Phú Điện Thắng phải có giấy tờ pháp lý đầy đủ
Giấy tờ luôn luôn quan trọng đối với trao đổi mua bán. Đặc biệt, trong mua bán đất đường Trần Phú Điện Thắng nó luôn quan trọng hơn cả. Bởi giấy tờ đất đảm bảo khi gặp bất lợi khi mua bán đất đường Trần Phú Điện Thắng. Tuy nhiên, giấy tờ đó phải chính xác và được công chứng của chính quyền địa phương mới được xem là mảnh đất đó hợp pháp. Do đất đường Trần Phú Điện Thắng đang trở thành khu vực được nhiều nhà đầu tư lựa chọn. Chính vì điều này, sẽ có nhiều đối tượng cò đất, môi giới hoạt động trái phép và tràn lan.Vì thế, khách hàng khi mua bán đất đường Trần Phú Điện Thắng giá rẻ phải có giấy tờ pháp lý đầy đủ. Từ đó giúp khách hàng yên tâm và tránh những lừa đảo của các đối tượng cò đất trái phép.
Qua những điều trên, khách hàng phải luôn tìm hiểu kỹ thông tin đồng thời có kinh nghiệm cũng là lợi thế. Vì vậy, mỗi khách hàng hãy trang bị cho mình đầy đủ trước khi quyết định mua bán đất đường Trần Phú Điện Thắng. Như thế mới tránh những rủi ro, bất lợi bên cạnh đó có được mảnh đất mong muốn và nguồn lợi nhuận hấp dẫn.
Xem thêm tin tức về bán đất đường Trần Phú Điện Thắng giá rẻ tại: https://datdienthang.com/mua-ban-dat-dien-thang/ban-dat-duong-tran-phu-dien-thang/
what can a blender make? the best blenders are incredible kitchen appliances
Most families have a kitchen blender of certain sorts. A portion of those blenders are more remarkable than others. A few clients are more proficient than others with regards to recognizing what a blender can do. Recognizing what your blender can do can set aside you cash and enhance your cooking experience just as spare you https://goodfoodblogph.com/ time in the kitchen.
Mixed Drinks
Each child realizes that blenders are remarkably acceptable at making mixed beverages. Blenders can make milk shakes, smoothies, natural product shakes, solidified beverages, and the more remarkable blenders can make squashed ice for margaritas and daiquiris. These beverages can be made with and without liquor. Blenders are ideal for family social occasions, local gatherings or for the each morning power drink.
The blender's capacity decides how smooth your beverage will be. On the off chance that for instance you are including almonds or carrots they will be separated into a lot littler parts the more remarkable your blender is. What's more, in the event that you do like lumps in your beverage and you have an exceptionally ground-breaking blender then you simply need to decrease the mixing time. Anyway it doesn't work the reverse way around. In the event that your blender comes up short on the force it will always be unable to deliver a truly smooth mixed beverage, particularly when utilizing more strong things.
Purees, Dips, Salsas and Soups
Blenders are the ideal kitchen apparatuses with regards to making purees, plunges, salsas and soups. You can make any kind of soup you need, simply include 1 cup of cooked vegetable, some cooked boneless chicken on the off chance that you like, and a ¼ cup of water to your blender. At that point mix until it is smooth enough for you.
You can without much of a stretch mix any of the accompanying: avocado cream, guacamole, cream of mushroom/tomato, Mexican salsa, dark bean plunge, new organic product yogurt, new pesto sauce, fruit purée, and some more. Numerous sound and fun suppers and bites can without much of a stretch be made with the correct blender, frequently setting aside you time and cash all the while.
Infant Foods
Who would not like to take care of its infant new and solid food. Blenders are a simple method to make a variety of various enhanced and supporting infant nourishments. From fruit purée to carrot puree to verdant green squeezes, all can be newly made and individualized to give you 100% control of what you feed your child. This will likewise spare you a great deal of cash as well.
Pounded Spices and Fresh Grinded Coffee
Envision pounding your own new espresso each morning, or on the ends of the week. Envision the smell and the full flavor that you get from newly crushed espresso. There is then no requirement for you to stop by a coffeehouse on your approach to work and drop $4 or more dollars each time you need great new espresso. The more impressive blenders can crush espresso beans as fine as you might want them to be.
Make your own newly ground pepper from peppercorns. You can even make your own pepper mix by combining various kinds of peppercorns. Do likewise with nutmeg, cinnamon and other dried flavors. Whenever you have visitors over for supper or BBQ dazzle them by revealing to them that you made the flavor blend yourself.
Crushed/Shred Meat
Make your own burger patties from lean cut meats and set aside cash all the while. Additionally, another preferred position is that you know precisely what meat is truly in your patty. Shred cooked meats for sandwiches, e.g., chicken or pork. For this Best Blenders suggests an incredible blender.
Cleaved Vegetables
Do you scorn cleaving onions? Why not utilize your blender? You need hacked carrots as well? Not an issue, utilize your blender. Utilize a low setting or the beat highlight on your blender https://www.flickr.com/people/blenderforsmoothiesreviews/ and the activity will be done right away. It doesn't make a difference on the off chance that they are dry or wet, a decent blender will cleave them to an ideal serving size in no time flat, sparing you time and tears.
Ground Cheese
You like including ground cheddar your pasta or making new pizza or meal? At that point why not utilize newly ground cheddar? It is exceptionally easy to do - cut your cheddar into 3D squares, throw into your blender and utilize your blender's heartbeat include until you have the cheddar ground to your ideal size. Newly ground cheddar consistently tastes better!
Serving of mixed greens Dressings and Mayonnaise
Practically any blender can make serving of mixed greens dressing. Pick your dressing fixings and mix until smooth. At that point bottle it for next time or to take it to the workplace or cookout.
For mayonnaise the fundamental formula is two eggs, 1 tsp. mustard and ½ crushed lemon (whenever liked), mix at fast until foamy, at that point gradually include 1 ¼ cup cooking oil and keep on mixing at rapid until thick and rich. Spot not utilized segment into a container and store in cooler. All new and scrumptious, and everything is without additives.
Crushed Whole Grains
You like eating entire grains? What about creation entire grain flapjacks? It is without a doubt less expensive than locally acquired blends, and truly easy to do as well. Most don't know that a blender can deliver a fine powder from entire grains. The blender ought to have more force than a normal home blender for this errand.
Frozen yogurt
Make the most extravagant seasoned frozen yogurts ever with your blender. Ideal for birthday celebrations or home film evenings. Truly easy to do as well, as relatively few fixings are required. It is additionally remarkably simple to store your newly made frozen yogurt in the cooler until one week from now or the end of the week after. With a bit of testing your companions will before long be advising you to bundle your frozen yogurt and sell it. To make frozen yogurt your blender will require enough mixing capacity to have the option to deal with solidified products of the soil in the event that you decide to utilize them. The more remarkable the blender the creamier and smoother the frozen yogurt.
Additive Free Fresh Nut Butters
Make your own new nutty spread, or almond or cashew margarine. Ideal for snacks, picnics or bites. This can be a solid and reasonable choice to locally acquired items. Envision the expression on your companions faces when you disclose to them that you make it yourself. Here is the way to make new nutty spread https://gab.com/topbestblenderreviews without any preparation utilizing your blender.
First mix 2 cups of cooked peanuts and ½ tablespoon of vegetable or nut oil until it becomes glue like. At that point taste and if necessary include minuscule amounts of earthy colored sugar, nectar or salt to fit individual taste. On the off chance that you like your nut spread crunchy, include some more peanuts at the end and mix just for a couple of moments. Best Blenders suggests the more remarkable blenders for this kind of mixing.
Vanilla now 0.48 available for testing
paste power
**5.1. release notes
**
------------------ 0.48-0 ------------------------------
It's possible to save and recall "settings" to files, and/or to erase system settings. On Pcs, the settings are now stored in the "user" resource area (before, it was per-machine, and users who weren't administrators apparently couldn't save their settings.)
The expr family (expr, expr~, fexpr~) got an update from Shahrokh Yadegari. I'm not sure when this first came about, but expr now can access "variable" objects as variables inside expressions. Expressions using "if" skip evaluating the argument that isn't used.
New "fudiparse", "fudiformat" objects.
New "list store" object for faster and easier concatenation and splitting apart of lists.
New notification outlet in "text define" so the patch can know when the text is changed.
New "text insert" object.
"delwrite~" now has a "clear" message.
"declare -path" inside abstractions was changed so that, if the declaration isn't an absolute filename, it's relative to the abstraction's directory, not to the owning patch's directory. This might be considered an** incompatible change**; but since the situation with paths declared inside abstractions has always been so confused, I think nobody will have got away without editing patches that relied on it as things changed in the past.
But the biggest changes are under the hood. Pd now can manage more than one running instance, so that it is possible to make plug-ins of various sorts out of Pd and they can coexist with each other. This will allow people to write much better VST plug-ins in Pd. I'm grateful to Carlos Eduardo Batista for much help on this.
The Pd API allows starting and/or shutting down the GUI dynamically while Pd is running.
Another internal change: the pd~ object now communicates with sub-processes in binary by default. This increases the numerical accuracy of signal passing (it should be exact now) and makes the passing back and forth of audio signals much more efficient.
Thanks to much effort by Dan Wilcox and Iohannes Zmoelnig, the compile-and-build system is much improved, especially for Macintosh computers. One visible effect is that language support is finally working in the compiled versions on msp.ucsd.edu.
Cyclone library stopped suddenly loading (PD Vanilla/Windows 10)
@ilpoj It could be a widows10 update.
tcl ........ pd_guiprefs.tcl performs the read/writes through the "registry" object.
On a 64-bit system 32-bit apps write to the "VirtualStore" in the registry.
What is 64-bit and what is 32-bit in Pd and Tcl/Tk?
Maybe it's writing to one and reading from the other?
Tcl........ Tcl 8.6 recommended........
https://stackoverflow.com/questions/31432958/tcl-unable-to-read-variables-of-32-bit-registry-hierarchy-on-a-64-bit-machine
Widows........ Microsoft intend to bin VirtualStore and force app compatibility.....
...... have they just started this process?
https://msdn.microsoft.com/en-us/library/windows/desktop/aa965884(v=vs.85).aspx
Other software identical problem.......
http://knowledgebase.progress.com/articles/Article/UACvirtualisation
Pd_guiprefs.tcl on-going work....... 16 days ago.... maybe time to post a bug?
https://github.com/pure-data/pure-data/tree/master/tcl
Again..... Tcl 8.6 recommended.......
https://community.activestate.com/node/11350
and....
http://www.tcl.tk/cgi-bin/tct/tip/362.html
David.