Posted: Mon Jan 11, 2016 1:50 am Post subject:
4-octave polyphony, one chip per note
For my next lunetta I have been thinking about a polyphonic tone generator which strikes an acceptable balance between having a low chip count and not sounding too awful. Here is what I up with:
I started with the frequency ratios for just intonation...
Code:
C D E F G A B
1/1 9/8 5/4 4/3 3/2 5/3 15/8
then divided through by 15...
Code:
C D E F G A B
1/15 9/120 1/12 4/45 1/10 1/9 1/8
I decided I could cope with a slightly flat D and F, so simplified to...
Code:
C D E F G A B
1/15 1/13 1/12 1/11 1/10 1/9 1/8
...familiar Melody Generator stuff. I'm after polyphony, though, so instead of using a mux to select the divisions, I devote a counter to each note. Each counter is hardwired to reset at the appropriate step using diodes:
Code:
note count diodes
C 14 1110
D 12 1100
E 11 1011
F 10 1010
G 9 1001
A 8 1000
B 7 0111
Then I need to turn the pulses into a squarewave. The 4520 has two 4-bit counters, so I can do the division and then get 4 octaves from the result all on the one chip. A fairly high frequency osc to clock them all, and bingo, plenty of notes to play with.
The concept seemed promising on the breadboard, but I didn't have enough room to fit everything on and get a scale going, so I'll record something once it's soldered.
4520_polyphony.png
Description:
Filesize:
33.69 KB
Viewed:
645 Time(s)
This image has been reduced to fit the page. Click on it to enlarge.
That's a promising design, trav. I tried the same with shift register dividers and ended up with a sharp E, F and B (around 2%). But it was alright for the intended purpose. Looking forward to hear how your solution sounds.
Okay, it took a bit of troubleshooting. I don't know what made me think I had to count to one less than the desired division. Also the division by 8 can of course be taken straight from Q2 without having to reset the counter. I decided to take the UnB clock from one of the Q outputs on UnA too, instead of the reset line. My neater-than-usual soldering job was ruined by having to make these changes on the board (lesson: get a bigger breadboard!), but in the end it works. Recording and updated schematic below.
Code:
note division diodes tap
C 15 1111 Q3
D 13 1101 Q3
E 12 1100 Q3
F 11 1011 Q2
G 10 1010 Q2
A 9 1001 Q2
B 8 n/a Q2
polyphony.mp3
Description:
Filesize:
446.94 KB
Viewed:
1381 Time(s)
4520_polyphony_corrected.png
Description:
Filesize:
34.8 KB
Viewed:
690 Time(s)
This image has been reduced to fit the page. Click on it to enlarge.
I don't know whether I expected it to be in better tune or not. Maybe I got the divisions wrong or maybe it's just the compromises I mentioned above. The different "modes" (scales starting on different notes) are interesting, though, and there are plenty of harmonic intervals in there, so I am quite pleased with the result. The principle of selecting seven divisions between 1/8 and 1/16 has yielded a good selection of frequencies to play around with; I am sure I'll be happily patching melodies (and chord progressions???) in no time.
First, though, I have to put together a sequencer: patching up a 32-channel mux for the recording was a job in itself!
I decided to take the UnB clock from one of the Q outputs on UnA too, instead of the reset line.
Using the highest Qn output from QnA will give a wider clock pulse than the short reset pulse. This only means that the clock for the octave divider (UnB) will arrive a bit earlier, but still with the same frequency.
However, check F, G and A. I believe you need to use Q3 there, not Q2. Otherwise there will be two clock signals for UnB per division cycle instead of one.
Joined: Jan 14, 2010 Posts: 6058 Location: Moon Base
Audio files: 728
Posted: Fri Jan 15, 2016 12:38 pm Post subject:
yeah, that's what I was thinking. I first thought that using the Q3 outputs might give some phasing problems
when mixing the notes, but that shouldn't matter since they are already at a different frequency anyway.
However I do also wonder about those F, G, A notes. I haven't given it much thought yet though, it's just my
first impression from looking at it, maybe it does work correct. _________________ "My perf, it's full of holes!" SoundCloudBandCampMixCloudTwitchYouTube The Golden Shrimp Guild
I don't know why I decided to do it this way. While troubleshooting I thought the short clock pulses might be a problem, so took the clock from the Q output which gave the longest on time per cycle. Of course that wasn't the problem at all, and using the reset line should work.
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum You cannot attach files in this forum You can download files in this forum