Musical Note Duration Conversions

Basic and Machine Language

Moderator: Moderators

User avatar
Gorf
Vic 20 Dabbler
Posts: 92
Joined: Tue Feb 09, 2016 6:55 pm
Website: http://home.macintosh.garden/~europa/
Location: United States
Occupation: Eccentric Musician

Re: Musical Note Duration Conversions

Post by Gorf »

Mike wrote:Just one small addition:
Mike wrote:[...] more than one voice would be done by interleaving the note data in the string, [...]
It is also possible to use an own string for each voice.

That avoids the interleaving, but you have to take a little more oversight that the voices keep in step. You'd then retrieve the register values for all the voices from the same position in two or more strings instead of from two or more consecutive positions in the same one string.

You'll still have to write the registers as fast as possible, like in: POKEV+10,A:POKEV+11,B:POKEV+12,C - with the values in A, B and C retrieved beforehand (say, with A=N(MID$(..)).:B=...:C=...).
Just one more question, what if I wanted all the voices to play teh same note, just in their respective octave, could I then just use one set of notes for the piece of music I am trying to play? :D
User avatar
Mike
Herr VC
Posts: 4816
Joined: Wed Dec 01, 2004 1:57 pm
Location: Munich, Germany
Occupation: electrical engineer

Re: Musical Note Duration Conversions

Post by Mike »

Gorf wrote:
Mike wrote:Just one small addition:
Mike wrote:[...] more than one voice would be done by interleaving the note data in the string, [...]
It is also possible to use an own string for each voice.

That avoids the interleaving, but you have to take a little more oversight that the voices keep in step. You'd then retrieve the register values for all the voices from the same position in two or more strings instead of from two or more consecutive positions in the same one string.

You'll still have to write the registers as fast as possible, like in: POKEV+10,A:POKEV+11,B:POKEV+12,C - with the values in A, B and C retrieved beforehand (say, with A=N(MID$(..)).:B=...:C=...).
Just one more question, what if I wanted all the voices to play teh same note, just in their respective octave, could I then just use one set of notes for the piece of music I am trying to play? :D
Yes.
User avatar
Gorf
Vic 20 Dabbler
Posts: 92
Joined: Tue Feb 09, 2016 6:55 pm
Website: http://home.macintosh.garden/~europa/
Location: United States
Occupation: Eccentric Musician

Re: Musical Note Duration Conversions

Post by Gorf »

Mike wrote: Yes.
Ok, thank you. :mrgreen:
User avatar
Kweepa
Vic 20 Scientist
Posts: 1314
Joined: Fri Jan 04, 2008 5:11 pm
Location: Austin, Texas
Occupation: Game maker

Re: Musical Note Duration Conversions

Post by Kweepa »

To make Mike's player more timing explicit:

Code: Select all

6 t=ti:fori=1tolen(a$):pokev+12,n(asc(mid$(a$,i,1))-64):t=t+3:fors=0to0:s=ti<t:nexts,i
Then each letter in the string is 3/60th of a second, and the music lasts exactly 3/60*len(a$) seconds.
To ensure the first note is the right length you can add a @ to the start of the string.
User avatar
Gorf
Vic 20 Dabbler
Posts: 92
Joined: Tue Feb 09, 2016 6:55 pm
Website: http://home.macintosh.garden/~europa/
Location: United States
Occupation: Eccentric Musician

Re: Musical Note Duration Conversions

Post by Gorf »

Kweepa wrote:To make Mike's player more timing explicit:

Code: Select all

6 t=ti:fori=1tolen(a$):pokev+12,n(asc(mid$(a$,i,1))-64):t=t+3:fors=0to0:s=ti<t:nexts,i
Then each letter in the string is 3/60th of a second, and the music lasts exactly 3/60*len(a$) seconds.
To ensure the first note is the right length you can add a @ to the start of the string.
Ok, thank you for that addendum (hopefully I spelled that correctly). :mrgreen:
Post Reply