tekochip said...
I've been messing with the music system for a while, so here is the very beta HMUS converter, and you will need the .net framework to use it. This will convert a Modplug S3M file over to HUMS, but remember that there are plenty of limitations.
All samples must be 8 bit mono and you'll want to keep them as short as possible. They should also be at 8363 HZ or an octave there of. All samples are converted to 4 bit for now just for better memory management. Since HMUS can only handle four tracks and 8 samples, that's all your allowed. There is a little error checking for bad formats, notes out of range and the like, but you can still make bad files or cause the program to break.
So, to sum up:
Only 4 tracks.
Only 8 samples.
8 bit mono samples at 8363.
File size no larger than 64K.
Use Position Jump, Bxx, for loops, but only to start of a pattern.
Use Cxx for pattern breaks, but only to first row of next pattern.
HMUS effects work but the portamento is a little strange.
The Loop End on samples will always be the end of the sample, so only move the Loop Start when you are editing your samples.
The first track event must have a SET VOLUME in the note property, or you won't hear the track.
Updated to Version 1.0.1.0 corrects null file name issue and only saves changed volume attributes for smaller files
Good Luck
Interesting program. [noparse]:)[/noparse]
I just tested it out. It seems to work pretty well.
Only a few errors in the rednering of the mod files I used to create the first wave of Hmus files. [noparse]:)[/noparse]
Also Hmus supports 16 samples max so 8 only makes use of half the allowed sample space. [noparse]:)[/noparse]
JT Cook said...
I have a request. Please please please make it so you can disable the music player and get access to all available sound channels. Please .
Okay!!! That's a good idea. [noparse]:)[/noparse]
I'll be sure to add that in. I'll look into maybe doing some Channel Stealing as well.
Basically what that does is when you use a channel other then 5 and 6 for the FX synth engine. It'll steal a channel from the music player for the time needed.
Maybe 6 channel music should be supported too as well. [noparse];)[/noparse]
Oldbitcollector said...
/me checks the website for the fifth time today for an HSS update...
<SIMPSON>DOH!</SIMPSON>
Oldbitcollector
Oh wow!! *lol*
I don't think the update will come that quick. [noparse]:)[/noparse]
I'm aiming for within the next few days though.
After I work on some stuff for one of my clients tonight... I'm going to code some more for (Hss).
I'll post a list of new features soon as well.
Version 1.5 should be the same HUB-ram size as version 1.0 or smaller. [noparse]:)[/noparse]
Target size: ~2.7k
Since (Hss) is all about doing the most with the least.
New .HMUS music files have been added to the website for your listening pleasure. [noparse]:)[/noparse]
Be sure to check them out.
More are on the way along with the updated code.
What you want to do is include a song in your propeller project and then when you want to change songs, stop playing the current song and copy the new song from the SD card over to the address of the old song. It's also possible to modify HSS so you can stream ADPCM. I'm using a uALFAT with I2C, rather than an SD card, but you only need 5.4KB/Sec to keep up with HSS.
Allocate a buffer for the .hmus files. Either with a Stack, emtpy Dat block or large varaible array.
Good sizes are 4k, 6k and 8k. (kilobytes)
A lot of songs will play in 4k or less, most songs written for Back Ground Music are designed to fit in a 4k foot print.
Demo tunes tend to be a bit larger.
NES/C64 like music could be written and played back in a 2k or less buffer if needed.
Anyway here is an example of how to use a buffer playback system. (Hss was designed with this in mind)
<...starting code>
hss.hmus_load(@musicbuffer) 'Load Hmus file into player.
hss.hmus_play 'Play loaded file.
<...some program code>
hss.hmus_stop 'Stop music from playing.
<...load new file into @musicbuffer>
hss.hmus_load(@musicbuffer) 'Load NEW Hmus file into player.
hss.hmus_play 'Play NEW loaded file.
Hope that helps!
computer guy said...
Ym2413a
What would be involved in getting HSS to load sound files from an SD card slot attached to the propeller?
Sachiel7 with the Retrosys here. I've still been working on a basic system and game framework, and HSS is the primary audio interface for the system.
I downloaded tekochip's converter and have been playing with it. I'm still tinkering, but it brought to my attention something that I hadn't noticed - I'm not getting stereo output.
I know HSS supports a left/right channel, and the Retrosys is setup for stereo output, but is·HSS only supporting mono output at present (the demoboard version)? Or do I have my configuration wrong...?
Thanks for your help. Once I write a few game tracks, I wouldn't mind submitting them for others to use!
Sachiel7 with the Retrosys here. I've still been working on a basic system and game framework, and HSS is the primary audio interface for the system.
I downloaded tekochip's converter and have been playing with it. I'm still tinkering, but it brought to my attention something that I hadn't noticed - I'm not getting stereo output.
I know HSS supports a left/right channel, and the Retrosys is setup for stereo output, but is HSS only supporting mono output at present (the demoboard version)? Or do I have my configuration wrong...?
Thanks for your help. Once I write a few game tracks, I wouldn't mind submitting them for others to use!
Mono only for most boards and versions todate. : )
Also depends on where you port it from.
Both the Hydra and Hybrid are mono, They're the most targetted boards as of the current moment.
Sachiel if you would like some insight into how to write .hmus files. Let me know. I'll show you the ropes sometime.
Thanks!
(Hss) Version 1.2 is ready for download. [noparse]:)[/noparse]
BIG improvements in the FXsynth engine allow for more complex sounds to be synthesized.
Now supports programmable noise waveforms as well as the old FM noise waveforms used in version 1!
Also other little fixes and improvements as well.
Thanks Everyone!
...and sorry for the delay in this release.
Drop in replacement for 1.0 --> Working great over here.
(Check the screenshot in my last post on the 8x8Char thread)
Request: How about a step-by-step tutorial on how to create our own .hmus files?
I'm thinking it's about time to start creating a propeller christmas card with animation. [noparse]:)[/noparse]
(Some of my 3-voice SID files converted to .midi should fit nicely into HSS)
The FXsynth datasheet is now up. [noparse]:)[/noparse]
Now you can have a better understanding of how to synthesize awesome sounds on this little soft-synth included in (HSS)!
I'd like to make a few modifications to the basic HSS out there to do the following:
-Support Stereo Output (Basically map output to 2 pins, and have a pan variable for each track that affects the volume level of that track output on each· pin)
-Some Basic Effects (Reverb, Delay, etc) to be mapped to full output (mostly that old-school delay reverb·games used to use to give it a concert hall-ish effect)
I know I'm probably biting off a bit more than I can chew here, but I would love to· add these features to HSS for the Retrosys, since I have Stereo Output. I'm mostly focused on these effects acting on the music, and not so much the FXSynth.
Also, you had offered to show me the basics of creating HMUS files from ModPlug? If you could give me (us, really)·a brief descrption, that would be great.
Have you considered modifying ModPlug Tracker to create a dedicated HMUS sequencer?
Yeah, I've been thinking of adding support for Hmus into a tracker program. [noparse]:)[/noparse]
As or the effects such as Reverb and Delay... Both would need RAM to store the samples for the effects.
That would quickly eat into the HUB ram of the prop.
Although Stereo support wouldn't be hard to add in. [noparse];)[/noparse]
Sad thing is, only your board supports stereo output. [noparse]:([/noparse]
Yeah, I was just wondering if you could give me some pointers at what sections of the DemoBoard HSS I should start with to attempt to modify it for stereo for my programs.
I also would like to put together at least a simple command-line ModPlug->HMUS Converter. I need some basics on the HMUS format. I tried tekochips converter, and it worked pretty well, but there were several problems that were consistent with every file I cut.
tekochip, if you're·around, I'm getting these issues when converting files:
-last beat of each pattern is skipped
-each pattern change the octaves/instrument seem to increase in value
Any way you could take a look at adjusting this?
Thanks a bunch,
I'm swamped but I'll see what I can do about looking into the conversion errors.· The octave jump seems a little odd, but I can see how the last note is missing.
I also wrote a WAV to DPCM converter too, and I'll see if I can pack that up.· I modified the sound engine to stream the DPCM from external memory, like USB or EEPROM, so I need to make sure that the converter works with the original HSS.
Mine is in stereo, of sorts.· The music is common to both channels, but the sound effects and DPCM are split into two channels.· I ran out of execution for the engine to run in just one cog, so you go stereo you will probably run into the same problem too, unless you lower the sampling rate or add another cog.
Here's a quick something for you guys. [noparse]:)[/noparse]
Sorry for the mess. This is sort of my own personal DataSheet of the Hmus format. *lol*
HSS Music Stream Commands:
c = channel
n = variable
000000|00 == advance tick
000000|01 == repeat
000000|10 == end
000000|11 == flag (transpose -24)(instrument +8)
Also Tekochip.
If you'd like some S3M files of the Hmus tunes, then I can send you those as well. [noparse]:)[/noparse]
They should convert 1-to-1 into the Hmus format as in sound output.
When they do, you'll know your converter has done a perfect job. [noparse]:)[/noparse]
I've tried to teach people how to convert songs over into (Hss) before, but with no luck.
Most programmers aren't very good musicians and give up on channel mapping and tracking. [noparse]:([/noparse]
Most give up once they see tracker programs like ModTracker.
But if anyone does wanna write hmus music, let me know. [noparse]:)[/noparse]
I'll include it on the website if they'd like!
Comments
Interesting program. [noparse]:)[/noparse]
I just tested it out. It seems to work pretty well.
Only a few errors in the rednering of the mod files I used to create the first wave of Hmus files. [noparse]:)[/noparse]
Also Hmus supports 16 samples max so 8 only makes use of half the allowed sample space. [noparse]:)[/noparse]
But either way GREAT job!
Version 1.5 releasing soon... With better sound FX synthesis.
Also a new wave of song are coming out. [noparse]:)[/noparse]
So be sure to check the website.
Thanks everyone! ... and sorry for the delay. [noparse]:([/noparse]
--Andrew Arsenault.
Okay!!! That's a good idea. [noparse]:)[/noparse]
I'll be sure to add that in. I'll look into maybe doing some Channel Stealing as well.
Basically what that does is when you use a channel other then 5 and 6 for the FX synth engine. It'll steal a channel from the music player for the time needed.
Maybe 6 channel music should be supported too as well. [noparse];)[/noparse]
Thanks for the idea JT!
--Andrew Arsenault.
<SIMPSON>DOH!</SIMPSON>
Oldbitcollector
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Buttons . . . check. Dials . . . check. Switches . . . check. Little colored lights . . . check.
— Calvin, of 'Calvin and Hobbes.
Oh wow!! *lol*
I don't think the update will come that quick. [noparse]:)[/noparse]
I'm aiming for within the next few days though.
After I work on some stuff for one of my clients tonight... I'm going to code some more for (Hss).
I'll post a list of new features soon as well.
Version 1.5 should be the same HUB-ram size as version 1.0 or smaller. [noparse]:)[/noparse]
Target size: ~2.7k
Since (Hss) is all about doing the most with the least.
Thanks Everyone!
--Andrew Arsenault.
Be sure to check them out.
More are on the way along with the updated code.
Thanks Everyone!
--Andrew Arsenault.
Website:
www.andrewarsenault.com/hss/hmedia.html
What would be involved in getting HSS to load sound files from an SD card slot attached to the propeller?
Thank you
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Check out my robot using the propeller RECONAUTOR
Thank you I hadn't thought of that.
Am new to using external storage with propeller but I hope that I will pick it up rather fast.
Thank you
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Check out my robot using the propeller RECONAUTOR
Good sizes are 4k, 6k and 8k. (kilobytes)
A lot of songs will play in 4k or less, most songs written for Back Ground Music are designed to fit in a 4k foot print.
Demo tunes tend to be a bit larger.
NES/C64 like music could be written and played back in a 2k or less buffer if needed.
Anyway here is an example of how to use a buffer playback system. (Hss was designed with this in mind)
Hope that helps!
Oldbitcollector
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Buttons . . . check. Dials . . . check. Switches . . . check. Little colored lights . . . check.
— Calvin, of 'Calvin and Hobbes.
That will help a lot, Am waiting on some hardware to come, once that arrives I will try out HSS and post my results with the SD card.
Thank you
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Check out my robot using the propeller RECONAUTOR
Sachiel7 with the Retrosys here. I've still been working on a basic system and game framework, and HSS is the primary audio interface for the system.
I downloaded tekochip's converter and have been playing with it. I'm still tinkering, but it brought to my attention something that I hadn't noticed - I'm not getting stereo output.
I know HSS supports a left/right channel, and the Retrosys is setup for stereo output, but is·HSS only supporting mono output at present (the demoboard version)? Or do I have my configuration wrong...?
Thanks for your help. Once I write a few game tracks, I wouldn't mind submitting them for others to use!
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
-=Sachiel7=-
Mono only for most boards and versions todate. : )
Also depends on where you port it from.
Both the Hydra and Hybrid are mono, They're the most targetted boards as of the current moment.
Sachiel if you would like some insight into how to write .hmus files. Let me know. I'll show you the ropes sometime.
Thanks!
Any tools / info on creating hwav and hmus files?
Baggers.
Those are going to release soon as well.
BIG improvements in the FXsynth engine allow for more complex sounds to be synthesized.
Now supports programmable noise waveforms as well as the old FM noise waveforms used in version 1!
Also other little fixes and improvements as well.
Thanks Everyone!
...and sorry for the delay in this release.
--Andrew Arsenault.
www.andrewarsenault.com/hss/
(Check the screenshot in my last post on the 8x8Char thread)
Request: How about a step-by-step tutorial on how to create our own .hmus files?
I'm thinking it's about time to start creating a propeller christmas card with animation. [noparse]:)[/noparse]
(Some of my 3-voice SID files converted to .midi should fit nicely into HSS)
Oldbitcollector
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Buttons . . . check. Dials . . . check. Switches . . . check. Little colored lights . . . check.
— Calvin, of 'Calvin and Hobbes.
Now you can have a better understanding of how to synthesize awesome sounds on this little soft-synth included in (HSS)!
www.andrewarsenault.com/hss/sfx.html
Enjoy!! and happy noise making!
--Andrew Arsenault.
Now I just need to work on some conversion software....
Thanks for posting this!
Oldbitcollector
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Buttons . . . check. Dials . . . check. Switches . . . check. Little colored lights . . . check.
— Calvin, of 'Calvin and Hobbes.
More music files.
ADPCM conversion tool.
And more Documentation!
So be sure to keep an eye out. [noparse]:)[/noparse]
Thanks!
--Andrew Arsenault.
I'd like to make a few modifications to the basic HSS out there to do the following:
-Support Stereo Output (Basically map output to 2 pins, and have a pan variable for each track that affects the volume level of that track output on each· pin)
-Some Basic Effects (Reverb, Delay, etc) to be mapped to full output (mostly that old-school delay reverb·games used to use to give it a concert hall-ish effect)
I know I'm probably biting off a bit more than I can chew here, but I would love to· add these features to HSS for the Retrosys, since I have Stereo Output. I'm mostly focused on these effects acting on the music, and not so much the FXSynth.
Also, you had offered to show me the basics of creating HMUS files from ModPlug? If you could give me (us, really)·a brief descrption, that would be great.
Have you considered modifying ModPlug Tracker to create a dedicated HMUS sequencer?
http://sourceforge.net/project/showfiles.php?group_id=100385&package_id=108021
Thanks again for all your hard work!
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
-=Sachiel7=-
As or the effects such as Reverb and Delay... Both would need RAM to store the samples for the effects.
That would quickly eat into the HUB ram of the prop.
Although Stereo support wouldn't be hard to add in. [noparse];)[/noparse]
Sad thing is, only your board supports stereo output. [noparse]:([/noparse]
Thanks!
--Andrew Arsenault.
I also would like to put together at least a simple command-line ModPlug->HMUS Converter. I need some basics on the HMUS format. I tried tekochips converter, and it worked pretty well, but there were several problems that were consistent with every file I cut.
tekochip, if you're·around, I'm getting these issues when converting files:
-last beat of each pattern is skipped
-each pattern change the octaves/instrument seem to increase in value
Any way you could take a look at adjusting this?
Thanks a bunch,
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
-=Sachiel7=-
I'm swamped but I'll see what I can do about looking into the conversion errors.· The octave jump seems a little odd, but I can see how the last note is missing.
I also wrote a WAV to DPCM converter too, and I'll see if I can pack that up.· I modified the sound engine to stream the DPCM from external memory, like USB or EEPROM, so I need to make sure that the converter works with the original HSS.
Mine is in stereo, of sorts.· The music is common to both channels, but the sound effects and DPCM are split into two channels.· I ran out of execution for the engine to run in just one cog, so you go stereo you will probably run into the same problem too, unless you lower the sampling rate or add another cog.
Sorry for the mess. This is sort of my own personal DataSheet of the Hmus format. *lol*
HSS Music Stream Commands:
c = channel
n = variable
000000|00 == advance tick
000000|01 == repeat
000000|10 == end
000000|11 == flag (transpose -24)(instrument +8)
nnnnn1|cc == low note (32)
nnnn10|cc == volume / effect
nnn100|cc == instrument
nn1000|cc == hi note (4)
n10000|cc == detune
100000|cc == ext
Sampling Freqs:
$085F, $08DF, $0966, $09F5, $0A8C, $0B2D, $0BD7, $0C8B, $0D4A, $0E14, $0EEB, $0FCE 'Octave 2
$10BE, $11BD, $12CB, $13E9, $1519, $165A, $17AE, $1916, $1A94, $1C29, $1DD6, $1F9C 'Octave 3
|217D, $237B, $2597, $27D3, $2A31, $2CB3, $2F5C, $322D, $3528, $3852, $3BAB, $3F37 'Octave 4
$42FA, $46F6, $4B2E, $4FA6, $5463, $5967, $5EB8, $645A, $6A52, $70A4, $7757, $7E70 'Octave 5
$85F4, $8DEB, $965B, $9F4C, $A8C5, $B2CE, $BD70, $C8B4, |D4A3, $E148, $EEAD, $FCDE 'Octave 6
$85F4, $8DEB, $965B, $9F4C, $A8C5, $B2CE, $BD70, $C8B4, |D4A3, $E148, $EEAD, $FCDE 'Octave 6
div8+r div2+r
S3M ---> HSS commands.
HF1 := Vib light.
HF2 := Vib hard.
JCC := Tremlo
S00 := Reset FX
FF3 := Detune(64)
G55 := ~glide 4.
G66 := ~glide 5.
G77 := ~glide 7
G88 := ~glide 8.
G99 := ~glide C.
GAA := ~glide F.
Hope that helps. [noparse]:)[/noparse]
PS: Just a warning. Glides are linear!
If you'd like some S3M files of the Hmus tunes, then I can send you those as well. [noparse]:)[/noparse]
They should convert 1-to-1 into the Hmus format as in sound output.
When they do, you'll know your converter has done a perfect job. [noparse]:)[/noparse]
I've tried to teach people how to convert songs over into (Hss) before, but with no luck.
Most programmers aren't very good musicians and give up on channel mapping and tracking. [noparse]:([/noparse]
Most give up once they see tracker programs like ModTracker.
But if anyone does wanna write hmus music, let me know. [noparse]:)[/noparse]
I'll include it on the website if they'd like!
Thanks Everyone!
--Andrew Arsenault.