Hardware-ize a VST (attempt1)
- KVRAF
- 5297 posts since 22 Jul, 2006 from Tasmania, Australia
nice one on your persistence
wishing your success with it
you need sound more than us,
but damn- make some sound u bad thing!
heh- are you employable Antto? I need to do this too to a degree,
let me know if you'd like me to pm
I have a concept- my wage would suck hard though
wishing your success with it
you need sound more than us,
but damn- make some sound u bad thing!
heh- are you employable Antto? I need to do this too to a degree,
let me know if you'd like me to pm
I have a concept- my wage would suck hard though
- KVRAF
- Topic Starter
- 2554 posts since 4 Sep, 2006 from 127.0.0.1
i'm employed alreadynix808 wrote: ↑Tue Mar 24, 2020 8:05 pm nice one on your persistence
wishing your success with it
you need sound more than us,
but damn- make some sound u bad thing!
heh- are you employable Antto? I need to do this too to a degree,
let me know if you'd like me to pm
I have a concept- my wage would suck hard though
update: after this board was sitting gathering dust for months, i decided to give it another chance during the holidays
as part of another project, i made a little adapter for JTAG to SWD/STDC14
(on the left)
now i can use the virtual serial port that's part of the DAP programmer too
i started by trying to get buffered, interrupt-driven USART transmit and receive, written from scratch.. it worked, so i have serial debug output and MIDI-in seems to work
next, investigating why there's no data on the I2S SDO pin
writing slightly better code for the audio codec
implementing my own I2S code, then the scary DMA
i had made a few mistakes in my initial codec config, the thing was never gonna make sound since it's in "power-save" mode by default
i eventually got sound out of it, but half of the time it was junk data:
it took me a lot of headaches to figure this out
eventually i think i solved it - the DMA descriptor addressing when auto-increment is used, are weird
floating point stuff seems to be working too
i don't remember why, but i had initially "designed" this to run the PCM3060 in 16bit mode at 96kHz, but now i went for 24bit I2S with 32bit slots
audio input hasn't been tested yet, i should populate some more of the components next.. like the audio input, some of the analog pots, and maybe the square waveshaper
during developement, it would be very convenient to drive this thing with MIDI notes coming from the x0xb0x
It doesn't matter how it sounds..
..as long as it has BASS and it's LOUD!
irc.libera.chat >>> #kvr
..as long as it has BASS and it's LOUD!
irc.libera.chat >>> #kvr
- KVRAF
- Topic Starter
- 2554 posts since 4 Sep, 2006 from 127.0.0.1
populated most of the audio circuits
unfortunately the reception from the codec is giving me only 0 values, no idea why
i probed the square, roughly tuned it (ramp bias and scale before the waveshaper)
http://antonsavov.net/tmp/z_same54_audi ... s_x0x1.mp3
unfortunately the reception from the codec is giving me only 0 values, no idea why
i probed the square, roughly tuned it (ramp bias and scale before the waveshaper)
http://antonsavov.net/tmp/z_same54_audi ... s_x0x1.mp3
It doesn't matter how it sounds..
..as long as it has BASS and it's LOUD!
irc.libera.chat >>> #kvr
..as long as it has BASS and it's LOUD!
irc.libera.chat >>> #kvr
- KVRAF
- Topic Starter
- 2554 posts since 4 Sep, 2006 from 127.0.0.1
i made some progress recently
unfortunately the filter starts to not work well at higher cutoff frequencies, possibly double precision floating point would've helped but the MCU only has single precision
thus i had to oversample it... a lot...
8x is the minimum oversampling factor for it to behave well, and the MCU couldn't really do it in realtime anymore
i had used the 1-sample-delayed feedback, and then iterative method of some sort, so it was very variable
then i finally managed to convince wxMaxima to solve the feedback mathz and now it's with predicted feedback and no iterations
so i made a bunch of compromises around, including reducing the sampling rate... all the way down to 48kHz... and i overclocked the MCU
so now it runs in realtime, i'm currently tuning it roughly.. an oscilloscope would be very convenient, i might be able to borrow one soon-ish
since i still have no audio input from the codec, the wonderful analog square wave can't get into my filter, thus i tried to write yet another model of the square wave.. this time with more mathzy curves
it's still fake, but at fixed frequencies i can tune it to match the shape of the real thing very very closely.. i still wanna get a scope so i can recalibrate it better
potentiometers are working... i can haz tweakage
unfortunately the filter starts to not work well at higher cutoff frequencies, possibly double precision floating point would've helped but the MCU only has single precision
thus i had to oversample it... a lot...
8x is the minimum oversampling factor for it to behave well, and the MCU couldn't really do it in realtime anymore
i had used the 1-sample-delayed feedback, and then iterative method of some sort, so it was very variable
then i finally managed to convince wxMaxima to solve the feedback mathz and now it's with predicted feedback and no iterations
so i made a bunch of compromises around, including reducing the sampling rate... all the way down to 48kHz... and i overclocked the MCU
so now it runs in realtime, i'm currently tuning it roughly.. an oscilloscope would be very convenient, i might be able to borrow one soon-ish
since i still have no audio input from the codec, the wonderful analog square wave can't get into my filter, thus i tried to write yet another model of the square wave.. this time with more mathzy curves
it's still fake, but at fixed frequencies i can tune it to match the shape of the real thing very very closely.. i still wanna get a scope so i can recalibrate it better
potentiometers are working... i can haz tweakage
It doesn't matter how it sounds..
..as long as it has BASS and it's LOUD!
irc.libera.chat >>> #kvr
..as long as it has BASS and it's LOUD!
irc.libera.chat >>> #kvr
- KVRAF
- Topic Starter
- 2554 posts since 4 Sep, 2006 from 127.0.0.1
It doesn't matter how it sounds..
..as long as it has BASS and it's LOUD!
irc.libera.chat >>> #kvr
..as long as it has BASS and it's LOUD!
irc.libera.chat >>> #kvr
- KVRAF
- Topic Starter
- 2554 posts since 4 Sep, 2006 from 127.0.0.1
another audio demo, it seems a bigger chip will be needed, and a different audio codec
http://antonsavov.net/tmp/same54_audio_01.mp3
possibly it won't be populated any more than this, so here's the final pic:
http://antonsavov.net/tmp/same54_audio_01.mp3
possibly it won't be populated any more than this, so here's the final pic:
It doesn't matter how it sounds..
..as long as it has BASS and it's LOUD!
irc.libera.chat >>> #kvr
..as long as it has BASS and it's LOUD!
irc.libera.chat >>> #kvr
-
- KVRer
- 1 posts since 8 Jul, 2023
Hi antto
Recently I plan to build a pedal experimental board with PCM3060 codec and some RPI-like SBC. I wonder that some questions from your point of view
1. PCM3060 is enough for realtime audio? or are there any other substitutions?
2. MCU(bare metal) or SBC(linux) is better? IMO, SBC would be more flexible to build software, MCU may be more realtime
Regards
Recently I plan to build a pedal experimental board with PCM3060 codec and some RPI-like SBC. I wonder that some questions from your point of view
1. PCM3060 is enough for realtime audio? or are there any other substitutions?
2. MCU(bare metal) or SBC(linux) is better? IMO, SBC would be more flexible to build software, MCU may be more realtime
Regards
-
- addled muppet weed
- 107612 posts since 26 Jan, 2003 from through the looking glass
- KVRAF
- Topic Starter
- 2554 posts since 4 Sep, 2006 from 127.0.0.1
if that's an "effect pedal" then you probably need both audio input and audio outputrossihwang wrote: ↑Sat Jul 08, 2023 9:14 am Hi antto
Recently I plan to build a pedal experimental board with PCM3060 codec and some RPI-like SBC. I wonder that some questions from your point of view
1. PCM3060 is enough for realtime audio? or are there any other substitutions?
2. MCU(bare metal) or SBC(linux) is better? IMO, SBC would be more flexible to build software, MCU may be more realtime
Regards
PCM3060 is stereo in/out, so by specs it has 2 inputs and 2 outputs
however, as you may see from my unfortunate experience here - i could so far never get any input from it
if you websearch like i did, you may find a few other individuals who have had a similar experience as me with this codec, in fact, i could not find a single clue on the internet about anyone who has managed to use this codec in full-duplex mode
so i honestly wouldn't recommend it
for an eventual next try i bought a different codec - AK4558EN, it's stereo, and there are at least 2 or 3 commercial products that use it, so both inputs and outputs should work
the only slightly unfortunate aspects about it are that it's QFN only and I2C... i actually can solder QFNs now, but i still hate I2C and prefer SPI, but oh well
SBC sounds like you'd be writing a "program", while with an MCU you're writing a firmware
i confirm that with the MCU you are free to set up the audio however you want (within the capabilities of the codec and MCU) so you can get very very low latency, not sure about the SBC
in general i have zero in-depth experience with these SBCs
EDIT: supposedly it should be easier to write a program for the SBC running linux, i think, you'd just need the right compiler and then it's the same as writing a program for a "PC" with linux, more or less
but i'm not sure how you're gonna "glue" the audio codec onto the SBC
It doesn't matter how it sounds..
..as long as it has BASS and it's LOUD!
irc.libera.chat >>> #kvr
..as long as it has BASS and it's LOUD!
irc.libera.chat >>> #kvr
- KVRAF
- Topic Starter
- 2554 posts since 4 Sep, 2006 from 127.0.0.1
as i've already said, the MCU i chose wasn't fast enough for the synth i wanted to run on it, however, it is fast enough for a lot of simpler DSP algorithms, so i might make a small board with it and the new audio codec to have 2 mono inputs and 2 outputs and then write some distortions or what not
It doesn't matter how it sounds..
..as long as it has BASS and it's LOUD!
irc.libera.chat >>> #kvr
..as long as it has BASS and it's LOUD!
irc.libera.chat >>> #kvr