Building a Linux Desktop
Yes and a topic that I like very much.
We're in 2020! Like I always say, we sent a spacecraft to the moon with a 2.048 MHz computer
@cheesemaster said:
-Ubuntu Studio, maybe an RME PCI card
Why RME PCI, you can find good external soundcard, I guess it depends on the computer that you will choose (more on that later). Yes I like Ubuntu Studio, good choice.
-Really only doing audio (oscillators, arrays, filtering, delays) No graphics.
Perfect, start pd with -rt -nogui
Use [pd~] only if topping 100% CPU (pd is single thread).
-Keeping the the machine quiet (low fan noise) is VERY important.
Fanless is possible, again depending on the computer you choose.
What CPU specs matter most for common audio and MIDI tasks in PD? Number of cores? Thread count? Clock speed?
Clock speed = lowest latency (you can push jack to buffer 64) without xruns. If you are not playing live (for example using ADC) you don't need low latency configuration (I am lucky and not very good at detecting latency, my setup is around 38ms (round-trip). You can detect latency using jack_iodelay.
RAM is important if you want to load samples in PD in advance (avoiding glitches).
NVMe SSD if you can.
If I run other apps (VCV rack, Carla, various Jack plugins) will those processes distribute to the other Cores?
Yes, again Pd is single thread. Others are usually better (GUI on a separated thead for example).
Does Pd benefit from a more powerful GPU card? Or will there be no difference if I use the GPU embedded in the CPU? Is it different if I launch Pd without the gui? (-nogui)
If you don't use Gem you don't need a dedicated GPU card.
Here's some ideas for you, I've been building some setup over the years:
Theremin à crayon:
Using a Surface Pro 3 running Ubuntu Studio with a "old" USB 1.1 sound card. Heavy patch using lots of software : Bitwig, SooperLooper, Guitarix and of course PD. Midi (PD), OSC (Bitwig, SooperLooper). Very quiet but the Surface gets hot (fans are kind of quiet like a good laptop).
Heavybox:
https://www.workinprogress.ca/projects/heavy-box/
Similar setup, a quiet PC using a big heat sink and a overrated power supply so the fan never start. Noctura fan on the side (expensive but quiet). Old soundcard (firewire) but I can do low latency. 8 ins/8 outs.
Biscuit box computer:
https://www.workinprogress.ca/biscuit-box-computer/
Mini-pc not quiet, not very fast in this case a cheap usb soundcard (you know +- 8$ barely better than the embedded one).
Phimatics:
A raspberry pi 2 with wolfson audio card. Using only PD with Alsa, I am getting very good result (low latency) quiest setup. But of course I need to be careful with the CPU.
JAS:
Working on a new project, I found this midi keyboard in the trash / snow. I will put Khadas VIM version 1 (ARM) with a BEHRINGER UCG102 (usb soundcard for guitar). Quiet, no fan can be run on a battery (5V). Will post the project when over.
Lattepanda:
Never worked with it, but looks very powerful. There's a price tag. Maybe for the next project.
Cheers
abl_link~ maintenance?
@jancsika said:
Where is the specification for ableton link?
Relevant bit is: https://github.com/Ableton/link#latency-compensation
"In order for multiple devices to play in time, we need to synchronize the moment at which their signals hit the speaker or output cable. If this compensation is not performed, the output signals from devices with different output latencies will exhibit a persistent offset from each other. For this reason, the audio system's output latency should be added to system time values before passing them to Link methods."
abl_link~, by default, doesn't do this. But, at https://github.com/libpd/abl_link/issues/20, I was told that [abl_link~] response to a "offset $1" message where a positive number of milliseconds pushes the timing messages earlier.
Using that, it's actually easy to tune manually.
This was undocumented -- intentionally undocumented, for a reason that I can't say I agree with. So I'll put in a PR to document it.
Also-- Assuming that arbitrary devices are to be able to connect through ableton link, I don't see how there could be any solution to the design of abl_link that doesn't require a human user to choose an offset based on measuring round-trip latency the given arbitrary device/configuration. You either have to do that or have everyone on high end audio interfaces (or perhaps homogenous devices like all iphones or something).
As far as I know (and I haven't gone deeply into Link's sources), Link establishes a relationship between the local machine's system time and a shared timebase that is synchronized over the network. Exactly how the shared timebase is synchronized, I couldn't tell you in detail, but linear regressions and Kalman filters are involved -- so I imagine it could make a prediction, based on the last n beats, of the system time when beat 243.5 is supposed to happen, and adjust the prediction by small amounts, incrementally, to keep all the players together.
Then, as quoted above, it stipulates that the sound for beat 243.5 should hit the speakers at the system time associated with that beat. The client app knows what time it is, and knows the audio driver latency, and that's enough.
So, imagine one machine running one application on one soundcard with a 256 sample hardware buffer and another app on a different soundcard with a 2048 sample hardware buffer. The system times will be the same. If both apps compensate for audio driver latency, then they play together -- and because the driver latency figure is provided by the driver, the user doesn't have to configure it manually.
The genius of Link is that they got system times (which you can't assume to be the same on multiple machines) to line up closely enough for musical usage. Sounds impossible, but they have actually done it.
Put another way-- if you can figure out an automated way to tackle this problem for arbitrary Linux configurations/devices, please abstract out that solution into a library that will be the most useful addition to Linux audio in decades.
Ableton Link actually is that library.
https://github.com/Ableton/link/blob/master/include/ableton/Link.hpp#L5-L9
license:
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
Pduino problem
Hello everyone, ive got this problem while trying to connect my arduino to Pd. Already installed firmata, used firmata test app to check its ok, and it is. But when i open the arduino-test pd patch, i get this:
netreceive: failed to sett SO_BROADCAST
comport - PD external for unix/windows
LGPL 1998-2015, Winfried Ritsch and others (see LICENSE.txt)
Institute for Electronic Music - Graz
[comport] Opening COM1
[comport]: could not open device COM1:
failure(2) ERROR_FILE_NOT_FOUND
[comport] opening serial port 1 failed!
moocow/string2any 32 -1
... couldn't create
route 13 0 20 1 (message->prepend) connection failed
route 14 0 20 1 (message->prepend) connection failed
route 16 0 20 1 (bang->prepend) connection failed
route 17 0 20 1 (bang->prepend) connection failed
moocow/string2any 32 -1
... couldn't create
moocow/any2string
... couldn't create
moocow/any2string
... couldn't create
moocow/string2any 32 -1
... couldn't create
[arduino]: version_0.5
[comport]: could not open device COM1:
failure(2) ERROR_FILE_NOT_FOUND
Firmware: 2-5.
UNKNOWN_INPUT_COMMAND: 0 480
UNKNOWN_INPUT_COMMAND: 0 479
UNKNOWN_INPUT_COMMAND: 0 479
UNKNOWN_INPUT_COMMAND: 0 480
UNKNOWN_INPUT_COMMAND: 0 479
UNKNOWN_INPUT_COMMAND: 0 480
UNKNOWN_INPUT_COMMAND: 0 479
UNKNOWN_INPUT_COMMAND: 0 479
UNKNOWN_INPUT_COMMAND: 0 479
UNKNOWN_INPUT_COMMAND: 0 480
UNKNOWN_INPUT_COMMAND: 0 479
UNKNOWN_INPUT_COMMAND: 0 480
So, i select the port im using and the A0 pin which is the one with the potentiometer im gonna use, and i get thousands of UNKNOWN_INPUT_COMMAND messages, i turn the pot and the values go from 0 to 1000, and the pd device info block has Firmata 2.5 so its recognizing the device, but cant go beyond that. Any ideas? I see that moocow is missing (and that could be relevant), but couldnt get anything using the "find externals" function.
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.
IAC Driver
Firstly, I would strongly advise against using the IAC driver at all. It is known to have various issues and I have solved multiple reported Mac Pd midi problems on this forum by simply convincing people to completely deactivate IEC in the Mac midi prefs an stop using it altogether (you can search my posts on here for details on the "why").
You do need a third party app to interface that unfinished Mac midi implementation. I would recommend MidiPatchbay which I can personally vouch for as I use it all the time, or possibly MidiPipe, which I have less experience with. Like IEC, you can use those programs to create all the virtual midi ports you need as well as do much, much more such as port/channel rerouteing, translation etc.
Now that said, there's a certain trick you need to know to get it to work with Pd. You can presently only get access to the first 9 of Pd's internal midi ports with Mac OS, but they will not reliably connect to anything beyond the first nine ports on the Mac's midi port list. For this reason you must first make sure that you start out with all midi ports deactivated, then create/activate your nine virtual ports. Then (and only then) you should start Pd and connect it to the nine ports you created. You can then activate all the midi ports on your system and use the third party midi app to route to any port you like. You have to do it in exactly that order or it won't work.
I am pleased to report that there is currently some headway being made in fixing the various long standing midi problems in Pd -- Hopefully in the near future you will be able to connect Mac Pd midi directly like any other midi app without having to go through any of this redundant silliness at all.
Some questions regarding a loop station
@whale-av
I'm using a RME Fireface uc with it's own Asio driver on Win7/10. On Purr Data or vanilla I can set latency to 2 ms as well, but the roundtrip latency tester gives me the same results for 2-5 ms (around 440 samples measured with cable). With a 48 sample buffer instead of 64 on my soundcard I receive even worse values.
But on pd-extended it just doesn't work. Don't know why, but as it's not updated anymore, I prefer working with vanilla and Purr Data.
Anyway - in the manner I'm trying to loop, latency doesn't really matter, but you have to know it's length. Even with a latency of 50 ms or more you won't notice any offset in the recorded loops as long as you know the exact length of the latency.
Tracks get recorded and shifted by the latency afterwards, so latency should be compensated.
You're right, latency won't add up in Pd. But I don't use an in ear system. So if you change your reference from a metronom to a recorded track and from that track to the next recorded one, you will add up latency when the latency isn't compensated.
Xaver
Some questions regarding a loop station
I changed my first post and uploaded a zip at the end.
Works with Purr Data or pd (plus zexy)
@whale-av
Thanks for your patch. I tested it with extended, but I get latency issues. When I record saying something like "tik" on the beat, the "tik" is heavily delayed to the metronom on playback. But on pd extended I can't set the latency lower than 24 msecs. So there might be some issues with extendend on my machine. (pd or Purr Data let me set the latency to 5 msecs without problems.)
You wrote: The biggest problem with (not noticing) an edit will be a difference of volume (power). Our ears are very sensitive to that.
The second biggest problem will be the quality.... timbre..... but as you say a crossfade could help. But the bigger the difference the longer the crossfade needs to be.
I thought about starting recording a little bit earlier and stop somewhat later, so I can crossfade between these extra samples. And maybe it's easier than I thought.
@LiamG
Thanks. How can I trigger between blocks? I thought messages are only send once during a block, aren't they?
About 3): I was wondering, if it is a problem, not to be able to set the exact metronom tempo
And here's a little screenshot to see what it looks like:
I would say, anything above 5 ms latency between the metronom and some voices starts to feel strange. And when you start to change your reference - say you start recording with the metronom, change to first recorded line as a reference, than to the second etc, - the latency will sum up and increase.
I wonder how latency is treated on hardware loop stations.
And I'm still asking myself how latency should be treated to get it right.
Regards,
Xaver
Some questions regarding a loop station
Hi,
I'm creating a loop station and I've got several questions about different issues.
- Latency
- Fading/Cutting recorded samples at start and end
- Metronom settings
1) Latency
I'm using the latency tester from the repo.
http://www.pdpatchrepo.info/patches/patch/92
Latency might be calculated with different methods:
a ) Connecting the output of the soundcard directly to the input via cable. This way the lowest possible latency is received. (Around 440 samples in my case)
b ) Calculating via microphone and speakers. Latency will be higher compared to a ). Also the bigger the distance between mic and speakers, the higher the latency will be.
Which calculation should be used?
(To me it seemes to be logical, to use the latency calculated by b ), as that is the method which reflects the real circumstances. But I'm not shure and it's very hard to tell by what I hear.)
2) Fading/Cutting recorded samples at start and end
When the recorded sample contains a phrase which is completly finished before the next 1, doing a fade with [vline~] sounds OK. But when you record a continuous sound (like a string pad) you will always hear that fade of [vline~].
Compared to Reaper: Cutting a sound and looping it, will result in a continuous sound. To me it seemes like some kind of crossfade between the beginning and the end of the sample is done.
Does someone know more about this? How should it be done correctly?
Crossfading seemes to be a quite difficult task in my eyes, as a lot of calculation has to be done. (Recording has to start a bit earlier and to stop later, sync has to start earlier, and so on)
3) Metronom settings
This loop station depends on a metronom and works similar to Ableton Live. As pd uses blocks of 64 samples, the tempo is corrected to a tempo which corresponds to an array with a size multiple of 64. So playing can easily be kept in sync.
I'm not shure about this. Is it a good idea to do it like this?
But changing this to a manner, where the tempo might be chosen freely, will result in much more complicated calculations. Is it worth it?
Thanks for any comments in advance,
Xaver
My patch is still in development and can be found here:
https://github.com/XRoemer/puredata/tree/master/loop-machine
(downloading from github: go up one folder and use the download/clone button
https://github.com/XRoemer/puredata/tree/master)
Pd-extended 0.40.3 released, dedicated to Jamie Tittle
@hans said:
Finally, it's done! The most polished release of Pd yet. We are further refining Pd into a truly powerful and usable programming platform.
http://puredata.org/downloads/
This release is dedicated to Jamie Tittle, aka tigital, who recently died of cancer. He was a long time and key contributor to Gem and Pd in general, even while he was in the hospital undergoing treatment. He is sorely missed in this community, and I am sure by many others.
Some highlights of this release:
* more functional namespace tools ([declare] and [import])
* new appearance designed to enhance readability
* GLSL shader support in Gem
* usability improvements
* on Mac OS X, you can now build "standalone" applications
* standard locations for user-installed externals
* many bug fixesHere's the rough changelog:
next visual appearance designed for readability
default locations for user-installed externals, helpfiles, etc.
GNU/Linux: /usr/local/lib/pd-externals and ~/pd-externals
Mac OS X: /Library/Pd and ~/Library/Pd
Windows: %ProgramFiles%/Common Files/Pd and %UserProfile%/Application Data/Pdlots of standard key bindings added:
Enter/Return for OK
Escape for Cancel
Ctrl/Cmd-W closes all windows
on Mac OS X, Cmd-` cycles thru open windows
on Mac OS X, Cmd-m minimizes windows
Ctrl/Cmd-R raises/lowers Pd window
Ctrl/Cmd-Shift-R shrinks/grows Pd window
Ctrl/Cmd-Shift-L clears Pd window's text console
Ctrl/Cmd-B opens the Help Browseryou can now use "~" in all paths to mean home folder, and on Windows you can use environment variables, lie %UserProfile% in paths
improved Cut/Copy/Paste support for working in object and message boxes
fixed Cut/Copy/Paste for the Pd window's console
[declare] and [import] now sorted out for loading (but much work needs to be done before there namespace support is complete)
"File -> Save As" defaults to the Home folder (~/) on Mac OSX
new patches default to the folder last saved in
included pgp_opengl aka 3dp on GNU/Linux and Mac OS X
'hardware' and 'deprecated' removed from libraries loaded by default
On Debian/Ubuntu, the packages now install into /usr rather than /usr/local
On Mac OS X, you can now build "standalone" applications from the File menu.
bug fixes and clean up of [hid] and mapping externals
included config in Info.plist for the Spotlight Importer
KNOWN BUGS
check http://puredata.info/dev/bugtracker before reporting bugs
Escape, Enter, and Ctrl/Cmd-W don't close the Path and Startup preferences
pdp_opengl is alpha and will definitely crash Pd
loading pdp_opengl will crash Pd if X11 is not open before trying to load it
the GUI runs slower in some situations
The new visual style is very nice indeed,
Low audio latency in windows 7
Hi all, I'm struggling a bit on audio latency in pd (windows), so I wanted to have a clearer picture.
Apparently other applications seems to perform quite well (Reaktor), but in pd I'm experiencing serious problems.
I did a simple test, the result is here:
This is the test setup:
- pd .042.5 extended
- pd patch: 7.stuff/tools/latency.pd, measurement quite precise (Miller says ~1.5 ms)
- audio board: Cakewalk Sonar VS-100 (roland), USB 2.
- ASIO4ALL driver (portaudio)
- line out (1) cable jack connected to line in 1 (mic)
- windows 7 (64 bits)
Pretty instructive, at least for myself. I put a Scope~ object to visually see the output pulse fed back into input of the audio board:
the "sharp" pulse is the one generated by the patch, the "blurred" one that follows is the one fed back into the audio board.
The distance between the two is the "latency" of the system.
In summary, these are the major results I found:
- lowest true (measured) usable latency ~ 30 ms, corresponding to "delay (msec)" set to ~ 8 ms
- lowest true (unusable) latency ~ 20 ms, audio "destructed"
"delay (msec)" set to ~ 3 ms
- Original HW driver is totally unuseful, only ASIO4ALL seems working ok (why? anyone has an idea?)
- I probably used very bad cables (see the bad pulse shape following the one created by the latency patch)
- changing the ASIO4ALL buffer size didn't change anything in terms of latency (why?)
Note: the only way I was able to lower down the "delay (msec)" values to few msec was using ASIO4ALL driver.
I'd like to hear your experience (I read about Domien playing "delayed") and if anyone was able to succeed to lower
the latency in win to unnoticeable values (~10 ms or even less).
Alberto