ChromaTalk Archives: April 2001
- 2 Chromas to be sold
- JLCooper ChromaFace Manual
- Chromas on Ebay
- Sample "Subroutine" Patch (AKA, how to have your Chroma/Expander say "HELLO") (4)
- Chroma Soundconverters on Mac?!... (2)
- Screen Shot of DOS Editors?
- Chroma on eBay
2 Chromas to be sold
Papa Templeton · Sun, 1 Apr 2001 18:49:08 -0700
I've had the very good fortune of recently acquiring 2 Chromas: 1 Rhodes in very good shape for its age, which was used in the Rhodes factory for testing computer interfaces (retofitted with legs from a Rhodes 4-voice at the Rhodes plant), and one nonworking machine which is rough but marked as ARPCHROMA...it's complete minus one dual channel board (a diamond in the rough?). This package also included 2 original flight cases (which need foam), expression pedal, volume/effect pedal, computer interface, Chroma to MIDI, service manual, and some extranneous Chroma parts (yes, I was the one who got these parts from ebay awhile back....see last month's notices). I intend to sell this complete package for the best offer I receive over the next few weeks. I am located in New Hampshire but am willing to ship these items. For more information, please contact Pete at [e-mail address removed]. and thank you!!
JLCooper ChromaFace Manual
Chris Ryan [21030691] · Mon, 9 Apr 2001 20:46:04 -0700
I've posted the manual for the JLCooper ChromaFace MIDI retrofit.
Thanks to Dave Clarke for providing a copy.
Chromas on Ebay
David Clarke [21030085++] · Tue, 17 Apr 2001 19:11:46 -0400
I wouldn't normally re-post Ebay listings, but since traffic has been quite light as of late, I thought these two would be OK:
RHODES CHROMA CLASSIC SYNTH.
Item #1424673627
Ends Apr-24-01 04:34:52 PDT
Currently at $1,100.00
Located in Belgium
RHODES CHROMA SYNTHESIZER/W ANVIL CASE
Item #1423319306
Ends Apr-21-01 03:19:23 PDT
Currently at $510.00 (reserve not met)
Located in USA (SF)
Sample "Subroutine" Patch (AKA, how to have your Chroma/Expander say "HELLO")
David Clarke [21030085++] · Sun, 22 Apr 2001 20:19:46 -0400
The designers of the Chroma included an ability to load and run code via the cassette interface. Specifically, there is a special type of cassette packet that can place external code into the Chroma. The "branch subroutine" option (Set Split 25) then allows that code to be run.
While this functionality is present, we really don't have any examples of it being used. That being the case, I've put together a short sample/demo.
The attached .WAV file [hello.wav, 12K] contains a single subroutine packet that will print the word "HELLO" to the small LED display on the Chroma. (A duplicate copy of this file is included in 22050 Hz, mono, signed raw format as hello.snd [20K]).
To run the subroutine:
- Press the "Load One" button the Chroma.
- Send the attached .WAV (or .SND) file to the Cassette input on the Chroma. The LEDs should blink, and then you'll see "Subr" in the LED readout. (This will tell you that a Subroutine packet has just been read.)
- Press "Set Split 25" (This will run the Subroutine you just loaded, printing HELLO in the Data Readout window).
Note: In the above, you can also push "Load All" The subroutine will still load, but you don't get the 'Subr' message in the display.
For those of you interested, the following is the actual assembly code which is loaded:
34 02 pshs A ; Save scratch variable on stack 86 00 LDA #$0 ; Code for a blank 97 20 STA $0020 ; Clear first LED spot 97 26 STA $0026 ; Clear last two spots 97 27 STA $0027 86 37 LDA #$37 ; Letter "H" 97 21 STA $0021 86 4F LDA #$4F ; Letter "E" 97 22 STA $0022 86 0E LDA #$0E ; Letter "L" 97 23 STA $0023 97 24 STA $0024 86 7E LDA #$7E 97 25 STA $0025 ; Letter "O" 35 82 puls A, PC ; Restore original A value and return
If you want to confirm this is all that gets loaded, you can run the "TAPE2TXT" utility on the .SND file (with the DEBUG option turned on). When you do, you'll see the decimal versions of the hex opcodes above.
If you're so inclined, you could insert different code - maybe some code to create a "random patch" feature for instance.
Enjoy!
Dave
Eirikur Hallgrimsson [21030467+] · Sun, 22 Apr 2001 23:50:18 -0400
Yikes, the reprogrammable Chroma!
Very interesting, Dave. The hacker in me wants to know where this code gets loaded, and how much space there is there. Obviously it's in the main processor's memory, but just how big a routine could one fit in there? I suspect there's just enough memory left over to make sure that the machine doesn't run out of buffer space-rounded up to an even number of chips :-)
I don't know about a random patch generator. They are non-trivial programs--at least if you want more than a small fraction of the results to produce audible sound. Perhaps a morph routine (ala Galaxy) that took two patches as inputs and convolved (averaged?) the parameter values to get a new patch would be small enough. Then we need some way to designate the parents, which would be adding code just to do the UI.
Duh. I just remembered the brain-dead way to do a random patch generator. For each parameter, take it from a randomly selected patch in the current bank. That's pretty darn small, codewise, given a source of randomness.
Oh, am I having ugly thoughts now! Hideous distorted sounds caused by audio-rate modulation of parameters. I can't think of a way to get a digitized waveform "played" but one could definitely do things that would not sound like a Chroma.
Jeffrey D. McEachin [21030073+] · Mon, 23 Apr 2001 00:15:27 -0700
At 11:50 PM 4/22/01 -0400, Eirikur Hallgrimsson wrote:
I don't know about a random patch generator. They are non-trivial programs--at least if you want more than a small fraction of the results to produce audible sound.
I wrote one for the JP6, in 8051 machine code, no less, and I didn't think it was that big a deal. The trick was applying a random number generated w/ an exponential decay distribution to certain patch parameters, such as VCA LFO modulation depth, that you usually want to be a low value, but occasionally might want to be high. Though it might sound frighteningly complex on a chip w/ limited math capabilities, this exponential decay distribution was done w/ simple math. I generated an 8 bit random number, then randomly shifted it right (dividing it by 2) 6 times. I did it 6 instead of 7 times (which would have yielded a truely exponential distribution), because it sounded better. :) The end result is, the ms bit has a 1 in 128 chance of being set, the next bit 1 in 64, 1 in 32, 1 in 16, 1 in 8, 1 in 4, 1 in 2, and 1 in 2 for the ls bit.
JDM
David Clarke [21030085++] · Mon, 23 Apr 2001 18:08:02 -0400
Eirikur Hallgrimsson wrote:
Very interesting, Dave. The hacker in me wants to know where this code gets loaded, and how much space there is there. Obviously it's in the main processor's memory, but just how big a routine could one fit in there?
The "subroutine" packet gets stored in the cassette buffer, so in Rev. 14 FW that would mean it sits starting at $0141 and extends upwards to $0240 (the safe buffer sits at $0241). That would give you about 255 bytes. Through some judicious use of existing functions in the FW, you could do quite reasonable things ...
While I'm sure it's more trouble than it's worth, if you really wanted/needed more space, then could write a little code-loader which would say take up 20 bytes or so. The purpose of this code could be to copy the following 235 bytes elsewhere in RAM.
Using this technique (and multiple subroutines) you could assemble a larger piece of code in RAM (there's another 1000 bytes of RAM avail. up around 0x0c5a, if you're willing to limit yourself to only a few "sequencer" notes). Your last subroutine could then branch to/from this code, as required.
...Perhaps a morph routine (ala Galaxy) that took two patches as inputs and convolved (averaged?) the parameter values to get a new patch would be small enough.
This would be quite easy, and considering you'd effectively be doing the same operation to all parts of the patch (get two values, average, store), it wouldn't take up much code at all.
Then we need some way to designate the parents, which would be adding code just to do the UI.
Actually - we could make use of pre-existing program defines in the Chroma. For instance, Patch 1 could be the "current" patch (the one shown in the display) and Patch 2 could be the link program, the 'sequence' patch, the one in the safe buffer, etc.
Oh, am I having ugly thoughts now! Hideous distorted sounds caused by audio-rate modulation of parameters. I can't think of a way to get a digitized waveform "played" but one could definitely do things that would not sound like a Chroma.
If anyone out there really wanted to hack some 6809 assembler code for the Chroma, I could probably provide a mini utility which would convert a 6809 binary file (assembled code) into a properly formatted Subroutine packet (in .SND format) ready for loading into the Chroma ...
Chroma Soundconverters on Mac?!...
Fredrik Beckmann · Mon, 23 Apr 2001 08:32:59 +0200
Hi List!...
I dont know if this subject has allready been handled, but is there any aplications to convert Chroma Soundbanks for Mac like those for PC?!...
:-) Fredrik
Chris Ryan [21030691] · Sun, 22 Apr 2001 23:55:26 -0700
I have a friend who's working on it ... he's pretty busy, though, so it may take a while.
My friend never got to the project; I hope to include Dave's patch conversion routines in my Chroma app for Mac OS X.
Screen Shot of DOS Editors?
Chris Ryan [21030691] · Sat, 28 Apr 2001 23:30:22 -0700
Can anyone send me a screen shot of Tim Godfrey's Chroma Editor/Librarian, and/or James Moyer's DOS Chroma Programmer for PC?
Both can be downloaded from the [Editors & Librarians: MS-DOS] page.
And, I did receive screen shots for both, which are at the above page.
Chroma on eBay
Chris Ryan [21030691] · Sun, 29 Apr 2001 00:27:26 -0700
"Power supply and eight sound cards: in good shape. Slight damage on 9 volt battery backup board, otherwise sound. Voice cards in good shape. A good buy for parts or swapping parts if you own a Chroma."
Item #1425605892
[URL removed]
Current bid: $425 (reserve not yet met); ends May 1.