I always enjoy reading your posts, even if I only understand a small fraction of it. I still use SIDCOG regularly, just to play dump files and impress my mates
Well, if they are Arduino users, that's understandable.
Thank you for the Retronitus description. This is how I understand it:
The SynthEngine: -> generates the sound according parameters
SoundListInterpreter: -> sets the synth parameters and change them over time (like Envelope/LFO), implemented as interpreted instructions for a virtual mini-CPU.
something like a "preset / instrument" in a traditional synth
SoundListTrigger: -> something like a "patch" on a traditional synth, that combines several "presets"
MusicEngine: -> the sequencer that plays the "patches"
Mostly right!
I'm not quite sure if the terms "patch" and "preset" can be seen as different things. Isn't a preset a patch that is inbuilt or default??
The SoundListTrigger can be seen as a "note trigger" and at the same time a "patch chooser". Every time a non-zero value is written to any of the 8 SoundListTriggers a "note on" is triggered. The non-zero value should be a pointer to a valid instrument/patch/SoundList somewhere in hub memory. As soon as Retronitus finds a value in one of it's SoundListTriggers it will set the program counter of the corresponding SoundListInterpreter to that value. Then it writes back a zero to the SoundListTrigger, so it's ready for the next "note trigger".
This way up to 8 different patches can be played at once.
I can see that this is very flexible. My concern is that it is too complex to program sounds and music. But I guess that's why you have made the PC application to simplify it. Is there some way to import a common sequencer format, like MIDI standard files or perhaps a Tracker format in that software, for the notes to play?
Andy
It basically works the same way as most "play routines" on C64, Atari 800, NES.... etc..
Of course it's hard to write a song or patch directly with hex values in Propeller Tools, but that can be said of any other music format.
When my sequencer is finished it will be a breeze composing music, It will not be easy to create patches from scratch though, because then you must have a deeper understanding of how the synthesizer works. But I have created a graphical sound editor that is very easy to work with IF you KNOW how the synth works. And it will be very easy to load instrument patches from disk and include into a song; So it's just up to me to provide a vast library of patches for others to use.
When you have got your "binary blob" containing tunes and sound FXs for Retrontius, it's as far as I know the easiest way for the end user to include sound in their Propeller application.
That's all that is needed to play a tune and it runs completely inependant in a single cog.
Then you can call "Retronitus.playSoundFx(addressToSoundFx, channelNumber)" to play sound FXs while the tune is playing.
I am very interrested to learn how to create such a niece sound system by myself by understanding the whole thing. Do you have any books recommendation ?
Retronitus isn't by any means a "standard synthesizer" that could be understood by reading a book.
It's heavily limited/"unlimited" by the strengths/weaknesses of what a single cog in the Propeller can do.
It wouldn't fit any other CPU on the market. On an AVR I would have come up with something that would have sounded totally different. (probably)
In other words!
Retronitus is a perversion based on hacks, shortcuts and all kinds of trickery.
To learn more about general sound synthesis, you could start off by learning conepts such as:
* Phase accumulation
* DDS
* Basic waveforms
* Amplitude envelope
* Pulse width modulation
* Amplitude modulation
* Frequency modulation
* Phase distortion modulation
* Subtractive synthesis
I think these two resources are way cool! So is Retronitus.
Often I have to come up with sounds for a project or a product. With what I've learned here, future sounds are going to be a lot less ad hoc and a lot more professional.
I'm sorry but I havn't been giving this any attention since my last post. The engine is pretty much done. What prevents it from being used, is the lack of official tools to make music and sound fx. I have unfinished tools on my harddrive, but I lack motivation to finish them at the moment. I do however encourage others to make tools. I will provide information on the music and fx format if there is interest.
I think it will fall off the main page because I'm not active and others seems to have lost hope in the project. Btw, Imagine what could be done on a P2 in single cog when it comes to sound generation. It has got 8x instruction rate, plus multiplication. Probably 20x the performance for things like this.
I found this thread while searching for a good way to add music to games. Retronitus seems perfect for my needs, however I can't find any precise documentation about how to write music and sound effects for it, all I can find are the binary files. I tried to reverse engineer the files using the assembler source code without any luck so far.
Ahle2, if you are still around, can you please publish the details on the music and effects instructions ?
I just stumbled on your comment after not reading the forum for like 3 months. Of course I can help you out. I can give you all the sources and documentation. I have not been doing anything on Retronitus for some years now. Do what you want with it!
That's great! I have the source code (found somewhere on this thread, maybe it was updated in the meantime) and managed to partially understand the commands for the effects / instruments but most of the bits are still unknown to me, so any documentation you have will be very welcome.
It's nice to see that so many forumistas are interested!
Here is the latest version of Retronitus with some raw music data in DAT sections to fool around with. I understand that it is not easy to reverse engineer the data formats, but you will have to wait a little bit more before I am back with more indepth information. (partly due to the fact that I can't seem to remember all the details my self )
Here are some notes that may be helpful
+ The instrument and SFX data is the same format
+ Each sound channel generates just one type of waveform (3 square, 3 saw, 1 noise, 1 triangle)
+ The sound channels are fixed to either right or left (all to the left in this version for some reason?!)
+ Each sound channel plays music data that is totally independant from the other channels (music is synced once when "hit play")
+ Sound FX can be triggered in a channel that currently is playing music, but it will get interrupted when a new note is played
+ The music data uses patterns, just like Protracker and Fasttracker, but each channel has got its own "positions"
+ Notes in a pattern uses a signed 5 bit delta format. The first note is absolute, the rest are relative
+ Each pattern can only have one instrument, but thanks to the dynamic pattern lenght that limitation is easily overriden
Comments
Thanks, comments like that gives me more motivation to keep on going.
I don't drink, but thanks anyway.
@Circuitsoft
I think the right word is "tenacious"!
I'm not quite sure if the terms "patch" and "preset" can be seen as different things. Isn't a preset a patch that is inbuilt or default??
The SoundListTrigger can be seen as a "note trigger" and at the same time a "patch chooser". Every time a non-zero value is written to any of the 8 SoundListTriggers a "note on" is triggered. The non-zero value should be a pointer to a valid instrument/patch/SoundList somewhere in hub memory. As soon as Retronitus finds a value in one of it's SoundListTriggers it will set the program counter of the corresponding SoundListInterpreter to that value. Then it writes back a zero to the SoundListTrigger, so it's ready for the next "note trigger".
This way up to 8 different patches can be played at once.
It basically works the same way as most "play routines" on C64, Atari 800, NES.... etc..
Of course it's hard to write a song or patch directly with hex values in Propeller Tools, but that can be said of any other music format.
When my sequencer is finished it will be a breeze composing music, It will not be easy to create patches from scratch though, because then you must have a deeper understanding of how the synthesizer works. But I have created a graphical sound editor that is very easy to work with IF you KNOW how the synth works. And it will be very easy to load instrument patches from disk and include into a song; So it's just up to me to provide a vast library of patches for others to use.
When you have got your "binary blob" containing tunes and sound FXs for Retrontius, it's as far as I know the easiest way for the end user to include sound in their Propeller application.
Retronitus.start(pinX, pinX)
Retronitus.play(addressToTune)
That's all that is needed to play a tune and it runs completely inependant in a single cog.
Then you can call "Retronitus.playSoundFx(addressToSoundFx, channelNumber)" to play sound FXs while the tune is playing.
Genius comments seconded BTW.
I am very interrested to learn how to create such a niece sound system by myself by understanding the whole thing. Do you have any books recommendation ?
Thank you!
Simon
Retronitus isn't by any means a "standard synthesizer" that could be understood by reading a book.
It's heavily limited/"unlimited" by the strengths/weaknesses of what a single cog in the Propeller can do.
It wouldn't fit any other CPU on the market. On an AVR I would have come up with something that would have sounded totally different. (probably)
In other words!
Retronitus is a perversion based on hacks, shortcuts and all kinds of trickery.
To learn more about general sound synthesis, you could start off by learning conepts such as:
* Phase accumulation
* DDS
* Basic waveforms
* Amplitude envelope
* Pulse width modulation
* Amplitude modulation
* Frequency modulation
* Phase distortion modulation
* Subtractive synthesis
Combining your keywords gave me this book : http://crca.ucsd.edu/~msp/techniques/v0.11/book.pdf
Looks like a very interresting start-up !
Have a nice day!
Simon
This may be useful, too :
http://www.linusakesson.net/music/elements/index.php
Often I have to come up with sounds for a project or a product. With what I've learned here, future sounds are going to be a lot less ad hoc and a lot more professional.
Many thanks!
Thanks Kamil
/Johannes
Your planning new synthesis obex for propeller ? like FM synth, Granular or Wavequide ? :-)
Thanks all your works
Kamil
/Johannes
Not at the moment. Have you tried Aribas FM synth?
I found this thread while searching for a good way to add music to games. Retronitus seems perfect for my needs, however I can't find any precise documentation about how to write music and sound effects for it, all I can find are the binary files. I tried to reverse engineer the files using the assembler source code without any luck so far.
Ahle2, if you are still around, can you please publish the details on the music and effects instructions ?
Thanks,
Marco.
Here is the latest version of Retronitus with some raw music data in DAT sections to fool around with. I understand that it is not easy to reverse engineer the data formats, but you will have to wait a little bit more before I am back with more indepth information. (partly due to the fact that I can't seem to remember all the details my self )
Here are some notes that may be helpful
+ The instrument and SFX data is the same format
+ Each sound channel generates just one type of waveform (3 square, 3 saw, 1 noise, 1 triangle)
+ The sound channels are fixed to either right or left (all to the left in this version for some reason?!)
+ Each sound channel plays music data that is totally independant from the other channels (music is synced once when "hit play")
+ Sound FX can be triggered in a channel that currently is playing music, but it will get interrupted when a new note is played
+ The music data uses patterns, just like Protracker and Fasttracker, but each channel has got its own "positions"
+ Notes in a pattern uses a signed 5 bit delta format. The first note is absolute, the rest are relative
+ Each pattern can only have one instrument, but thanks to the dynamic pattern lenght that limitation is easily overriden
That's all for now!
/Johannes
main-bst-archive-160816-192432.zip archive is corrupt.
Please reupload this - many thanks
Kamil
Can be found here:
http://www.fnarfbargle.com/bst.html
http://www.fnarfbargle.com/bst/snapshots/
Can you give a link to the link that is not working?" The binaries seem to work fine in the first post.