Well, luckily i've been able to somewhat fix this issue myself.
Also, attached is a little tune I started to cover to get more familiar with writing music for Retronitus. I'm thinking of finishing the cover, because why not?
(Silly forum! Can't directly upload MKV...)
A virtual cookie to anyone who recognizes (the beginning of) the tune, I guess.
Also, here is an mp3 (once again, in a zip) of what I've got now. This is about 50% done. If anyone has any ideas on how to improve the instruments, I'd like to hear them.
Here's the percussions. They're on the triangle channel, as that one is seemingly better at making noise than the dedicated noise channel.... All of my instruments however are kindof bad, except for the snare, which is ripped straight from NearlyThere.spin
TRI_PREC 'Triangly Percussion
long JUMP, -1 *STEPS ''TRG_0 (unused)
long JUMP, 15 *STEPS ''TRG_1 (Shaker)
long JUMP, 24 *STEPS ''TRG_2 (cymbal)
long JUMP, 37 *STEPS ''TRG_3 (low snare)
long JUMP, 0 *STEPS ''TRG_4 (unused)
long JUMP, 0 *STEPS ''TRG_5 (unused)
''TRG_6 (Kick)
''Kick/Base
long SET|MODULATION, $F0FFF000|$100
long SET|VOLUME, $FF000000
long SET|FREQUENCY, $F96F96F9
long SET|ENVELOPE, $00F80A00|$080
long MODIFY|FREQUENCY|(5 *wait_ms), $B2CF9020
long SET|FREQUENCY, $003A02A0
long SET|VOLUME, $FF000000
long SET|ENVELOPE, $FFFCA200|$008
long MODIFY|FREQUENCY|(200 *wait_ms), $00000000
long SET|VOLUME, $00000000
long JUMP, -1 *STEPS
''Shakery something i don't know
long SET|MODULATION, $FFFFF000|$100
long SET|VOLUME, $AF000000
long SET|ENVELOPE, $00059800|$008
long SET|FREQUENCY, $04444444
long SET|VOLUME, $6F000000
long MODIFY|FREQUENCY|(90 *wait_ms), $B2CF9020
long SET|ENVELOPE, $FF57F400|$008
long MODIFY|FREQUENCY|(10 *wait_ms), $B2CF9020
long SET|VOLUME, $00000000
long JUMP, -1 *STEPS
'' cymbal
long SET|MODULATION, $FFFFF000|$100
long SET|VOLUME, $FF000000
long SET|FREQUENCY, $024C24C2
long SET|ENVELOPE, $00A80A00|$008
long MODIFY|FREQUENCY|(4 *wait_ms), $B2CF9020
long SET|FREQUENCY, $04444444
long MODIFY|FREQUENCY|(2 *wait_ms), $FFEB33C8
long MODIFY|FREQUENCY|(9 *wait_ms), $EFFD6FC0
long MODIFY|FREQUENCY|(10 *wait_ms), $EFFFE4A8
long SET|VOLUME, $FF000000
long SET|ENVELOPE, $FFFE9800|$001
long MODIFY|FREQUENCY|(600 *wait_ms), $B2CF9020
long SET|VOLUME, $00000000
long JUMP, -1 *STEPS
'' snare
long SET|MODULATION, $FFFFF000|$100
long SET|VOLUME, $FF000000
long SET|FREQUENCY, $024C24C2
long SET|ENVELOPE, $00A80A00|$008
long MODIFY|FREQUENCY|(4 *wait_ms), $B2CF9020
long SET|FREQUENCY, $03483483
long MODIFY|FREQUENCY|(2 *wait_ms), $FFEB33C8
long MODIFY|FREQUENCY|(9 *wait_ms), $FFFD6FC0
long MODIFY|FREQUENCY|(10 *wait_ms), $FFFFE4A8
long SET|VOLUME, $8C000000
long SET|ENVELOPE, $FFFCA200|$008
long MODIFY|FREQUENCY|(250 *wait_ms), $B2CF9020
long SET|VOLUME, $00000000
long JUMP, -1 *STEPS
Also, I'm not quite happy with the brass thingy. It can be a little grating, can't it?
It is played by two Square channels, one octave apart: SQW_BRASS1 is played by the higher pitched channel.
SQW_BRASS1 'Squeaky Brass (could use some improvement!)
long SET|VOLUME, $7F100000
long JUMP, 1 *STEPS
SQW_BRASS2
long SET|VOLUME, $4F100000
long SET|MODULATION, $00000000|$119
long SET|MODULATION, $00000600|$000
long SET|ENVELOPE|(5 *wait_ms), $001A0280|$008
long SET|ENVELOPE, $FFFFDC00|$008
long MODIFY|FREQUENCY|(66 *wait_ms), $00000020
long SET|ENVELOPE, $00002400|$008
long MODIFY|FREQUENCY|(66 *wait_ms), $FFFFFFE0
long JUMP, -5 *STEPS
I'm just transcribing from a MIDI by manually entering the note deltas and pattern sequences into a Spin file. I think I will post my code within the next 24 hours, so you'll be to see what that looks like.
However, I do use composer for making instruments. However, i was unable to find a version of GCC/GAS that could compile a new Player.binary, so I had to resort to hex editing to change the audio pins to match my board....
However, I do use composer for making instruments. However, i was unable to find a version of GCC/GAS that could compile a new Player.binary, so I had to resort to hex editing to change the audio pins to match my board....
This is my Retronitus cover/arrangement of "Alice in Wonderland" from the PC-98 game Touhou 5: Mystic square (although I based my cover on an expanded MIDI version, as I couldn't find a 1:1 transcription of the original.)
DOWNLOAD ALL THE FILES (SOURCE CODE, FLAC FILES AND VIDEO) HERE: https://www.mediafire.com/file/xod7bbtpopv6jmd/ALICEALL.7z/file
Retronitus is a software synthesizer by Johannes Ahlebrand that can run in a single core of the Parallax Propeller P8X32A chip. Thus, you could call it a real chiptune
For this tune, i slightly modified Retronitus to support simple panning and out-of-phase/surround mixing. However, to do this I had to reduce the sample rate.
I chose 64 kHz. I could have gotten away with a higher rate, but 64kHz is not only a nice 1.5 multiple of 48kHz, but also leaves me some headroom if I want to add further bloat to Retronitus.
Retronitus has 8 channels:
3x Square wave with PWM - drawn as green in the video, all panned to the center.
3x Sawtooth wave with strange modulation - drawn as white, red and yellow in the video, panned to the left, right and surround-back, respectively.
1x Triangle wave - drawn as purple in the video, panned to the center.
1x LFSR Noise - Not used in this tune.
The oscilloscope view was created by muting all channels but one and then recording just that channel.
Repeat this for all 7 channels (the NOISE channel isn't used here), of course.
Then I used a fork of SidWiz2 (available here: https://github.com/Pigu-A/SidWiz/releases ) to create a video from them.
The audio you hear, however, was of course recorded in one go and in no way post-processed (except for normalization).
Also, the data for this tune takes only 4028 bytes! Less than 4K! The Retronitus synthesizer is another 1700 bytes, though.
Also, i've attached the source code to this post....
Yes, just a single cog and 4K of Hub RAM.... (except the scope video of course, which was rendered on a PC)
Amazing! Maybe I can use it to drive the speaker in the WordFire/Quby console. It's only monophonic though. Is there a way to mix everything down to a single pin? Actually, I suppose that would negate your good work of placing the instruments in a stereo field.
Getting it to run on the Quby should be as easy as ripping out the stereo mxing and just adding all the sound into one pin. However, channels that are only mixed to the left or right are only half as loud as ones mixed to the center or surround channel But it seems to sound better with all the channels mixed at the same volume? Whatever. Know what? I'm going to rig up a mono version for you real quick!
Here you go! This is my tune and mono 64kHz Retronitus (with half of the surround mixing code still in there....) preconfigured for the Quby. It should(tm) just work. Unless there is some guff that needs to be done to enable the amplifier?
Here you go! This is my tune and mono 64kHz Retronitus (with half of the surround mixing code still in there....) preconfigured for the Quby. It should(tm) just work. Unless there is some guff that needs to be done to enable the amplifier?
I have made a tool that can convert amiga mod files to Retronitus. All you have to do is to make Retronitus instruments that maps to each sample using the built in instrument editor. It kind of works for simple mod files without too much fx. It's still a very early version and it has got som bugs that needs to be fixed.
Here you go! This is my tune and mono 64kHz Retronitus (with half of the surround mixing code still in there....) preconfigured for the Quby. It should(tm) just work. Unless there is some guff that needs to be done to enable the amplifier?
I just tried this. All I did was compile it with the command "openspin main.spin" and then loaded the resulting binary. I hear a little crackling from the speaker but no music. Is there something else I need to do?
into main.spin before sound.start
I think that should enable the amplifier at full volume? Although that may be too loud?
You should prob. ask @JRetSapDoog about it...
into main.spin before sound.start
I think that should enable the amplifier at full volume? Although that may be too loud?
You should prob. ask @JRetSapDoog about it...
Well, that won't work!
the beeping loop leaves pin 21 high!
Just put a "outa[speaker_pin]~ " after the loop
Okay, that works. It doesn't sound anywhere near as good as your MP3. Maybe I should try this on a board with stereo output. What output circuit do you recommend?
I'd try setting FRQA to a different value. Maybe the speaker is being overdriven?
In terms of stereo circuit, this is what I used:
Although in retrospect, I'd increase the value of the highpass/AC-coupling capacitor to get better frequency response.
Note that I used "audio-grade" electrolytics for the 47uF ones and foil capacitors (=not microphonic) for the 10nF ones. Not sure if that really improves anything, but eh.
I'd try setting FRQA to a different value. Maybe the speaker is being overdriven?
In terms of stereo circuit, this is what I used:
Although in retrospect, I'd increase the value of the highpass/AC-coupling capacitor to get better frequency response.
Note that I used "audio-grade" electrolytics for the 47uF ones and foil capacitors (=not microphonic) for the 10nF ones. Not sure if that really improves anything, but eh.
Thanks for the circuit. What value coupling capacitor would you use?
Comments
Also, attached is a little tune I started to cover to get more familiar with writing music for Retronitus. I'm thinking of finishing the cover, because why not?
(Silly forum! Can't directly upload MKV...)
A virtual cookie to anyone who recognizes (the beginning of) the tune, I guess.
But don't worry, it's almost done! And when it's done, I'll of course post the code.
Here's the percussions. They're on the triangle channel, as that one is seemingly better at making noise than the dedicated noise channel.... All of my instruments however are kindof bad, except for the snare, which is ripped straight from NearlyThere.spin
Also, I'm not quite happy with the brass thingy. It can be a little grating, can't it?
It is played by two Square channels, one octave apart: SQW_BRASS1 is played by the higher pitched channel.
Can retronitus import some mod or other format?
However, I do use composer for making instruments. However, i was unable to find a version of GCC/GAS that could compile a new Player.binary, so I had to resort to hex editing to change the audio pins to match my board....
Should work with the version found here http://david.zemon.name:8111/project.html?projectId=PropGCC&tab=projectOverview&guest=1 or on my downloads page here https://www.maccasoft.com/downloads/
Best regards,
Marco.
(silly forum, youtube embed is borken: Here's a link in the meantime!)
Quoting the video description:
Also, i've attached the source code to this post....
I have made a tool that can convert amiga mod files to Retronitus. All you have to do is to make Retronitus instruments that maps to each sample using the built in instrument editor. It kind of works for simple mod files without too much fx. It's still a very early version and it has got som bugs that needs to be fixed.
I think that should enable the amplifier at full volume? Although that may be too loud?
You should prob. ask @JRetSapDoog about it...
the beeping loop leaves pin 21 high!
Just put a "outa[speaker_pin]~ " after the loop
In terms of stereo circuit, this is what I used:
Although in retrospect, I'd increase the value of the highpass/AC-coupling capacitor to get better frequency response.
Note that I used "audio-grade" electrolytics for the 47uF ones and foil capacitors (=not microphonic) for the 10nF ones. Not sure if that really improves anything, but eh.