h4yn0nnym0u5e

Latest activity Postings About

    • h4yn0nnym0u5e
      This thread inspired me to break out my wind controller and have a go! Here's a super-basic sketch which illustrates a few points made in posts above. I've deliberately not put in any effects, so any gremlins are exposed. In particular, very low...
    • h4yn0nnym0u5e
      Hmmm ... I've not tried 96kHz. As you say, the data sheet requires Dual rate mode for 96kHz, which needs an extra DIN and DOUT pin to be used, and will require some fairly deep diving into the TDM hardware drivers to enable those and route the...
    • h4yn0nnym0u5e
      @TomChiron note that typically a wind synth doesn’t use an envelope, the amplitude shape is controlled by the player using one of the CCs - looks like either 2 or 11. You might use a velocity controlled envelope to help get an authentic sounding...
    • h4yn0nnym0u5e
      After some search, I found that I could specify a teensy platform version in PlatformIO in PlatformIO.ini file, in the [env] section I changed: platform = teensy to: platform = teensy@^5.0.0 A number of installations automatically occurred in...
    • h4yn0nnym0u5e
      The functions available for audio connection objects are documented on this page of the PJRC site. You'd write something like: patchCord1.disconnect(); // disconnect ... patchCord1.connect(i2sInput, 1, mixerRight, 0); // ...and re-connect to...
    • h4yn0nnym0u5e
      Bearing in mind I've not actually got round to creating a completed synth of my own ... but do have a fairly deep appreciation of the pitfalls of the Audio library, I'd say: Your topology looks like as good a starting point as any perhaps add a...
    • h4yn0nnym0u5e
      Thanks everyone for your replies. Thanks! This did the trick - I moved the code setting parameters out of the main loop and into the midi cc case bits, so parameters only get updated when the relevant midi cc is sent. All working perfectly...
    • h4yn0nnym0u5e
      OK, that says to me the Zero Data Detect mode doesn’t work very well, for some reason. Did you have the option to bodge round it on the RPi? I think I’d be inclined to mix in some 1-bit noise rather than DC, just in case you got the rest of the...
    • h4yn0nnym0u5e
      Feasible? Possibly. Challenging for someone with "no experience" and "about 3 months of time". Definitely! Don't try to do it all in one go - test each element separately Can you get SPI communication from Teensy to RPi? You need significantly...
    • h4yn0nnym0u5e
      Then there’s the Zero Data Detect mode, documented on p22 right before Power Save Mode (but not mentioned by @phjanderson). Sounds like the [small cheap purple] PCM5102 isn’t doing a great job of getting out of analog mute…
    • h4yn0nnym0u5e
      Don't do a waveform.begin() when you haven't changed the shape. The non-band-limited shapes don't appear to do much, but the band-limited ones have some initialisation code which you're repeatedly calling, probably very fast. In general, I'd say...
    • h4yn0nnym0u5e
      Hi h4yn0nnym0u5e, That is very helpful. I really appreciate you sharing your experience, and the link. I'm blown away at how awesome you all are, and how great the forum is. Teensy is much more than a product - it's a legend, with caring people...
    • h4yn0nnym0u5e
      One further suggestion for your "new Teensy old carrier PCBA" test unit, is not to lock the Teensy. You then at least have the option of being able to do the 15 second restore, which I understand you can't do with a locked device. Given you're...
    • h4yn0nnym0u5e
      Except … a “small cheap purple board from AliExpress” might, just possibly, have a knock-off copy of the PCM5102 which doesn’t comply with the official datasheet…
    • h4yn0nnym0u5e
      According to GoldWave it's a 24-bit file, and thus not compatible:
      • 1714563598843.png
    • h4yn0nnym0u5e
      Your test code didn't work before, but I can see no reason why it wouldn't now. Your "part of " loop() clearly has problems. Let's assume Serial is actually connected, so while (!Serial); doesn't cause an issue. Let's assume you've sent the...
    • h4yn0nnym0u5e
      This won't work, see e.g. https://forum.pjrc.com/index.php?threads/problemes-with-diy-teensy-4-1.74851/, post 2
    • h4yn0nnym0u5e
      The problem is almost certainly in //stuff, where we can't see it. In normal code I'd say you've allocated far too few audio blocks, and started the queues way too early, so they consume all the blocks before you even get to loop(). It may be...
    • h4yn0nnym0u5e
      Are the line out caps part of the circuit you’re measuring? If so, could they be contributing to the distortion?
    • h4yn0nnym0u5e
      I've changed nothing since post #100, so https://github.com/h4yn0nnym0u5e/teensy-variable-playback/tree/feature/set-start-point is the most recent (October 2023). Best? Who knows? It seems to take months to get any feedback on changes, and even...
    • h4yn0nnym0u5e
      OK, pulled all three files (source, recording-1, and recording-2) in Audacity. Reviewed each in detail, recording-1 was 1 one-hundredth of a second longer than the original wav file but the extra was "dead air" so apparently Audacity ignored that...
    • h4yn0nnym0u5e
      That looks like the equal and opposite problem … ending a recording and tidying up takes a few milliseconds, so the other recording has (by the look of it) time to get a couple of buffers recorded before you stop it. I may not have tested it, but...
    • h4yn0nnym0u5e
      There's at least a couple of things going on here. One is that the SDTEST1.WAV file has additional information in its header, making the header 138 bytes long, rather than the 44 bytes that's generated by the AudioRecordWAVstereo object. The...
    • h4yn0nnym0u5e
      Presumably, but I'm quite surprised! At any moment you can expect someone who knows about these things to pop up and blind us with the science of properly-implemented sample rate conversion. "Simply repeating until a new sample is supplied"...
    • h4yn0nnym0u5e
      There's no avoiding your having to do some work in your code to match your incoming rate of "around" 4kHz to the audio system's "around" 44.1kHz (nothing will be exact...). You'll need to put 11 copies of each sample into the audio queue, except...
    • h4yn0nnym0u5e
      Depends what your aim is, but either AudioPlayQueue or AudioSynthWaveform using the arbitraryWaveform option may suit your needs. They’re documented in the Design Tool. Do come back if you can’t see how to do what you need, though we’ll probably...
    • h4yn0nnym0u5e
      h4yn0nnym0u5e reacted to savt22's post in the thread "String" range issue with Like Like.
      Thanks - I changed it to 1349 to take it to C0 and it's more than good enough for my purposes! I really appreciate the help from you both.
    • h4yn0nnym0u5e
      That’s great, thanks @mjs513. I tried to figure it out, but the complexity of FLEXSPI and general lack of comments left me totally at sea… One suggestion … it would be a good plan to check for a nullptr return from chip_lookup() and return a...
    • h4yn0nnym0u5e
      Despite a valid part being fitted, when this function is called the chip ID is not read correctly, resulting in a NULL info pointer, which is not checked and is dereferenced, causing a Data Access Violation. The part fitted is a W25N01GVZEIG...
    • h4yn0nnym0u5e
      h4yn0nnym0u5e replied to the thread "String" range issue.
      No, it's simple enough just to change the 536 to 1349 to allow going down to C0 - though as noted by @MarkT it's much better practice to use a const int with a name (and a proper comment) and then change every occurrence of 536 to that. It uses...
    • h4yn0nnym0u5e
      h4yn0nnym0u5e replied to the thread "String" range issue.
      I started playing with that module, there’s all sorts of changes it needs… Apart from variable-length buffer to allow lower notes (I put that in audio blocks, though it’s not backward-compatible), the feedback filter should be configurable and...
    • h4yn0nnym0u5e
      Yes, Windows is a pain like that. I've had good results changing the value of usb_string_serial_number, which seems to keep Windows a bit happier even if the VID/PID hasn't changed. If you look at the USBmultiChannelTest.ino example you just...
    • h4yn0nnym0u5e
      I think the issue may be that the product ID has been changed to one not matching the Teensy udev rules. Could be wrong, I'm not much of a Linuxist...
    • h4yn0nnym0u5e
      Something like this? float getval(int channel) { return 0.5f;} class Knob { enum {below,above,track} state; int channel; float physicalValue; float returnedValue; public: Knob(int ch) : state(track) { channel = ch; }...
    • h4yn0nnym0u5e
      Quite hard when we don't know which version of the code you're starting from! If your audio-guestbook.ino file looks like the ones above, the key point being only one line having: AudioPlaySdWavX playWav1; // Play 44.1kHz 16-bit PCM...
    • h4yn0nnym0u5e
      Well ... 517 lines to do a file copy did seem a tad extreme ... compared to my 34 :giggle: but not relevant to the discussion at hand ... and mine's only for a quick demo. Yes, it's maybe not worth pursuing my library for your use, there's only...
    • h4yn0nnym0u5e
      I'll have to check that out! Thanks, Ed
    • h4yn0nnym0u5e
      I've just spotted a nasty in both of your main.cpp files, may or may not be relevant. At the end of the copy to Flash you flush the files, and then close the RAM data file. Yup, the RAM file, not the Flash one... That's actually in two places...
    • h4yn0nnym0u5e
      Thanks for those. I've plugged them into the above sketch, using file paths like yours, and they play without issue from SD or LittleFS_RAM. I also tried heap instead of PSRAM, which worked as expected. So that's good, one possibility knocked...
    • h4yn0nnym0u5e
      I've had a look, and can't immediately see what the problem is. I'm always a bit nervous when there's lots of duplicate code and strings, and more so when the duplicates aren't quite so - like your SD directory being CLKSNDS but LittleFS uses...
    • h4yn0nnym0u5e
      I'll take a look. In the mean time, here's a sketch I adapted to use SD+LittleFS rather than two SD cards. I haven't got a QSPI flash so it uses a LittleFS RAM disc and copies an audio file to it from the SD card during setup(). Assuming the...
    • h4yn0nnym0u5e
      I can understand and sympathise with your opinion, but it remains the fact that a lot of users use nothing but the Arduino IDE, and on this forum it is the canonical way of supplying a concise example of code that reproduces an issue. Often the...
    • h4yn0nnym0u5e
      I've done a PR to your repo, having done a bit more testing - this essentially adds in stuff I'd already done previously. Minor change to your code to make it compile with 8 channels @ 96kHz. Haven't time for more right now, but will be back!
    • h4yn0nnym0u5e
      That sounds like good news, will give it a go as soon as I can. With regard to the PR, I was thinking only as far as forking your repo, adding in some of my modifications to allow placement of wider USB objects in the Design Tool, and submitting...
    • h4yn0nnym0u5e
      ...of course, that code fragment absolutely can't work. No audio memory, no way of getting output ... the list is endless! But everything else is in other examples. I think... EDIT: the closest to what you want is in the Audio library examples...
    • h4yn0nnym0u5e
      Hi Ed I confess I've never tried any variant of LittleFS for anything! However ... the play() method is declared as bool play(const char* filename, FS& fs = SD, bool paused = false, float startFrom = 0.0f) Thus as standard it uses SD as its...
    • h4yn0nnym0u5e
      I only tested input very briefly … even more so than the output! Seemed OK but I need to do a thorough test, recording known-perfect waveforms and then looking at them with a spectral display to highlight any discontinuities. Didn’t touch 96kHz...
    • h4yn0nnym0u5e
      I've had a very brief play and it seems to be the best I've heard yet - nice job! I can see the extra samples being inserted (Teensy->PC) but can't hear them. Curious to know how the PC reacts if you just send the occasional packet with one...
    • h4yn0nnym0u5e
      Use a nutsert instead of the “closest overhead part” steel nut?
      • 1710830728773.jpeg
    • h4yn0nnym0u5e
      Yes, that’s right, you can use both TDM channels at once. Can’t claim to have checked the pin numbers you gave though :) Doesn’t matter whether they’re CS42448 or PCM3168. There’s also this thread and linked pull request which suggests that it...
  • Loading…
  • Loading…
Back
Top