Dear viewer, these subtitles were generated by a machine via the service Trint and therefore are (very) buggy. If you are capable, please help us to create good quality subtitles: https://c3subtitles.de/talk/420 Thanks!
Now, thanks for showing up here.
And I'd like to present to
a project that
came out after doing many one
off projects, so in a way,
it's like an attempt to
make the ultimate framework
the first. Let's let's have a look
what people in the audience are
doing.
When you look around you and people do or
do they
make you circuits or they
modify existing circuits
called circuit bending, like you have to
speak and spell and modify it and
two different things.
Or they make
MIDI controllers as an extension of
their laptop to have a new
way to control it.
That's a really nice one we didn't
control yesterday around here.
And
and then there is people
doing sound to it a
bit. Microcontrollers, I mean, like
going like a sort of hybrid
topology making like
digital pulses from software
and using the pulses
as sound.
And
and then there is a real
embedded digital signal processing
that means you're not dealing with just
pulses, but accurate measurements
and time time
domain processing,
a digital world that could create just
any waveform
not limited to to
square waves or chip tunes.
And there's
very few digital
single processing DIY happening
because it needs quite a set of.
This is what digital signal processing is
about.
So you have sound inputs, you convert
converted from analog, from a continuous
waveform to digital
numbers at certain at
regular intervals.
And then you have a processor which
runs some sort of software
and can be controlled from
MIDI or from the full panel
with knobs and dials.
And at some point you can go back to
analog sound.
And
the computer can do this actually very
well and
just lots of software
around open source clotheshorse
for every taste and
it's sort of crowded in this field,
Sirtris software, since I started
it all down, like machines or
new things that are impossible to
recreate, to create with
analog machines.
It's very crowded.
Apparently, if you if you go to a
music instrument store is still a lot of
dedicated hardware.
People like to play a dedicated
instrument because it's
plug and play. You just turn it on and it
always works.
It's not designed to for office work
and it will not show you an email
notifications
as quite distracting.
If you if you jam do a
jam session with friends and you work,
your laptop is often something
that sort of pops up pop ups
and or you updated
something, you start like testing
things rather than playing.
So I designed some hard to know
exactly this, like analog to digital
conversion
and digital to and look in a processor.
So you see
like stereo input, stereo
output, a headphone jack,
a USB port for a computer connection
and slot for SD card
and midi
inputs, midi output.
And it's like it's very
similar as what is inside the
the things you can buy in the music
instrument store and
goods. If you would take these things
apart, you would see that the inside is
sort of similar and
it's just now make a lot of products
differentiated by the shape, the number
of knobs and the color of the plastic.
And Ifeoma running on.
Um, and
I didn't do the the
and not and then
the plastic
surgery just frontside Connector's
and then the back entrance
like general-purpose inputs and outputs
that allow you to connect almost
anything but similar,
like Arduino.
And it's no, it's
really not limited to to not
sundials, you can also do servo motors
or accelerometers or
light sensors, whatever you can
think of. It's more like circuit bending
as a as a
as a golden and as an afterthought or is
it not?
And
so to get this thing talking, we need
to develop some digital
signal processing firmware
that breaks apart sort
of in the audio input output driver
and media input output driver
or the input outputs for front panel
notes and dials.
And then you make any combination of
digital signal processing algorithms like
oscillators, filters, envelopes,
and then you have to map the
parameters to
control it somehow
and some bookkeeping to load new presets
or things
and.
It's not the first time that open
source and military solutions have been
developed
and
but they didn't really reach
critical mass.
Um.
I think.
And Programing DSP can
be sort of complex to smart
mathematics involved.
For example, you have to make tradeoffs
between execution, speed and
quality.
For instance, the the
and
the standard math
library is full of sort
of limited use.
It's made for a mathematical precision.
And sometimes you really want to go much
faster than that.
And it's not because you could
edit or add DSB organs
to to further that someone
will do so.
Now, I'm going to make a little switch
to what's that what's out
there in software and
pure software without going to hardware,
and there there's several
data flow oriented programing languages.
And the open source, the main
open source, one is pure data.
And
so there's a program where you can
select objects.
You put them on the screen, you
configure them and you you
bitwise between inputs and outputs
and you can and
this turns into a program
and you document is a program.
So it's a sort of programing language.
Um, there's a commercial, um,
front called Max
and they have a similar syntax
and, um,
grammar.
The nice thing about, um, graphical
programing is that you don't need to
you can't make errors against syntax
or grammar, and
because your you choose your
objects, you have to
really type code.
So it's, um, you
can only make errors against the logic.
So the punishment of
making an error is much smaller.
You don't get a compiler saying, like,
I don't understand that
it will just do something
and it's up to you to make it to the
writing.
And so with this
low punishment of of
experiments, it's very accessible to
artists and and
musicians and and
so around both languages,
there is quite a field of
quite a community of of artists, um,
developing all sorts of things.
It's a graphic,
a programing language, it's not I
wouldn't say it's a complete graphic,
it's not a complete programing language.
I wouldn't implement a quicksort in any
of these by
patching things around that
that really gets awkward.
But signal processing is really about
regular data at regular intervals.
And then the execution
part of the code is really boring.
That's really linear.
Um, both environmentally
paignton objects
are loaded as dynamic
dynamically with libraries,
so at runtime it needs to
dispatch function calls from
two DL's,
which implies a huge overhead if an
object just needs to add to
and puts together.
So it needs to the process needs to make
an indirect jump, save
the context at
and then restore the context.
While this probably could have been
one instruction and
an optimal covid.
So let's try to make
editing further, similarly
as easy as possible
and.
So, uh, wants to make a graphical
dataflow programing environment for
firmware that does not
expose command
line tools, does not expose
C++ code unless you would
want to, and even
the compiler upload and run
cycle.
So that was the first version
of the sort of the architecture.
So on your computer, you would run a
program, the actual departure.
This one is like a library of objects
you could put on the screen.
Right. And up and up.
That software would generate code to
compile it and upload it.
And then this is the actual
ticker, that's the that's the board,
um, yeah, yeah, we have
to come here to run place.
Could someone put a camera over
here?
And
so after uploading, you have
the actual ticker program to the right
firmware, you can do something you
medio and to not purposely
and after flash and you just turn it on
and you can play
and.
I'll give a little.
Of that, and
just so it is the patcher
environment,
so
this and to document and
I double click, I get the object
library, I
have like a linear catalog or an
AlphaBeta catalog of objects.
We also have like a hierarchy
of categories, which
makes it easier to search.
You can also start typing a name until,
like, find the best match.
And so
I start with as an example
of how to solve two 12.
So this
selecter, so to 12 hours
later, so to trace like a linear
ramp periodically,
repeat it.
So let's have a look at the anatomy
of this object.
It has like an input and
left.
The blue color is a it's a data type.
This means it's from modulation control
voltage, like it's for
for slow changes, not suitable
for audio quality,
but good enough for
changes over time.
And then there is Rhett's
data type and output on the right.
Um, positive indication plus minus
means that they're like bipolar.
Um, and then there is a dial
where you can adjust the frequency.
And I tried to make it as
user friendly as possible, so
at zero position,
it would give a certain value
in Hertz.
Musicians want to reach the note.
The name of the note is that
that's one click away and you also
get to factor compared
to the middle value.
So if I were to if I were
to dial them at twelve, I can just
type 12.
You see that the ratio is times two to 12
semitones and music corresponds with a
double frequency.
And that same time you can also wonder if
that seven semitones
corresponds with the almost one
and a half, which are
almost directly shows then
how harmony works in music.
And
so to listen to the oscillator, I have
to add to I
take a volume control just for you
to be safe. Return with the sound
system.
Well, I have a multiply object.
You multiply with a constant, so it is a
dial to adjust to constant.
But I created the blue object.
I mean blue input, blue output
but similar like you have like function
overloading in C++.
This object will upgrade to a red one
because it sees oh you give me
red input and there is a red
um implementation
of this object as well.
And then I can wire
that to the outputs
or two out
stereo
or
dial it up.
So the first version was this,
you press the button and it will generate
C++ code and
it would be uploaded
to the target.
And if everything works, can
you can you turn the volume up
a bit?
Oh, I unplugged something
and
turn it down first place the external
input.
You already get to working
system.
And
I'm actually jumping in my presentation
and because for
one was just you
make a chart with
your program and it would run that
version to was about
making the changes interactive.
So after and generating
C++ code,
compiling it, doing the upload
and make it also instrumental
that you can change
parameters on the fly
so that you don't need to go to recompile
and um re upload
cycle for just I just think
a no.
Um.
And.
And it also goes the other way round.
So you see two level meetings
here that will also
read back from.
And show you the actual volume
level, so no computational
no critical order computation is going on
on my laptop.
It's the fermenters
compiled and upload it now
and starting with the
user interface
and
after it's running
and.
So,
OK, we have a little oscillator and,
uh, and and
if we can turn this very easily
into a music keyboard,
if I take a keyboard object
and keyboard object has the
output for the notes
that's being played
and there's a great output
will indicate when a kid's pressed or
not.
It's very similar in, um,
reasoning as, uh, as
old.
Well, they're still they're still an
analog synthesizer analog.
Melyssa Devices. Yes.
Like machines where you have like it
is a bit similar to this, but every every
object is like a circuit
and you interconnect with cables,
um, to grow up to a playable
thing. I have to modify
the volume depending on
the gate.
The yellow cable type is a billion
on or off.
But I also can convert into
a blue one that doesn't
need to be a substitution object
that has that has
a yellow input
because there is a conversion rate from
yellow to blue.
So I went to the UN
and I take a virtual keyboard
for you, Mr. Tetsuro, and.
So we have a playable system.
I thought five objects would be a bare
minimum to get a playable system, but
it can grow quite a bit
and it's
going to
take a little organ patch
and organ organ
organ. OK, uh,
so,
um, there's like
a sort of a.
And so one
of the problems, if you want to play
music, you don't you don't want to be
limited to one key because,
well, some instruments do for some
instruments, it's reasonable.
For an organ, it's not reasonable.
But if you want to express
that in a in a patch, it's sort of
awkward if you would have to
line up 12 or 16
different oscillators and
parts for if you want to play
different keys
and.
So I made a
way to use
one document as an object
into another one.
So actually this object
comes from dispatch.
This this document is like magic
objects, it's called an outlet
object that represents
an output on the generated
object that corresponds with it
also has little direct output.
And an insider just
uses a keyboard object like I showed in
the beginning
and.
So that's the the child patch
and then on top, I ask
now give me 12 voices up
and just arrange it.
But I also wanted to show the inside the
subject some parameters,
um, have like attributes.
It's called Parmeter on parent,
so the parameters with this flag set
there are promoted to
the objects corresponding with the
inside object.
And
so that's 12 quarters of
a certain architecture to play one
organ pipe or something.
And.
So.
And
so it's just a matter of combining
elements and adding objects library
up to.
Uh, currently, I think there's
over 400 objects serving
different purposes, and
that seems to be that selected the
critical minimum critical minimum sort of
thing, reached that you can start
doing stuff without having to write
another object for
a certain purpose.
Let me show you something that
if you're used to Arduino
or things, and
that might give it a different look,
what I did on this set up is
via potential meeta to analog
input. So it's just a
regular Foldit divider.
Um,
so, uh, yeah, uh,
this so the power
supply ground and,
uh, fit that into the potentiator.
It gets back to analog input.
So instead of we know people
learn to write like a
function call old analog read.
Um, in my home
environment is called Chip Guiyu
in Senesh Analog.
And I select a channel where it is
connected to an in and
out. We know people learn how to
to print numbers to a console
and return numbers that fly
over there.
Here I can have
a little chart plotter
or.
Uh,
Adile or.
Or a numerical readout?
No, it's already in the dial up,
so I turned it up, you see,
and it's instrument,
you can you don't have to
watch the flying numbers.
You can just
use like the oscilloscope and on
screen
and.
So.
I think that's more that's quite
a bit more learnable then
than writing the same thing in
C and getting a terminal with numbers
flying by in
the same world. You can also do
to drive a step a motor or demand
the melodies or an.
To S.P.I or
Chrissy.
And.
I'll assume.
The final demo take a
bit of.
Well, I'm not really I'm not
really a musician, although
I sometimes enjoy
playing something.
Uh.
So,
sir, on top to it's like a little,
um, there's a metronome, a square wave
generated at one at five
hertz that means
and turn 40
bpm and it's divided in steps.
So it's not really turning 40 BPM.
And
and then like a counter that comes to
16, if the
counter does carry, it
does not come to that will count to four.
And when that
does it carry,
also something else will happen.
And
and then real steps and patterns
and oscillators and generators
and stuff.
So and
that's all I would like make a
modification to this document
and
know that it's boring.
And I take this
and I
go in and look
object
and I,
I have like this little two channel mixer
tube to recombine
influences.
OK,
quickly
now I just skip the analog just
a bit of time and I press five.
And
so it's like a drum machine.
I had
and the baseline.
And
I can and
it does are no samples, no samples of all
of this, just all algorithms,
that means you have a lot of.
So it's a very nice with.
Thank you very much.
I'm afraid we don't have time for
questions and answers right now, but if
you're interested in your honest work,
then just come up to him right after the
talk and maybe find a place to meet
somewhere. So please give them a.