decle Posted May 5, 2018 Share Posted May 5, 2018 There seems to have been some interest in ECS projects recently, so I thought I might share something I've been working on: IMDI (Intellivision Music Digital Interface) is a prototype of a combined MIDI interface and Intellivision cartridge. It turns the Master Component / ECS combo into a MIDI instrument. It came about as a result of a converstion with Paul Nurminen of the Intellivisionaries.Currently IMDI runs a modified version JoeZ's Simple Synthesizer for the ECS. This version can take input from either the ECS synthesizer keyboard or a MIDI source and use it to drive the six voices of the ECS.When using a MIDI source, the note velocity is used to set the output volume, making the ECS touch sensitive for the first time. The sound of the Simple Synthesizer has also been sexed up a bit with the addition of a little vibrato and decay.The next step is to replace Joe's Simple Synthesizer with something a little more comprehensive, in an effort to see whether the ECS could have competed with the square wave keyboards of the mid 80s, such as the Yamaha PSS-130 or PSS-160: For those that are interested the micro-controller used is the Teensy 3.2. I used their MIDI interface design, but not their software library as it upsets the timing of the cartridge interface.As always, thanks to Joe and Paul for their help. All comments are most welcome. Cheers decle 11 Quote Link to comment Share on other sites More sharing options...
+nurmix Posted May 5, 2018 Share Posted May 5, 2018 Fantastic (and impressively quick) work, Decle! I realize this is a very niche Intellivision project in an already niche group of Inty enthusiasts, but I for one am excited by the unique musical possibilities of adding the ECS to my MIDI keyboard and synth rig. Sent from my Keyboard Component using Jack's Conversational Intelli-talk cassette 4 Quote Link to comment Share on other sites More sharing options...
+Lathe26 Posted May 6, 2018 Share Posted May 6, 2018 Nice work! Quote Link to comment Share on other sites More sharing options...
First Spear Posted May 7, 2018 Share Posted May 7, 2018 Really, really, really cool. Even though it's a niche within a niche, that does not reduce the level of awesomeness at all. Two AY sound chips brings a lot of music horsepower. Wow! Quote Link to comment Share on other sites More sharing options...
First Spear Posted May 7, 2018 Share Posted May 7, 2018 The timing on your work is pretty interesting. I think that there is a Chiptune get-together in the UK fairly soon. It would be interesting for the folks there to see what you've done! Check out these Twitter posts and the associated Tweets https://twitter.com/IntvPrime/status/993227346994921473 https://twitter.com/IntvPrime/status/992908249518231552 There seems to have been some interest in ECS projects recently, so I thought I might share some[snip] As always, thanks to Joe and Paul for their help. All comments are most welcome. Cheers decle 2 Quote Link to comment Share on other sites More sharing options...
intvnut Posted May 7, 2018 Share Posted May 7, 2018 Very nifty! BTW, I should note that decle's work also spotted a bug that crept into the assembler at the end of the year last year. It's a 1-liner fix, and I hope to push out a new release Monday. One of my longer term goals (and I'm happy if someone beat me to it) was to add some sort of modular-synth style effects programming to Simple Synth. And then that got distracted by LTO Flash. Since that has a serial port, I was able to do my experiments w/ modulation directly on a PC via the serial interface, downloading parameters from a C++ program. Great in my lab, but not as universal and integrated with a music setup as MIDI, nor as friendly. 3 Quote Link to comment Share on other sites More sharing options...
the1hatman Posted May 7, 2018 Share Posted May 7, 2018 Amazing work! Several of us here have been advocating for new ECS and Music Synthesizer work for a while so thank you for taking the time to create something new and impressive. The more things are created for the ECS and Synth the less niche they will be. 1 Quote Link to comment Share on other sites More sharing options...
+DZ-Jay Posted May 8, 2018 Share Posted May 8, 2018 (edited) There seems to have been some interest in ECS projects recently, so I thought I might share something I've been working on: IMDI (Intellivision Music Digital Interface) is a prototype of a combined MIDI interface and Intellivision cartridge. It turns the Master Component / ECS combo into a MIDI instrument. It came about as a result of a converstion with Paul Nurminen of the Intellivisionaries. Currently IMDI runs a modified version JoeZ's Simple Synthesizer for the ECS. This version can take input from either the ECS synthesizer keyboard or a MIDI source and use it to drive the six voices of the ECS. When using a MIDI source, the note velocity is used to set the output volume, making the ECS touch sensitive for the first time. The sound of the Simple Synthesizer has also been sexed up a bit with the addition of a little vibrato and decay. The next step is to replace Joe's Simple Synthesizer with something a little more comprehensive, in an effort to see whether the ECS could have competed with the square wave keyboards of the mid 80s, such as the Yamaha PSS-130 or PSS-160: For those that are interested the micro-controller used is the Teensy 3.2. I used their MIDI interface design, but not their software library as it upsets the timing of the cartridge interface. As always, thanks to Joe and Paul for their help. All comments are most welcome. Cheers decle Hi, decle, Fantastic work! As someone who misspent his youth playing with old ARP and Moog analogue synths and lived on an unhealthy diet of 1970s and 1980s Electronic/Synth-Pop music, I always find these sort of projects fascinating. Like intvnut, making a sophisticated synthesizer program for the Intellivision is in my ever-growing Gort Excursion List (a.k.a. "Things I'd like to do when the Earth stands still.") Unfortunately, being slower and less talented than most of you (not to mention, possessing an exceedingly high mastery of procrastination -- seriously, it's my super-power!), I'll probably never get to do it, so it's great to see others working on similar concepts. One thing Paul and I had discussed in the past which you may want to consider for your own synth project is the use of the Intellivision disc controllers as rotating dials to modulate the signal of various patches, such as the frequency of LFOs, etc. I think it should be possible to measure the angular velocity of a spin of the disc as the thumb slides over it by sampling its position, measuring it against its previous one, and applying some simple heuristics. Then, it's a matter of translating this into a stream of values to the modulator. I haven't gotten around to try my theories yet, but I am confident it shouldn't be too hard. Anyway, I think it would be neat to use the Intellivision discs as control surfaces for analogue-sounding modulation effects. -dZ. Edited May 8, 2018 by DZ-Jay 3 Quote Link to comment Share on other sites More sharing options...
chjmartin2 Posted May 26, 2018 Share Posted May 26, 2018 (edited) Wow - awesome. It has six channels right? Is there a noise channel? Meaning, could you get it to play some existing Midi tunes or are there not enough voices? Would love to see it play some old PC game stuff! Edited May 26, 2018 by chjmartin2 Quote Link to comment Share on other sites More sharing options...
decle Posted July 28, 2018 Author Share Posted July 28, 2018 A few pictures of IMDI v0 #1: As I hope to illustrate in due course, it turns out that IMDI has uses beyond MIDI. Wow - awesome. It has six channels right? Is there a noise channel? Yes, the combined Intellivision and ECS has 6 square wave "tone" voices and two semi-dependent white noise channels. Meaning, could you get it to play some existing Midi tunes or are there not enough voices? Would love to see it play some old PC game stuff! Yes, you can get the Intellivision to play existing MIDI tunes and typically 6 voices can give a reasonable rendition. For example: You don't need IMDI to do this. Popcorn runs on a standard Intellivsion, with optional ECS, and was constructed from an internet sourced MIDI file using the MusoCheat toolset*:It should be noted that, because the AY-3-891x only supports square wave output, it is not as flexible as Commodore's SID, which can vary its pulse duty cycle and also generate triangle and sawtooth waves. At the moment the definition of "instruments" within MusoCheat is even more limited (noise channels are not supported and you can only specify a rate of amplitude decay). As a consequence, everything tends to sound a bit "plinky-plonk", but if you go for faster tunes it sounds OK. I hope to upgrade this as part of the work to construct a more comprehensive synthesizer for IMDI.Speaking of which, I really must stop procrastinating and start work on replacement for Joe's Simple Synthesizer.Cheersdecle*Of course MusoCheat is not the first MIDI to Intellivision converter. Whilst working for INTV Dave Warhol wrote one:"By the late 1980s, most music synthesizers could output files compatible with the MIDI standard. Dave wrote a translator to turn MIDI files directly into Intellivision music code. Its first use was on Steve Ettinger's game Deep Pockets: Super Pro Pool & Billiards. George Sanger, commissioned to provide music for the game, selected blues pianist Jimmy Martin to improvise this piece on a MIDI keyboard. Dave's translator turned the MIDI output into Intellivision code that perfectly captured Jimmy's live performance, and in a fraction of the time it would have taken to program by hand.Unfortunately, INTV closed its doors in 1991 without releasing Deep Pockets. No other music was translated from MIDI to Intellivision."I must remember to add this tid-bit to the next Development Tools Doc update.I also suspect that JoeZ might have used a MIDI converter when putting together his "Song Player" titles in 1999. 4 Quote Link to comment Share on other sites More sharing options...
+cmart604 Posted July 29, 2018 Share Posted July 29, 2018 Well that is seriously cool and it must be said...the packaging is sexy AF as the kids say. ? I'm in! ? Quote Link to comment Share on other sites More sharing options...
intvnut Posted July 30, 2018 Share Posted July 30, 2018 I also suspect that JoeZ might have used a MIDI converter when putting together his "Song Player" titles in 1999. No reason to suspect. I did exactly that, by tweaking PlayMidi to output note events, and then running it through some code I had initially developed for 4-Tris. My converter output specialized records that were ready-to-load in the PSG, as opposed to interpreting MIDI events on the Intellivision, though. I didn't have a sense yet how many cycles I really had to work with so I opted to preprocess as much as I could off-line. Another beneficial side effect of the process is that it made it easy to "channel steal" for sound effects, by blocking writes to certain registers with a simple bitmap. Now to go beef up Simple Synth with some nice effects. :-) 1 Quote Link to comment Share on other sites More sharing options...
+KylJoy Posted August 20, 2018 Share Posted August 20, 2018 Me want! Quote Link to comment Share on other sites More sharing options...
blainelocklair Posted January 11, 2019 Share Posted January 11, 2019 Hi decle! Please forgive me if I've overlooked it. Is there a link to this product to purchase it? Is it just a "build your own" kind of thing? I have an original Inty II Synth, but having MIDI capabilities to hook up my much newer controller would be very cool. Amazing work you've done on this! Thanks, Blaine Quote Link to comment Share on other sites More sharing options...
decle Posted April 11, 2019 Author Share Posted April 11, 2019 Hey guys,For the past six months I've been distracted by other projects and this thread has been neglected. However, recently I have had a chance to put a bit of work into the first stage of sINThY, the software synthesizer for IMDI: This attempts to follow the principles of some of the low end analogue synths such as the Korg Monotron or Volca Keys (before you get your hopes up, I think the lack of a VCF to control the fundamental waveform limits what can be done). If you fancy giving it a go for yourself here is the ROM, along with a keyboard hack file that makes things much easier when using JzIntv: sinthy-20190411.zipAs a non-musician, I'd be very interested in feedback from the musos out there. I feel as though I'm struggling to come up with "interesting" modulations.Cheersdecle 3 Quote Link to comment Share on other sites More sharing options...
blainelocklair Posted April 11, 2019 Share Posted April 11, 2019 Hi decle! sINThY is really coming along nicely. I think the idea of trading some of the polyphony voices for the chance to add to the richness of the sound is a neat idea. It would kind of be like the analog synths that use more than one oscillator to produce unique sounds. I don't have a better name for it, but I call it the "dirty synth" sound. It's where more than one oscillator is used out of tune and sawtoothed to create a very strong, rich sound. Might be difficult with the Inty because things come out natively as square waves. Something to look into, at least. I think your work on sINThY is amazing, as is all of your work in the Inty realm. Thanks for what you do! - Blaine 1 Quote Link to comment Share on other sites More sharing options...
+nanochess Posted April 11, 2019 Share Posted April 11, 2019 It's extremely difficult to generate modulations on the AY-3-8914. So far I've found certain tricks to achieve this. One of these is to play with the volume to get a kind of different instruments using only a single channel. There are two tools available for playing with a single channel: 1. Moving the volume. 2. Moving the frequency. Typically a piano attacks, decays and sustain. I need to resort to explaining with code examples: ; ; Generates a bass ; _bass_instrument: PROC SLL R3,2 ; Lower 2 octaves ADDI #_bass_volume,R1 MVI@ R1,R1 ; Bass effect IF DEFINED intybasic_music_volume B _global_volume ELSE JR R5 ENDI ENDP _bass_volume: PROC DECLE 12,13,14,14,13,12,12,12 DECLE 11,11,12,12,11,11,12,12 DECLE 11,11,12,12,11,11,12,12 ENDP ; ; Generates a piano ; R3 = Frequency ; R1 = Waveform position ; ; Output: ; R3 = Frequency. ; R1 = Volume. ; _piano_instrument: PROC ADDI #_piano_volume,R1 MVI@ R1,R1 IF DEFINED intybasic_music_volume B _global_volume ELSE JR R5 ENDI ENDP _piano_volume: PROC DECLE 14,13,13,12,12,11,11,10 DECLE 10,9,9,8,8,7,7,6 DECLE 6,6,7,7,6,6,5,5 ENDP ; ; Generate a clarinet ; R3 = Frequency ; R1 = Waveform position ; ; Output: ; R3 = Frequency ; R1 = Volume ; _clarinet_instrument: PROC ADDI #_clarinet_vibrato,R1 ADD@ R1,R3 CLRC RRC R3,1 ; Duplicates frequency ADCR R3 ADDI #_clarinet_volume-_clarinet_vibrato,R1 MVI@ R1,R1 IF DEFINED intybasic_music_volume B _global_volume ELSE JR R5 ENDI ENDP _clarinet_vibrato: PROC DECLE 0,0,0,0 DECLE -2,-4,-2,0 DECLE 2,4,2,0 DECLE -2,-4,-2,0 DECLE 2,4,2,0 DECLE -2,-4,-2,0 ENDP _clarinet_volume: PROC DECLE 13,14,14,13,13,12,12,12 DECLE 11,11,11,11,12,12,12,12 DECLE 11,11,11,11,12,12,12,12 ENDP ; ; Generates a flute ; R3 = Frequency ; R1 = Waveform position ; ; Output: ; R3 = Frequency ; R1 = Volume ; _flute_instrument: PROC ADDI #_flute_vibrato,R1 ADD@ R1,R3 ADDI #_flute_volume-_flute_vibrato,R1 MVI@ R1,R1 IF DEFINED intybasic_music_volume B _global_volume ELSE JR R5 ENDI ENDP _flute_vibrato: PROC DECLE 0,0,0,0 DECLE 0,1,2,1 DECLE 0,1,2,1 DECLE 0,1,2,1 DECLE 0,1,2,1 DECLE 0,1,2,1 ENDP _flute_volume: PROC DECLE 10,12,13,13,12,12,12,12 DECLE 11,11,11,11,10,10,10,10 DECLE 11,11,11,11,10,10,10,10 ENDP Notice how each instrument has a waveshape using only the volume (the first 8 are the attack always in my player), the next 16 are the sustain phase. There is no decay phase, the player only mutes the channel. The clarinet instrument duplicates frequency to get another sound, the bass instrument lowers frequency by two octaves, while the flute instrument applies a kind of vibrato to frequency. Also it's limited to the frequency of video update. Still there are things that can be applied to generate surprising things like arpeggios (going upward with each key) or portamento (moving the frequency to the next key pressed) The way to get disco-like sounds is using the frequency of envelope and envelope shape (the envelope shape generates NES-like triangular shapes!!!). To align it with the playing frequency, you need to divide the note value by 8, 16 or 32 and round, but this doesn't align perfectly except for some carefully choosen bass notes. Moving the frequency of envelope by a few values can get some incredible sounds of distortion. Here is a good example of using the envelope for the bass. https://www.youtube.com/watch?v=9GqGjuj4mNA Sorry for my lenghty post but I had to write it before losing the inspiration, I would like to add some examples but I'm out of time. 2 Quote Link to comment Share on other sites More sharing options...
intvnut Posted April 12, 2019 Share Posted April 12, 2019 It's extremely difficult to generate modulations on the AY-3-8914. [...] The clarinet instrument duplicates frequency to get another sound, the bass instrument lowers frequency by two octaves, while the flute instrument applies a kind of vibrato to frequency. If you grab a copy of Carl Mueller's Sound Test, it can be instructive to watch the volume bars for each of the notes to reverse engineer some of the instruments. It's also interesting to note that the main target volume is fairly low, to leave a lot of headroom for percussive elements and note attack. On the flute in particular, the vibrato doesn't start right away. Rather, it starts something like a half-second into the note so that it only kicks in on sustained notes. So it's not just how much vibrato, but also when. 2 Quote Link to comment Share on other sites More sharing options...
+nanochess Posted April 12, 2019 Share Posted April 12, 2019 If you grab a copy of Carl Mueller's Sound Test, it can be instructive to watch the volume bars for each of the notes to reverse engineer some of the instruments. It's also interesting to note that the main target volume is fairly low, to leave a lot of headroom for percussive elements and note attack. Thanks for the tip. On the flute in particular, the vibrato doesn't start right away. Rather, it starts something like a half-second into the note so that it only kicks in on sustained notes. So it's not just how much vibrato, but also when. Yep, this is a cuasi-flute because I needed to make it different from the simple square wave and most songs play with speed of 7 to 10 with short notes. So the vibrato wouldn't be seen never. BTW talking about instruments, Kai Videogames also made his own instruments with the IntyBASIC player, it can be heard in Ninja Odyssey and TNT Cowboy videos. 2 Quote Link to comment Share on other sites More sharing options...
+nanochess Posted April 12, 2019 Share Posted April 12, 2019 Last and not least, Konami made amazing renditions of drums for Penguin Adventure. I should decode this some day (saying same since 20 years ago). https://www.youtube.com/watch?v=a-rZdXVhYu0 Quote Link to comment Share on other sites More sharing options...
carlsson Posted April 12, 2019 Share Posted April 12, 2019 Arnauld's tracker is fairly capable on getting a lot out of the AY chip, at least decent drums. These two songs are intended to be played with the ECS enabled (jzintv -s1) butterfly3.rom voyage2.rom 1 1 Quote Link to comment Share on other sites More sharing options...
decle Posted April 13, 2019 Author Share Posted April 13, 2019 (edited) Hey Guys,Thanks for all your thoughts, pointers and examples. It is much appreciated. I hope that I can put together something that will enable the construction of "instruments" as rich as these, whilst still being accessible to musicians and programmers.So it looks as though most of the other AY-3-841x work takes a more "sample" based approach than I have. Instruments seem to be defined as a sequence of volume and pitch variations that are blasted as the PSG. Taking the IntyBASIC implementation as an example, the instruments are defined using 24 volume and optionally 24 pitch samples: Although Oscar describes the first 8 samples as being "attack" and last 16 as "sustain", by my reading of the code it might be better to describe the first 16 samples as being the "setup" and the final 8 as the "loop", to use Arduino terms. The first phase is a one-shot and, if reached, the second is repeated until the note finishes. I've separated the two phases in the plots above.The IntyBASIC implementation is also really useful in highlighting a couple of differences in how sINThY is implemented.The most obvious is that the sINThY "instrument" definition is abstracted into 10 values, rather than 24 or 48 samples. I hoped the result is more intuitive to musicians, but it comes at the cost of some flexibility in what can be generated. So, the obvious question, is this more intuitive route and is the loss of flexibility a price worth paying? Or should I be using the more common sample based approach to define envelopes?Next, if we look at the way in which IntyBASIC handles pitch vibrato we see that the amount of period change is constant with the pitch of the note. This means that vibrato is stronger at high notes than low notes, most clearly heard on the clarinet, for example in the extreme: DATA 60 MUSIC C2X MUSIC S MUSIC - MUSIC C7 MUSIC S MUSIC - MUSIC REPEAT Because sINThY allows greater change in pitch than the native IntyBASIC instruments (up to +/- 2 tones), more work has gone into keeping this change constant across the range of notes played, although I'm still not happy with the results. Am I correct to try to manage the change in pitch in this way? Currently the pitch change is a nasty mathematical adjustment of the period value. This leads to the waveforms being musically asymmetric and not necessarily peaking at chromatic tones. It might be better to calculate nearest periods for all the eighth-tones as we currently do for semi-tones and make the pitch shift of a whole number of these. So a triangle wave of amplitude 8 would start at the note played, go up a full tone then down to a full tone below the note played and return, with each change in frequency being an eighth-tone. What do you think, would this be more "musical" and make more sense to a musician?Finally, we have the handling of volume, somewhere I think the way sINThY is implemented might make things easier. Because sINThY has to handle velocity sensitive input it treats loudness as an attenuation from a loud baseline, rather than volume relative to silence. This makes it easy to apply volume envelopes to the quieter input without them becoming silent early, and therefore, shortening notes. The only downside at the moment seems to be that the "sustain" parameter has the opposite sense to that normally used (being the attenuation from the maximum attack rather than the volume of the sustain phase).As always, your thoughts, opinons and experience would be much appreciated.Cheersdecle Edited April 13, 2019 by decle 2 Quote Link to comment Share on other sites More sharing options...
+Lathe26 Posted April 13, 2019 Share Posted April 13, 2019 decle, this is some awesome work. I've mentally kicked around the idea of doing a similar project, but you've already gone further with IMDI than I would have. Some questions for you: 1. Have you looked into using the CC3's serial port as an alternative to the IMDI hardware? The serial port's baud rate is very configurable on the CC3 so MIDI's baud rate should be easy. A small amount of external hardware would still be necessary to adapt the CC3's voltage levels to MIDI voltages. The biggest problem with using a CC3 is that these days they are expensive on eBay. 2. Have you looked into a table-driven sine wave as an alternative to the triangle wave? Maybe it will give a slightly different effect. Quote Link to comment Share on other sites More sharing options...
+DZ-Jay Posted August 14, 2020 Share Posted August 14, 2020 I just caught up with this thread (it's been in my reading list for while), so pardon the belated response. On 4/13/2019 at 7:09 AM, decle said: Hey Guys, Thanks for all your thoughts, pointers and examples. It is much appreciated. I hope that I can put together something that will enable the construction of "instruments" as rich as these, whilst still being accessible to musicians and programmers. So it looks as though most of the other AY-3-841x work takes a more "sample" based approach than I have. Instruments seem to be defined as a sequence of volume and pitch variations that are blasted as the PSG. Taking the IntyBASIC implementation as an example, the instruments are defined using 24 volume and optionally 24 pitch samples Arnauld's tracker is modelled after old-school microcomputer music software, like Fast Tracker, etc., in that it treats the musical score as a sequence of patterns, and each pattern is comprised of a set of events (i.e., tracker frames) occurring at periodic times. This is similar to how "MIDI" format songs work. The main difference between "MIDI" and "MOD" (i.e., module) trackers like Fast Tracker and Arnauld's, is that they also define a set of instruments. In the case of classic modules, these were PCM samples; on the Intellivision, we use the PSG to synthesize the instruments. There are two kinds of instruments supported in the Intellivision Music Tracker: musical and drums. The distinction is made mostly because the former relies on pitch and amplitude modulation, and plays at discrete semi-tones on the chromatic scale; while the latter are treated more like sound effects, where you can assign arbitrary frequencies, mix in noise, and control the parameters of each on each tracker frame. MUSICAL INSTRUMENTS: Musical instruments are a combination of an envelope, and pitch and volume modulation parameters. Envelope: Instead of using the common 4-stage "ADSR" envelope, the tracker offers a 64-point description of the volume changes over time. Each point represents the volume assigned to a sound channel at a given frame in the length of a note. You can visualize it as a graph of the changes in volume over time, for instance: ATTACK DECAY SUSTAIN RELEASE .--------|---------------------|-------------------------------------------------------|---------------------------------------| F -|. . . . # . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . E -|. . . . # # # . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . D -|. . . . # . . # # . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C -|. . . . # . . . . # # . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B -|. . . # . . . . . . . # # . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . V A -|. . . # . . . . . . . . . # # . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . O 9 -|. . . # . . . . . . . . . . . # # # # # # # # # # # # # # # # # # # # # # # # # # # # # . . . . . . . . . . . . . . . . . . . . L 8 -|. . . # . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . # . . . . . . . . . . . . . . . . . . . . U 7 -|. . # . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . # . . . . . . . . . . . . . . . . . . . M 6 -|. . # . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . # . . . . . . . . . . . . . . . . . . . E 5 -|. . # . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . # . . . . . . . . . . . . . . . . . . 4 -|. . # . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . # . . . . . . . . . . . . . . . . . 3 -|. # . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . # # . . . . . . . . . . . . . . . 2 -|. # . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . # # # . . . . . . . . . . . . 1 -|# . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . # # # # # . . . . . . . 0 `+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+------ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1 3 7 B F E E D D C C B B A A 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 7 5 4 3 3 2 2 2 1 1 1 1 1 0 0 0 0 0 0 0 The speed of the envelope can be controlled by configuring the number of points to process per frame. You can select from 1 (every frame) to 4 (every fourth frame); essentially quantizing the envelope at various sampling rates. Pitch Effects: This is a four-step "arpeggiator," essentially functioning as a cheap LFO. You can define the shape of the LFO by selecting how many half-tones to go up and down on each step. These changes are then applied throughout the length of a note at the machine's display rate (e.g., NTSC=60Hz). This is typically used for tremolo effect. It can also be used for fast arpeggios, like is done in many 8-bit machines, although it's a bit limited with only 4 steps. Vibrato: The vibrato offers only a single parameter, letting you select the amplitude of the effect's modulation relative to the playback volume of the channel. You can choose from no vibrato, high (+/- 1 amplitude), medium (+/- 1/2 amplitude), and low (+/- 1/4 amplitude). The vibrato is also applied at the machine's display rate throughout the length of a note, although it runs through 8 steps, in a pseudo-triangle shape. It turns out that these simple configurations, which simplify the implementation greatly, afford an exceedingly impressive amount of expression in the way the instruments are synthesized. --- If I were to change anything on Arnauld's tracker, it would be support for more complex shaping of the modulation effects. I like being able to "draw" the envelope of a note as a graph, which is how we always visualized ADSR in the past anyway. I always wished I could do the same for arpeggios and vibrato. To simplify usage, these could all be abstracted with a set of macros, where you could give a set of parameters (ADSR values perhaps?) to each ones and pre-calculating the values table from that. This would allow you to shape the tremolo and vibrato with another envelope, following the common "patching" paths used in old analog synths. Another feature I would add would be to parametized the frequency of the modulation, rather than having it always play at the same speed. To be honest, much of the complexity in using Arnauld's tracker lies in understanding the song data format. However, this could be abstracted with even more macros (or converted from other song formats) to simplify the interface. Quote ... Because sINThY allows greater change in pitch than the native IntyBASIC instruments (up to +/- 2 tones), more work has gone into keeping this change constant across the range of notes played, although I'm still not happy with the results. Am I correct to try to manage the change in pitch in this way? Yes. The way that the Intellivision Music Tracker handles this is by using a look-up table of pre-calculated amplitude values for modulation, tuned to each semi-tone (actually 30% of each semi-tone). This follows the way that instruments sound in real life. Quote Currently the pitch change is a nasty mathematical adjustment of the period value. This leads to the waveforms being musically asymmetric and not necessarily peaking at chromatic tones. It might be better to calculate nearest periods for all the eighth-tones as we currently do for semi-tones and make the pitch shift of a whole number of these. So a triangle wave of amplitude 8 would start at the note played, go up a full tone then down to a full tone below the note played and return, with each change in frequency being an eighth-tone. What do you think, would this be more "musical" and make more sense to a musician? For what it's worth, that's similar to the way Arnauld devised his vibrato effect: the amplitude change per semi-tone is pre-calculated in a table to be ~30% of the note's pitch, then that value is scaled in a ramp to 1/4, 1/2, and 1/1, then back down again, to shape the modulation. --- All that said, there's yet another option you may want to explore, and it's the way some modern(ish) 8-bit music trackers for chiptunes have been implemented. Take a look at one called GoatTracker. On its surface, it appears to be absurdly strange and complicated, but upon deeper inspection, it is basically the same as the other "event-based" trackers, except that it's fully programmable using a specialized "scripting language." Basically, similar to Arnauld's tracker, each channel is given a series of "note events" specifying the note, volume, instrument, and various other parameters. Then, in addition to that, you can specify on any event a call to a small "program" where you treat the sound device's parameters as variables, and can alter them directly over time, using counters, etc. to simulate LFOs. You can chain a few of these "programs," where one modulates the next, simulating the "patches" of an old school synths that alter the signal as it passes through various components. The beauty of this is that the "built-in" features themselves (envelopes, instruments, pitch/amplitude modulation, arpeggiators, etc.) are all implemented in this programmatic way, giving you full flexibility to alter them. It's a rather neat idea. I see it as a low-level virtual machine implementing the driver for each oscillator, with the tracker and instrument being a high-level application implemented on top of it. Once again, the complexity can be abstracted with a high-level interface (either programmatic or user), in a similar fashion to the way that a high-level language abstracts the low-level machine code. Anyway ... off to dream some more. -dZ. 3 Quote Link to comment Share on other sites More sharing options...
+DZ-Jay Posted August 14, 2020 Share Posted August 14, 2020 By the way, the above is written from my memory working on Arnauld's tracker, but it's been a few years so some of the descriptions of the inner workings would be wrong. -dZ. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.