ATTAC506, inspired by the ADDAC506
i know, those libraries are there for a reason.. sometimes you just can't avoid them.
and sometimes there's no point in reinventing the wheel..
it's not like i never use externals or libraries, vanilla just makes everything that little more portable or shareable.
- Edited
Remork
I understand, and I'm agree.
As a beginner, it's not easy to make a straight and definitive choose between the difficult way of deep learning that keep simple tools adequate and easily shareable and the way, as a musician, that let you enough time to experiment with your tool.
By the way, i'm working (losting time) on an abstraction [Pot-Init]
(pot-initialisation mode) that allows to adapt the real voltage range of each potentiometer to the 0-1 range of pure data, and store it (where i'm quite stuck), with Pepper in the rack, not connected to the IDE.
Perhaps it's unuseful... (I'm I reinventing the wheel ? )
- Edited
as far as reinventing the wheel goes:
https://patchstorage.com/vanillabrown/
here's what i hope is a working version of a vanilla brownian generator.
it's very much based on the ELSE version.
tested them side by side and found no difference whatsoever. YMMV.
i'll try to use it in your patch soon, but i'd have to do some revisions for pepper v1 before i can truly test it.
FatJak By the way, i'm working (losting time) on an abstraction [Pot-Init](pot-initialisation mode) that allows to adapt the real voltage range of each potentiometer to the 0-1 range of pure data, and store it (where i'm quite stuck), with Pepper in the rack, not connected to the IDE.
do you mean a function where it reads the 'real' values, adjusts them and saves them - without connecting to a computer?
while such a mapping is certainly necessary, i'm not sure if the values drift over time.. so i would think that once you have the values for all 8 pots in your Pepper, you can use these for every patch afterwards?
- Edited
Remork https://patchstorage.com/vanillabrown/
here's what i hope is a working version of a vanilla brownian generator.
Waouw ! I'll try it in the following week. Great. Thanks !
- Edited
Remork do you mean a function where it reads the 'real' values, adjusts them and saves them - without connecting to a computer?
while such a mapping is certainly necessary, i'm not sure if the values drift over time.. so i would think that once you have the values for all 8 pots in your Pepper, you can use these for every patch afterwards?
Yes, I have thought of the possible variation of voltages in time. [Pot-Init]
need to be incorporate in the [ReadAnalog]
as an abstraction. You could use the Pot-Initialisation mode only one time and keep use these values for the rest of your life or use the Pot-Initialisation mode every time you power the Pepper.
It works on my computer, but I need to find a solution only with Pepper to store the values to be readable after reboot. On computer, it's easy with the [savestate]
object, by saving the parent patch.
Basic operating manual: power on the PEPPER with button 1 engaged, release it after you see the first blink of led bargraph, then fully turn each pot from a side to the other and let them here, in their max or min positions, press button 2 to quit pot-initialisation mode.
by the way, the [else/rescale] object actually allows for inputs greater than its designated values - which actually happens in [else/brown], where you sometimes will get values over 1 after adding the step to [fold]’s output.
my patch does this as well since it didn’t seem to matter, but it could easily be remedied with a [clip] object.
FatJak not my idea it's been done before..
https://forum.pdpatchrepo.info/topic/9887/save-presets-to-textfile/12
all the way at the bottom is a vanilla patch where settings of parameters are stored in a .txt file.
i found the [text] object a bit weird to wrap my head around, but it's actually quite easy..
best start by taking a closer look at its help file.
you [define] a text in RAM, write to it w/[text set], ideally a single line of text per parameter.
you can recall each line individually w/[text get], and you can store the full list to a .txt file on disk for later use.
the actual text can just be lists of numbers for your calculations etc.
is there any reason why [savestate] wouldn't work on Bela?
Remork is there any reason why [savestate] wouldn't work on Bela?
Not that I know of. Does it work?
FatJak because of the ctrl+s command from the keyboard missing, you mean?
i think you can just send [savestate] a list of the data you want to save.
giuliomoro
do you know of the incoming adc~values drifting over time, or with different power supplies etc?
aka: is there truly a need for such a function?
i mean, i check and calibrate my pepper patches in the IDE, pulling adc~ values up to "true" 0 - 1 ranges. and then i consider them done and never think about them again. hasn't hurt so far, in practice, but it's an interesting question nonetheless?
- Edited
Remork because of the ctrl+s command from the keyboard missing, you mean?
i think you can just send [savestate] a list of the data you want to save.
The [savestate]
works on my computer because I can do a ctrl+s with the keyboard but not when the Pepper is alone on the rack.
Sorry, my english is perhaps not good enough to be well understood.
- Edited
@giuliomoro
Because of different output voltages from the potentiometers (measured with multimeter and viewable via the bela_scope), can you confirm that we have to consider that we could have for exemple 0.15-0.85 ranges in Pd instead of a 0-1 ?
In this case, what's your advice to calibrate them the simplest way ?
Does Bela already do the range conversion ?
I'm working on something but I would like to know if it's a lost of time...
Edit: It seems that the values on Bela_scope and the measured ones are not the same. Could it be possible ?
Measures with getting_started Pure Data patch:
Potx: measured min-max volt./ approx. displayed volt. with bela_scope / approx. ratio
Pot1: 0.09-4.52 / 0-5.43 / 1.201
Pot2: 0.09-4.45 / 0-5.38 / 1.209
Pot3: 0.05-4.52 / 0-5.43 / 1.201
Pot4: 0.09-4.53 / 0-5.43 / 1.199
Pot5: 0.08-4.64 / 0-5.58 / 1.203
Pot6: 0.05-4.49 / 0-5.4 / 1.203
Pot7: 0.05-4.52 / 0-5.43 / 1.201
Pot8: 0.07-4.19 / 0-5.05 / 1.205
Wich one is converted by Pure Data ?
- Edited
FatJak n you confirm that we have to consider that we could have for example 0.15-0.85 ranges in Pd
It depends on the tolerance of the passives used in the input stage, where an internal 10V reference (or an external CV) are divided down with a voltage divider: the potentiometer probably has a 10% tolerance and the resistor a 5% tolerance.
Potentiometer readings should then be between 0 and 0.98, with a ±15% tolerance on the upper value, clipped at 1. So, depending on the actual resistor values of these components, you may read values slightly above or below 0.98, namely between 0.83 and 1, but most likely closer to 0.98.
There is not much that would explain the bottom of the range to be at 0.15 (or 0.09) instead of 0, so if you get 0.15 or 0.09 when the potentiometer is at a minimum, I'd start looking for issues ... is that on all the channels? Do you get any crosstalk between channels? I am wondering whether the connection between the Bela cape and the Pepper PCB is tight enough on the analog in headers... did you use long enough pins there? Can you try squeezing the boards tighter together?
- Edited
giuliomoro It depends on the tolerance of the passives used in the input stage, where an internal 10V reference (or an external CV) are divided down with a voltage divider: the potentiometer probably has a 10% tolerance and the resistor a 5% tolerance.
Potentiometer readings should then be between 0 and 0.98, with a ±15% tolerance on the upper value, clipped at 1. So, depending on the actual resistor values of these components, you may read values slightly above or below 0.98, namely between 0.83 and 1, but most likely closer to 0.98.
Thanks for these informations.
Because the 1 is sometimes useful with Pd (as in this ATTAC506 patch) and because I don't want to use only the half range of the pot putting too much multiplication to reach it or overtake it, I have these questions :
Wich value is converted for Pure Data : the one viewable on the bela_scope (which seems to be upper than 5V (??)) or the one which could be measured with a voltmeter at the CV OUT ? (which seems to be lower than 5V). Knowing this, I could use a more precise multiplication to reach a 0-1 and use the full range of the pot.
What is the formula involved in Bela to convert these voltages to Pd 0-1 ?
giuliomoro There is not much that would explain the bottom of the range to be at 0.15 (or 0.09) instead of 0, so if you get 0.15 or 0.09 when the potentiometer is at a minimum, I'd start looking for issues ...
(Note: Measures have been done with both eurorack external power and USB plugged)
The Pd 0.15 was just an example, as the Pd 0.85, it was just to try to understand why I can't reach 1 (and perhaps 0).
giuliomoro is that on all the channels?
The non zero minimum is on all the channels, as measured by voltmeter in CV OUT.
On the bela_scope, the zero seems to be fine (by eye...)
Potx: real measure min-max volt. on CV OUT / approx. displayed volt. with bela_scope / approx. ratio
Pot1: 0.09-4.52 / 0-5.43 / 1.201
Pot2: 0.09-4.45 / 0-5.38 / 1.209
Pot3: 0.05-4.52 / 0-5.43 / 1.201
Pot4: 0.09-4.53 / 0-5.43 / 1.199
Pot5: 0.08-4.64 / 0-5.58 / 1.203
Pot6: 0.05-4.49 / 0-5.4 / 1.203
Pot7: 0.05-4.52 / 0-5.43 / 1.201
Pot8: 0.07-4.19 / 0-5.05 / 1.205
giuliomoro Do you get any crosstalk between channels?
(I will try monday.)
giuliomoro I am wondering whether the connection between the Bela cape and the Pepper PCB is tight enough on the analog in headers... did you use long enough pins there? Can you try squeezing the boards tighter together?
This point seems to be alright.