The Hybrid version is a 100% compatible with both the Proto-board version and the Hydra version.
Porting is as simple as dropping in the correct version made for the platform you wish to port to.
JT Cook said...
Now the Hybrid runs at 96mhz, will the new version run at the correct pitch or will the pitch still be off?
Glad you asked. [noparse]:)[/noparse]
Both Pitch and Timing will be correct.
So basically it'll sound the same as the Hydra and Protoboard versions.
All three versions are compatible and produce the same output.
Porting your program's sound from one board to the next is as easy as dropping in the correct version (Proto, Hydra or Hybrid).
I really wanted to use this awesome creation to allow me to store and play some voice files right off of the propeller. I am using tekochip's converter to convert .s3m files (used modplug tracker to convert from wave to .s3m) to .hmus files but the files still came out to big. I recorded them in PCM 8KHZ, 8bit, mono. I even downsampled my files before conversion but still filled up my prop memory without all the needed files for the project (Need about 20s of audio, good news is quality can be poor).
What do you think, should i give up and try to get one of the wav players to work with an external SD card or is there still hope?·Am I doing something wrong?·I would really like to not have to add extra parts to my circuit board as space and my budget is tight. Any insight would be greatly appreciated as I am an audio nooblet. Thanks!
Take a look at PropDOS.. I've got Ray's WAV player working to stream wav data from SD.
OBC
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ New to the Propeller?
Getting started with the Protoboard? - Propeller Cookbook
Got an SD card? - PropDOS
A Living Propeller FAQ - The Propeller Wiki (Got the Knowledge? Got a Moment? Add something today!)
GUFF said...
I really wanted to use this awesome creation to allow me to store and play some voice files right off of the propeller. I am using tekochip's converter to convert .s3m files (used modplug tracker to convert from wave to .s3m) to .hmus files but the files still came out to big. I recorded them in PCM 8KHZ, 8bit, mono. I even downsampled my files before conversion but still filled up my prop memory without all the needed files for the project (Need about 20s of audio, good news is quality can be poor).
What do you think, should i give up and try to get one of the wav players to work with an external SD card or is there still hope? Am I doing something wrong? I would really like to not have to add extra parts to my circuit board as space and my budget is tight. Any insight would be greatly appreciated as I am an audio nooblet. Thanks!
There are two options. [noparse]:)[/noparse]
You can either use the 4bit format or the 1bit aDPCM stream.
4bits at 8k will allow 8 seconds of sampling in RAM.
The DPCM at 8khz will allow 24 seconds in the RAM. [noparse]:)[/noparse]
Only problem is that DPCM might not sound very usable any more at such low rates.
It might work for vioce, but nothing else.
Hope that helps. [noparse]:)[/noparse]
If you have any questions then feel free to ask.
I feel like a bit of a late comer but this program is great, i just wish i was smart enough to understand it right off the bat. I was hoping someone who understands it could help me out. I would like to use it to make a on-prop tracker but i dont quite understand the hmus file format. I have tried tekochip's converter tool but it doesn't run for me. (i think my computer is corrupting the download).
i've been through the thread and the source code but still, i'm a little confusered.
specifically how do i specify instruments? are they just 1 bit samples jammed into the stream after a control code? if so how do i tell the music player how long the samples are? is there a header? any tips would be greatly appreciated.
I have to admit i havn't yet cracked open any of the .hmus in a hex editor but without knowing what i'm looking for i fear that doing so will not enlighten me much.
Try the converter without any effects, it does not support all of the effects possible.· Also, samples should be 8 bit or 4 bit only.· Here is the information I reversed engineered from HMUS, so I'm not the best source.
HMUS Header
Song Title 00-0F Null terminated string
Song Ptr 10-11 Pointer to pattern data LB/HB
Loop Ptr 12-13 Pointer to start of song loop
Unknown 14-17 Null in file
Tempo 18-19 Tempo saved as S3MSpeed * 1250/ S3MTempo
Unknown 1A-1F Null in file
Instr Data 20.. Instrument Data has four words for each sample:
Start Pointer: Location of sample start
Length: Length of sample
Loop Start Where the sample should start repeating (offset from start)
KeyOn B1 sets 4 bit sample, 8 is default
HMUS Data
HMUS data is a single pattern of highly packed data that is very similar to S3M. Bit settings flag certain events, but there are a few base commands for an entire byte.
Whole Byte Commands
0 End of Row, finished for this beat.
1 Repeat Song, finished for this beat and start at loop.
2 End song, stops.
3 Set Flag and retrieve next byte.
All other commands have bits 0 and 1 are used to designate the track involved in the command.
High Note Patch
Byte & 00111100 = $20 Signals a shift to the higher octave and changes byte to look like a note change. Any note above 4G would need this patch and would look like a note change when done, but looks to only be used on G#, A, Bb and B.
B7 B6 B5 B4 B3 B2 B1 B0
Note1 Note0 1 0 X X Trak1 Trak0
Note Change
B2 Change note with note value in B3-B7. This yields 32 notes, or about 2 and a half octaves. Using the high note patch makes it a full three octaves. There is an octave change that can reach another two and a half octaves lower that requires setting the flag prior to the note. A note off condition is $FE in S3M format and is accomplished in HMUS by changing the instrument, because this causes a key off to take place.
B7 B6 B5 B4 B3 B2 B1 B0
Note4 Note3 Note2 Note1 Note0 1 Trak1 Trak0
Vol Change
B3 Changes the volume stored in B4-B7 (16 levels). If The flag is set a special effect will start. Effects are Vibrato Light, Vibrato Hard, Tremolo, Portamento at four speeds.
B7 B6 B5 B4 B3 B2 B1 B0
Eff3 Eff2 Eff1 Eff0 1 X Trak1 Trak0
Instrument Change
B4 B5-B7 hold the instrument number to change to plus if the flag is set you can gain an additional bit for a total of 8 instruments. This must be before note change because it will stop the current note.
B7 B6 B5 B4 B3 B2 B1 B0
Inst2 Inst1 Inst0 1 X X Trak1 Trak0
HMUS Samples
All samples are stored with a base of a C5 at 8363Hz. HMUS allows for a 4 bit sample which is achieved by setting B1 in the header. If a 4 bit sample is used the length in the header is the number of samples, NOT the length in bytes, so that number is 2X the sample size in bytes. Samples are stored with the lower nibble first using the formula of wave=wave/17.
This excellent! Just what I am looking for! I am extremely new with the Propeller. But done software engineering for a long time, but newbie with electronics and hardware :-(
unebonnevie said...
This excellent! Just what I am looking for! I am extremely new with the Propeller. But done software engineering for a long time, but newbie with electronics and hardware :-(
Welcome to the Propeller Unebonnevie.
This is a good place to start when learning about electronics and hardware. [noparse]:)[/noparse]
The propeller is a good mix of both hardware and software.
Hi, Andrew...
I just got my PASM skill jumpstarted and I'm trying to write a demoscene code with a science fiction theme.
I just had a speed breakthrough on my rendering math so it might be good.
But I need a breaktrough on hss sound. As I mentioned a long while ago I'm not conventional with music. Could you please maybe show me a basic "do re mi fa so la ti do" in hss format DAT spin code in
something like piano and also something like flute or theremin? Especially glides with "theremin" sound.
(Maybe concurrently. I think the demo's music will need all 4 tracks.)
I do think I might be programming the demo music directly in hss format if I see that and it makes sense to me.
(Otherwise I might end up inventing something too weird to be useful more than once.)
Hello Virand. [noparse]:)[/noparse]
Normally your best bet is to start with ModTracker.
Once a song is made in ModTracker it is easy to convert over. Normally this is a lot easier then coding a song since the format is encoded and compressed.
Any ideas on how to convert wav to dpcm file, aka hwav?
I want to generate a hwav of highest quality, but only 1. I only want to load a single sound sample into the propeller. Much like "beuler.hwav". But a very short length.
Comments
Feel free to visit the site and download as you like.
http://www.andrewarsenault.com/hss/download.html
The Hybrid version is a 100% compatible with both the Proto-board version and the Hydra version.
Porting is as simple as dropping in the correct version made for the platform you wish to port to.
Thanks everyone!
--Andrew Arsenault.
Glad you asked. [noparse]:)[/noparse]
Both Pitch and Timing will be correct.
So basically it'll sound the same as the Hydra and Protoboard versions.
All three versions are compatible and produce the same output.
Porting your program's sound from one board to the next is as easy as dropping in the correct version (Proto, Hydra or Hybrid).
Thanks!
--Andrew Arsenault.
What do you think, should i give up and try to get one of the wav players to work with an external SD card or is there still hope?·Am I doing something wrong?·I would really like to not have to add extra parts to my circuit board as space and my budget is tight. Any insight would be greatly appreciated as I am an audio nooblet. Thanks!
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
GUFF
Certified Stamp Noob
Since 2005
OBC
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
New to the Propeller?
Getting started with the Protoboard? - Propeller Cookbook
Got an SD card? - PropDOS
A Living Propeller FAQ - The Propeller Wiki
(Got the Knowledge? Got a Moment? Add something today!)
There are two options. [noparse]:)[/noparse]
You can either use the 4bit format or the 1bit aDPCM stream.
4bits at 8k will allow 8 seconds of sampling in RAM.
The DPCM at 8khz will allow 24 seconds in the RAM. [noparse]:)[/noparse]
Only problem is that DPCM might not sound very usable any more at such low rates.
It might work for vioce, but nothing else.
Hope that helps. [noparse]:)[/noparse]
If you have any questions then feel free to ask.
Thanks!
--Andrew Arsenault.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Share the knowledge: propeller.wikispaces.com
Lets make some music: www.andrewarsenault.com/hss
i've been through the thread and the source code but still, i'm a little confusered.
specifically how do i specify instruments? are they just 1 bit samples jammed into the stream after a control code? if so how do i tell the music player how long the samples are? is there a header? any tips would be greatly appreciated.
I have to admit i havn't yet cracked open any of the .hmus in a hex editor but without knowing what i'm looking for i fear that doing so will not enlighten me much.
Try the converter without any effects, it does not support all of the effects possible.· Also, samples should be 8 bit or 4 bit only.· Here is the information I reversed engineered from HMUS, so I'm not the best source.
HMUS Header
Song Title 00-0F Null terminated string
Song Ptr 10-11 Pointer to pattern data LB/HB
Loop Ptr 12-13 Pointer to start of song loop
Unknown 14-17 Null in file
Tempo 18-19 Tempo saved as S3MSpeed * 1250/ S3MTempo
Unknown 1A-1F Null in file
Instr Data 20.. Instrument Data has four words for each sample:
Start Pointer: Location of sample start
Length: Length of sample
Loop Start Where the sample should start repeating (offset from start)
KeyOn B1 sets 4 bit sample, 8 is default
HMUS Data
HMUS data is a single pattern of highly packed data that is very similar to S3M. Bit settings flag certain events, but there are a few base commands for an entire byte.
Whole Byte Commands
0 End of Row, finished for this beat.
1 Repeat Song, finished for this beat and start at loop.
2 End song, stops.
3 Set Flag and retrieve next byte.
All other commands have bits 0 and 1 are used to designate the track involved in the command.
High Note Patch
Byte & 00111100 = $20 Signals a shift to the higher octave and changes byte to look like a note change. Any note above 4G would need this patch and would look like a note change when done, but looks to only be used on G#, A, Bb and B.
B7 B6 B5 B4 B3 B2 B1 B0
Note1 Note0 1 0 X X Trak1 Trak0
Note Change
B2 Change note with note value in B3-B7. This yields 32 notes, or about 2 and a half octaves. Using the high note patch makes it a full three octaves. There is an octave change that can reach another two and a half octaves lower that requires setting the flag prior to the note. A note off condition is $FE in S3M format and is accomplished in HMUS by changing the instrument, because this causes a key off to take place.
B7 B6 B5 B4 B3 B2 B1 B0
Note4 Note3 Note2 Note1 Note0 1 Trak1 Trak0
Vol Change
B3 Changes the volume stored in B4-B7 (16 levels). If The flag is set a special effect will start. Effects are Vibrato Light, Vibrato Hard, Tremolo, Portamento at four speeds.
B7 B6 B5 B4 B3 B2 B1 B0
Eff3 Eff2 Eff1 Eff0 1 X Trak1 Trak0
Instrument Change
B4 B5-B7 hold the instrument number to change to plus if the flag is set you can gain an additional bit for a total of 8 instruments. This must be before note change because it will stop the current note.
B7 B6 B5 B4 B3 B2 B1 B0
Inst2 Inst1 Inst0 1 X X Trak1 Trak0
HMUS Samples
All samples are stored with a base of a C5 at 8363Hz. HMUS allows for a 4 bit sample which is achieved by setting B1 in the header. If a 4 bit sample is used the length in the header is the number of samples, NOT the length in bytes, so that number is 2X the sample size in bytes. Samples are stored with the lower nibble first using the formula of wave=wave/17.
(perhaps we can talk him into posting it for all on his website.)
A good mod for this sound driver would be to find a way to load instrument data,
(to select instrument) and pass simple note data to play.
OBC
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
New to the Propeller?
Getting started with the Protoboard? - Propeller Cookbook 1.4
Updates to the Cookbook are now posted to: Propeller.warrantyvoid.us
Got an SD card? - PropDOS
Need a part? Got spare electronics? - The Electronics Exchange
You know what? That is a very good idea. [noparse]:)[/noparse]
Maybe that's something to look into with the propII version.
Thanks OBC!
--Andrew Arsenault
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Share the knowledge: propeller.wikispaces.com
Lets make some music: www.andrewarsenault.com/hss
Welcome to the Propeller Unebonnevie.
This is a good place to start when learning about electronics and hardware. [noparse]:)[/noparse]
The propeller is a good mix of both hardware and software.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Share the knowledge: propeller.wikispaces.com
Lets make some music: www.andrewarsenault.com/hss
I just got my PASM skill jumpstarted and I'm trying to write a demoscene code with a science fiction theme.
I just had a speed breakthrough on my rendering math so it might be good.
But I need a breaktrough on hss sound. As I mentioned a long while ago I'm not conventional with music.
Could you please maybe show me a basic "do re mi fa so la ti do" in hss format DAT spin code in
something like piano and also something like flute or theremin? Especially glides with "theremin" sound.
(Maybe concurrently. I think the demo's music will need all 4 tracks.)
I do think I might be programming the demo music directly in hss format if I see that and it makes sense to me.
(Otherwise I might end up inventing something too weird to be useful more than once.)
Post Edited (VIRAND) : 9/11/2008 10:34:31 PM GMT
Normally your best bet is to start with ModTracker.
Once a song is made in ModTracker it is easy to convert over. Normally this is a lot easier then coding a song since the format is encoded and compressed.
Here are some uncompiled songs for you to play with as well. [noparse]:)[/noparse]
http://www.andrewarsenault.com/ym_np/makehmus.zip
Thanks!
--Andrew Arsenault.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Share the knowledge: propeller.wikispaces.com
Lets make some music: www.andrewarsenault.com/hss
I want to generate a hwav of highest quality, but only 1. I only want to load a single sound sample into the propeller. Much like "beuler.hwav". But a very short length.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Meh. Nothing here, move along.