Musical Note Duration Conversions

Basic and Machine Language

Moderator: Moderators

Gorf
Vic 20 Drifter
Posts: 31
Joined: Tue Feb 09, 2016 6:55 pm
Location: United States

Re: Musical Note Duration Conversions

Postby Gorf » Sat Jan 07, 2017 11:13 am

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
Be kind, rewind

User avatar
Mike
Herr VC
Posts: 3002
Joined: Wed Dec 01, 2004 1:57 pm
Location: Munich, Germany
Occupation: electrical engineer

Re: Musical Note Duration Conversions

Postby Mike » Sat Jan 07, 2017 11:43 am

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.

Gorf
Vic 20 Drifter
Posts: 31
Joined: Tue Feb 09, 2016 6:55 pm
Location: United States

Re: Musical Note Duration Conversions

Postby Gorf » Sat Jan 07, 2017 3:03 pm

Mike wrote:Yes.


Ok, thank you. :mrgreen:
Be kind, rewind

User avatar
Kweepa
Vic 20 Scientist
Posts: 1088
Joined: Fri Jan 04, 2008 5:11 pm
Location: Austin, Texas
Occupation: Game maker

Re: Musical Note Duration Conversions

Postby Kweepa » Tue Jan 10, 2017 3:05 pm

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.

Gorf
Vic 20 Drifter
Posts: 31
Joined: Tue Feb 09, 2016 6:55 pm
Location: United States

Re: Musical Note Duration Conversions

Postby Gorf » Sun Jan 15, 2017 9:48 am

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:
Be kind, rewind


Return to “Programming”

Who is online

Users browsing this forum: No registered users and 3 guests