Simple Midi Synth #421
Replies: 4 comments 5 replies
-
|
Thanks for the report and the example. I just built the Everything worked fine, I got 10-12 simultaneous instances of Juno Patch 1 playing cleanly - see picture below. (Ignore the QFP48 chip in the middle. I'm using a prototype AMYboard -- the red PCB -- for my MIDI->logic interface). Pedal and program change are handled by the built-in MIDI handler, although to get the bank and global volume control of your patch, you'd probably want to modify I can't explain why you experienced a noisy output, although I have found that routing the 1.4 MHz BLCK signal on a breadboard can be fragile. I see that you're printing messages to the console, and we've found that can cause dropped audio buffers on Arduino: the DAC servicing relies on |
Beta Was this translation helpful? Give feedback.
-
|
p.s. I liked the way you put global volume on a MIDI CC (#7), and I'd been meaning to add Bank Select, so I included them both in the latest PR (#426, which also fixed #422). However, per http://midi.teragonaudio.com/tech/midispec/bank.htm, for Bank Select with a limited number of banks it's more common to use just CC 0 and ignore CC 32, rather than the other way around, so that's what I did. |
Beta Was this translation helpful? Give feedback.
-
|
Seeing this implementation I'm not quite sure if I understand the core of AMY: As I read through the documentation it looks like amy_live_start() attaches it's own MIDI routine's to the audio engine but in this example you double up the input handling with the midi.h library? edit: ok wait I think I see it, you did not define amy_config.midi = AMY_MIDI_IS_UART so the whole internal midi thing is not used? |
Beta Was this translation helpful? Give feedback.
-
|
got it, yes well I'm slowly getting there in making amy respond to my own wishes. And I must say - Amy is the first audio engine which compiled without too much troubles, very nice work! I should mention though that I'm using an ESP32s3 and in my old arduino environment where it's all good but very slow compiling. In Visual Studio Code the I2S library seems to have switched to a new version which is not compatible with amy's i2s implementation anymore Also - how would you initialize a synth by an event on a midi channel which does the drum samples (or other types)? according to the online docs I tried: e = amy_default_event(); the synth_flags = 3 alone does not do the trick on setting a midi channel to the drum samples so I'm not sure how to handle these patch_number / patch_string thing [EDIT] PS: about the bank change on midi CCs, you have midi CC0 and Midi CC32 which are defined as a bank change LSB and MSB, you can implement those to control Amy in sort of a 'standardized MIDI' fashion; 'GM Style'. CC7 is volume and CC10 is panning, I figured this out which is nice to add in the midi handling: if(number==10) There's a good CC list here to see what is already standardised (also for example filter cutoff / resonance on CC numbers 74 / 71 ): https://www.presetpatch.com/midi-cc-list.aspx |
Beta Was this translation helpful? Give feedback.

Uh oh!
There was an error while loading. Please reload this page.
-
I have tried to build a simple midi synth using an EPS32-S3 in Arduino IDE 2 (the breadboard on the picture below). It which should also be controllable and thus programmable via some other midi devices. I used the example from the current HEAD's code, but noticed that the synth puts a lot of noise on the line and that reading from the midi keyboard does not always work. I suspect the CPU is somewhat too busy.
I then decided to roll back to my previous code, where I used the MIDI.h to control midi events on my own. My first hardware also has an encoder button to switch patches, but it is not really necessary, as I prefer controlling the synth from my control-box (the dark green box on the picture below). With this new version the noise on the output has completely gone and the sound quality is very good.
Here is my entire code. Maybe it will also help somebody else :-)
I have ordered an ESP32-P4 to see what that will change in performance. Another option I see to use more instruments at the same time is to have one ESP per midi channel.
Beta Was this translation helpful? Give feedback.
All reactions