-
alexandros
Doesn't [tabread4~] apply cubic interpolation? If you store a ramp to a table, you could use that with [line~] to read through it, couldn't you?
-
alexandros
You can check the [serial_print] abstraction from here https://github.com/alexdrymonitis/Arduino_Pd
If you print your values in the Arduino code properly (see the help sketch), then in Pd you can use this abstraction with a [send] and get your values with a [receive]. Check the exampes, they should be straight forward. -
alexandros
You can also check the audiolab library (available on deken; Help -> Find externals). It's a collection of vanilla abstractions. Its pitch shifter might be a bit CPU hungry as it is FFT based, but it's pretty good.
-
alexandros
Since your source is a .wav file, why don't you store the file to an array and use [tabplay] or [tabread4~] to read it in a loop? I'm pretty sure that a [vline~] with a long list will be way more CPU hungry, let alone the complexity needed for something like this.
-
alexandros
@porres The main issue that I see with neural networks is the immense amount of data they need to train properly. Apart from being hard to assemble a proper training dataset, there are all these copyright issues and (un)ethical use of data and AI. But in some cases they can be very useful, like controlling lots of parameters with just a couple of knobs (or the mouse pointer position) or messing with sound with variational autoencoders and their latent space, to transform sound in various ways (check the example of this external where the sinewave is turned into a sawtooth - not very clean, but it's just an example), just a couple examples of their use.
Still, I do believe that AI and NNs are a hype that evenrually will phase out and will be replaced by something else that will become the new thing. -
alexandros
@spluta I do have my own project which is an external that enables the creation of neural networks, all written in C from scratch, but I've gone as far as autoencoders, struggling to get it to create variational autoencoders. RTNeural though takes advantage of all the development that has been done in Python packages (the go-to language when it comes to AI), so this external is really nice to have!
-
alexandros
This is a great addition to Pd's AI capabilities! I had thought of creating a Pd external based on RTNeural some time ago, but it was too much for me to handle. I'm grateful you took the initiative and did this! Being able to train NNs in Python and run them natively in Pd opens up a lot of possibilities!
-
alexandros
What OS are you using? I guess you're trying to open a .pd file from inside your system, not inside Pd, right? Your system launches a new Pd instance for some reason. Did you try opening your patches from within Pd with Ctrl+O (or Cmd+O on a mac)?
-
alexandros
@elden I don't think it's very popular. I only remember IOhannes mentioning in on Pd's mailing list. It's just a subdomain of Pd's website, deken.puredata.info, and you can search all of deken (Help -> Find externals) in your browser.
-
alexandros
@elden Try the Pd website (the deken subdomain) https://deken.puredata.info/search.html?libraries=list-abs&objects=&descriptions=
-
alexandros
zexy's [oreceive] is also a dynamic receive. Always worth trying stuff yourself though!
-
alexandros
That's rather ambitious indeed. I don't believe you'll be able to display the actual patch. Even if you want to only display knobs and other widgets, you'll have to code this interface yourself and control Pd, or have Pd control those, by sending values for these widgets via OSC.
If I understand what you describe, you want to create a graphical user interface to control a Pd patch, right? If this is so, then what I wrote about holds.
You could try to find some library (it would probably be Python or C++) that creates widgets for OLED displays, and use that together with OSC, but the API you'll use should support OSC communication. -
alexandros
A 200ms is probably a bit too long for what you need. 20ms should be OK for avoiding clicks.
For what you want to do, you probably need two buttons, one for starting and one for early stopping. The second one should first bang a "1, 0 20" message sent to a [line~], then bang a [del 20] object, to delay this bang by 20ms, and the [del 20] should bang a [t b b b] (use as many "b" here as you need) to restart the whole process of playing back a file (including banging the "0, 1 200" message). -
alexandros
@jyg it hasn't been digitally signed, so I guess that's why you get this error. Can't the object be installed with this error? Otherwise you can get the source and compile yourself https://github.com/alexdrymonitis/neuralnet
-
alexandros
It's just an Multi-Layer Perceptron (MLP) - a dense feed-forward neural network. Each neuron sends its output to all neurons in the next layer. Each neuron in the next layer multiplies its of its inputs by a weight. The weighted inputs are summed and added to a bias value, then passed through the activation function of the layer (e.g. a sigmoid function to ensure everything remains between 0 and 1 and don't go to +/- infinity) and passed to all the neurons in the layer after that.
It's all in the C code. If you want to learn more about this though (in case you don't know), I recommend the "Neural Networks from Scratch in Python" book, which is where I initially translated Python code to C to create this object. -
alexandros
[neuralnet] does no FFT. You'll have to do all the FFT and IFFT after you get output from [neuralnet]. This object only enables you to create neural networks. What sort of data you'll use and how you'll prepare it is totally up to you.
From what I understand from your post, you should probably store your FFT spectra, and classify them according to the amplitude you mention. Then feed them together with the classes you have created to [neuralnet]. Does this make any sense? -
alexandros
If you are talking about evolution, then it's likely you need something like a recursive neural network (RNN), which [neuralnet] can't create (at least not yet). Unless this evolution you mention can be encapsulated in one snapshot. If it's spectral snapshots with a 256 bin resolution, and you need four of these snapshots to classify your data, then a network with 1024 inputs could worh with [neuralnet].
The MNIST dataset example (example 4) is a classification example. You should follow that to build your network structure (concerning activation functions, loss function, etc.).
With the current versino of the object you can also build autoencoders, which can be sort of good for compressing data. That being said, you could perhaps use an autoencoder and map the values in the latent space. The next version will hopefully include variational autoencoders (working on this), so that could also be an option.
As I don't know the structure of your data though, I don't think I can be of more help right now. -
alexandros
You can also try [neuralnet] which is built for creating (deep) neural networks.
-
alexandros
How are you trying to open the port with [comport]? Did you send the "devices" message to it to see the available ports and their indexes in Pd's console?
-
alexandros
Which libraries are these? Perhaps you need to first use [declare -lib libname] before trying to create one of its objects. This concerns single binary file libraries like zexy or Gem.