Additional note: if the application was skewed towards many inputs or many outputs, then one would need more half-used boards. 80 inputs and 32 outputs needs 10 boards, 6 of which are inputs-only.
The clock signals are all commoned, with just data pins changing according to the usual SAI1 scheme, so using 7, 32, 9 and 6 for Teensy out, 8, 6, 9 and 32 for in. You have to use the pins sequentially (no using just 7 and 9 for 2x outputs, must...
VINIA has 8 channels, each one can be independently configured as a sample player, full synth voice, drum synth, harmonic oscillator, chord generator... or as a multi-effects unit for external audio processing.
Easy to use constructor allows...
You're almost certainly missing triggers due to the time taken to update the displays through the slow I²C interface. Despite your comment "Only update display when idle or aftershock", even if you don't update the display of a sensor which has a...
For me, it’d be preferable to get my hands on boards ASAP - I want to try out the ridiculous I/O count possibilities of my multi-TDM branch :)
Would it be easier for you to open-source the design at JLCPCB so we can order directly from them...
One way to do it might be to revise the bootloader code so pulling an unused pin (looks like there are a couple) low forces it to an inactive state, which should then allow use of JTAG. Routing JTAG to some header pins or pads would be tricky, as...
Yes, maintenance of the documentation isn’t exactly one of the strongest points of the Teensy ecosystem…
The PWM uses two outputs with 8-bit resolution each to achieve 16-bit (ish) total resolution. Hence the 475R and 127k resistors, with a...
AudioOutputPWM is supported on Teensy 4.x, and you could also use AudioOutputMQS to get a total of three outputs using a “bare” Teensy. Full disclosure … I haven’t actually tried this! Also, seems a bit of a sledgehammer to crack a nut :unsure:
Change your code to detect both rising and falling transitions, and their timestamp. Do any processing needed, then wait until micros() - currentTime > 15. Should be fine as long as your signal duty cycle is about 50% and processing takes under 16ms
Without simple example code to reproduce your issue, it’s fairly pointless trying to give further advice. I’m not 100% sure I understand your post, but it sounds as if you can no longer reproduce the issue yourself…
Are you now using v1.1.0 of...
There's your problem:
...but the documentation in the Info pane says:
playSD(filename[,paused[,startFrom]]);
Begin playing the named WAV file from the SD card. If a file is already playing, it is stopped and this file starts playing from the...
OK, I've just checked, and it seems to be working OK for me. I'm not sure what your short video adds ... code would be more useful.
Are you sure you put the startFrom parameter in milliseconds? I always forget to do this, put it in seconds, and...
Yes, but most other SAI3 pins are only available if you build your own hardware, they’re not on stock Teensy 4.x. Plus you then need to add the low-level code to drive it.
AudioOutputI2SOct will already do the job using SAI1.
I have no idea how you add libraries, or use modified stock ones, on PlatformIO. "... as the compilation progresses, it defaults back to Paul's original library" certainly sounds very odd, I'd've thought that at least it would just pick one!
For...
There are two I2S busses, one has 5 data pins, the other has 2. Each has one output pin and one input, but the remaining data pins on SAI1 can be chosen to be output or input. So you can do 8 outputs (each pin is stereo), e.g. using 8 of these...
I don't think I've destroyed anything, though I'm prepared to be proved wrong :) I've probably explained myself poorly, though...
The 1024 point FFT is done on 1024 points taken from 8 consecutive blocks, as before. However, what I've improved...
Does the ARM library give API access to each of those individual stages? I had a quick look and didn’t spot anything, but could easily have missed it, there was a lot of terminology that went way over my head :)
To my mind an extra 12ms of...
To a large extent, I don't. I'm not even sure it's mathematically feasible to compute a partial FFT with only some of the data available, and finish it later... Someone with maths skillz will no doubt be along to clear that up :)
The original...
Hi folks
I've been tinkering with the FFT code in the audio library, and think I've made some improvements:
processing is now spread across update() calls, so the peak CPU load has dropped (slightly)
works with smaller values of...
Hi there. OK, some clues there.
Arduino Library Manager isn't showing TeensyVariablePlayback version 1.1.0 as available - I've asked the repo owner to release it, which I think is what's needed. It is possible to download it manually, but he's...
I can think of a few things:
create a simple sketch without the keypad, encoder and OLED display code;
test it with the sample that you played for 30 minutes, for long enough to be sure it reproduces the problem
post the sketch and sample so...
So the shiny new improved version has just been merged - thanks @Moo! As noted above in post #202, the "old" version can be found on the old_master branch, if you need it.
For the most part a masked interrupt will not be lost, just delayed for (up to) however long it takes your code between the disable/enable calls to run. The accepted wisdom is thus to keep such code as short as possible, and never make calls to...
If you
then you want polyphonic.
As @emmanuel63 says, if you're playing real samples then you run short of memory very quickly, which is why streaming from SD starts to look like a good idea. It's definitely feasible, as I said in post #3, but...
Yes, the Cortex M7 used by Teensy has what's termed "nested" interrupts, which means that a higher priority interrupt can interrupt a lower-priority one that's already in progress.
In this case, the pin interrupt is (I think) at level 128...
...followed by a snapshot of your audio configuration ... with all sorts of mystery arrays ... definitely not fulfilling
Yes, the Design Tool documentation isn't what you'd call well-maintained: PWM output is an option for Teensy 4.x. The...
Great, there’s nothing like independent testing for finding the bugs! Well, and automated regression tests, which I can see in there but need to figure out how to execute…
The repo now has a file access example, which shows the hoops you need to...
OK, so quite a bit later than advertised, but I've made some progress. Prior to doing a PR I want to sort out an example showing how to access the SD card while streaming audio from it, and update various bits of documentation, but the current...
Yes, it looks as if your development and test code is getting a bit out of hand - Arduino doesn't make that easy, though there are hints you're using PlatformIO, which may make a difference (I've never used it...). A quick scan reveals there are...
Right, had another chance to look, including actually compiling your code. Two things:
Voice.cpp needs this->env->noteOn(); adding to Voice::noteOn(), otherwise the envelope isn't triggered and nothing gets through to the voice output mixer...
OK, so you’re starting 5 notes but can only actually play the last 2, with the result that your first 3 calls to noteOff() do nothing because the notes are no longer playing so don’t get found by the search.
This doesn't look right - the gain...
Unfortunately the stock AudioPlaySdWav object struggles to achieve more than a couple of files playing simultaneously. I've put significant effort into an improved suite of playback and recording objects, with an associated discussion thread...
My first thought is that you can't get better than 22.7µs alignment, because of the basic 44.1kHz sample rate of the stock audio library. That would improve slightly to 10.4µs if you change the sample rate to 96kHz, which is non-trivial.
A...
It's not completely obvious how the code is crashing, but one has to assume that it's the result of the corrupted audio file, somehow.
The elements of your post that caught my eye are
and
so ... the implication is that playback is in...
A. I would definitely order an electret microphone, even if just to eliminate it as the problem source. They're pretty cheap (about £2.50 on UK eBay); I ordered several different models just in case one was troublesome, but they all seemed to...
That’s what I meant by “slightly” :) I think the issue is:
oneBitAmplitude = np.abs(audioData)>1
as the count will miss samples with the values 0 and 1. In your post there’s an instance where it’s out by 2 samples, in fact… as it happens...
5011 samples doesn’t fill an exact number of audio blocks - it’s a bit over 39. So queueBeep() will leave a part-filled block awaiting completion, transmitting only the completed ones. The next call will do likewise, so you’ll transmit either 39...
What mic are you trying to use? It should be an electret type.
The Teensy analogue input is not involved when using the audio adaptor; the SGTL5000 on the adaptor does the ADC function and the resulting data go to the Teensy via the I2S bus...