[PD-cvs] externals/frankenstein common.c, NONE, 1.1 common.h, NONE, 1.1
dmorelli
morellid at users.sourceforge.net
Tue Nov 29 19:04:12 CET 2005
- Previous message: [PD-cvs] externals/zexy/src zexyconf.h.in, NONE, 1.1 Make.config, 1.2, 1.3 Makefile, 1.3, 1.4 configure.ac, 1.10, 1.11 lpt.c, 1.7, 1.8 regex.c, 1.1, 1.2 zexy.h, 1.10, 1.11
- Next message: [PD-cvs] externals/tb/sndfiler/src sndfiler.c,1.2,1.3
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Update of /cvsroot/pure-data/externals/frankenstein
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv11636
Added Files:
common.c common.h
Log Message:
adding shared functions
--- NEW FILE: common.h ---
// here i put common data structures and functions
// --------- theme notation
// data structures
typedef struct _note
{
unsigned short int played; // 0 if is a rest, 1 if played
unsigned short int chord; // 0 if is not a chord (strong) note, 1 if it is
unsigned short int diatonic; // 0 if is a note not belonging to this tonality
int interval; // semitones from prefious note
} t_note;
typedef struct _duration
{
int numerator; // like in music notation: in a 1/4 note the numerator is 1
int denominator; // like in music notation: in a 1/4 note the denominator is 4
} t_duration;
typedef struct _note_event
{
unsigned short int voice;
t_note note;
t_duration duration;
struct t_note_event *previous; // this is a list, link to the previous element
struct t_note_event *next; // this is a list, link to the next element
} t_note_event;
// manipolation functions
// TODO:
// - from data structures to lists of numbers and vice versa
// - from a (voice, rest, duration) representation to (voice, start, duration) and viceversa
// --------- rhythm notation
// data structures
typedef struct _rhythm_event
{
unsigned short int voice;
t_duration duration;
struct t_rhythm_event *previous; // this is a list, link to the previous element
struct t_rhythm_event *next; // this is a list, link to the next element
} t_rhythm_event;
// rhythms memory graph
/*
// list implementation
// this implements a graph that stores the memory of the current rhythm sub-elements
// list of links
typedef struct _rhythm_memory_arc
{
float weight;
struct t_rhythm_memory_node *to_node; // the target of this link (arc)
struct t_rhythm_memory_arc *next_arc; // next link in the list
} t_rhythm_memory_arc;
// graph node
typedef struct _rhythm_memory_node
{
t_duration duration;
struct t_rhythm_memory_arc *arcs; // the list of arcs to other nodes
} t_rhythm_memory_node;
*/
// with a table
// simpler and most of all non recursive when searching nodes!
#define num_possible_denominators 11
unsigned short int possible_denominators[] = {1,2,3,4,6,8,12,16,18,24,32};
// functions needed to fill and use the memory table
t_duration int2duration(int n);
unsigned short int duration2int(t_duration dur);
int possible_durations();
// manipolation functions
// TODO:
// - from data structures to lists of numbers and vice versa
// - from a (voice, duration) representation to (voice, start, duration) and viceversa
--- NEW FILE: common.c ---
#include "common.h"
t_duration int2duration(int n)
{
t_duration dur;
int curr, i, j, ok;
curr=0;
ok=0;
for (i=0; i<num_possible_denominators; i++)
{
for (j=0; j<i; j++)
{
if (curr==n)
{
dur.numerator=j;
dur.denominator=i;
j=i;
i=num_possible_denominators;
ok=1;
} else
curr++;
}
}
if (ok)
return dur;
else
{
dur.numerator=1;
dur.denominator=1;
return dur;
}
}
unsigned short int duration2int(t_duration dur)
{
unsigned short int curr, i, j;
curr=0;
for (i=0; i<num_possible_denominators; i++)
{
for (j=0; j<i; j++)
{
if ((dur.numerator==j) && (dur.denominator==i))
{
return curr;
} else
curr++;
}
}
return curr+1;
}
int possible_durations()
{
int ris, i;
ris = 0;
for (i=0; i<num_possible_denominators; i++)
{
ris += possible_denominators[i]-1;
}
ris += 1;
return ris;
}
- Previous message: [PD-cvs] externals/zexy/src zexyconf.h.in, NONE, 1.1 Make.config, 1.2, 1.3 Makefile, 1.3, 1.4 configure.ac, 1.10, 1.11 lpt.c, 1.7, 1.8 regex.c, 1.1, 1.2 zexy.h, 1.10, 1.11
- Next message: [PD-cvs] externals/tb/sndfiler/src sndfiler.c,1.2,1.3
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the Pd-cvs
mailing list