mirror of
https://github.com/cookiengineer/audacity
synced 2025-10-11 09:03:36 +02:00
Update portsmf to SVN r227.
This commit is contained in:
43
lib-src/portsmf/portsmf_test/Makefile.osx
Normal file
43
lib-src/portsmf/portsmf_test/Makefile.osx
Normal file
@@ -0,0 +1,43 @@
|
||||
# portsmf_test Makefile
|
||||
#
|
||||
# This is intended to be run in the portsmf/portsmf_test directory as:
|
||||
# make -f Makefile.osx
|
||||
# to build portsmf_test.
|
||||
#
|
||||
# You can adapt this to build libportsmf.a if you want to use PortSMF
|
||||
# as a library.
|
||||
|
||||
LIBFLAGS =
|
||||
CFLAGS = -g -I$(SMFDIR)
|
||||
CCC = g++
|
||||
CC = gcc
|
||||
SMFDIR = ..
|
||||
|
||||
PORTSMFOBJS = $(SMFDIR)/allegro.o \
|
||||
$(SMFDIR)/allegrosmfwr.o \
|
||||
$(SMFDIR)/allegrord.o \
|
||||
$(SMFDIR)/allegrowr.o \
|
||||
$(SMFDIR)/allegrosmfrd.o \
|
||||
$(SMFDIR)/mfmidi.o \
|
||||
$(SMFDIR)/strparse.o
|
||||
|
||||
PORTSMFHEADERS = $(SMFDIR)/allegro.h \
|
||||
$(SMFDIR)/mfmidi.h \
|
||||
$(SMFDIR)/strparse.h
|
||||
|
||||
OBJS = $(PORTSMFOBJS)
|
||||
|
||||
all: portsmf_test libportsmf.a
|
||||
|
||||
libportsmf.a: $(OBJS) Makefile.osx
|
||||
ar -crs libportsmf.a $(LIBFLAGS) $(OBJS)
|
||||
|
||||
%.o:%.cpp
|
||||
$(CCC) -c $(CFLAGS) $< -o $@
|
||||
|
||||
portsmf_test: libportsmf.a portsmf_test.o $(PORTSMFHEADERS)
|
||||
$(CCC) $(CFLAGS) -o portsmf_test \
|
||||
portsmf_test.o libportsmf.a
|
||||
|
||||
clean:
|
||||
rm -f *.o
|
200
lib-src/portsmf/portsmf_test/portsmf_test-VC8.vcproj
Normal file
200
lib-src/portsmf/portsmf_test/portsmf_test-VC8.vcproj
Normal file
@@ -0,0 +1,200 @@
|
||||
<?xml version="1.0" encoding="Windows-1252"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="8.00"
|
||||
Name="portsmf_test"
|
||||
ProjectGUID="{AF00107F-E436-4EBC-A1F3-CB176E7D1F84}"
|
||||
RootNamespace="allegro_test"
|
||||
Keyword="Win32Proj"
|
||||
>
|
||||
<Platforms>
|
||||
<Platform
|
||||
Name="Win32"
|
||||
/>
|
||||
</Platforms>
|
||||
<ToolFiles>
|
||||
</ToolFiles>
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
|
||||
IntermediateDirectory="$(ConfigurationName)"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories=".."
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
|
||||
MinimalRebuild="true"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="3"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="0"
|
||||
Detect64BitPortabilityProblems="true"
|
||||
DebugInformationFormat="4"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="../Debug/portsmf.lib"
|
||||
LinkIncremental="2"
|
||||
GenerateDebugInformation="true"
|
||||
SubSystem="1"
|
||||
TargetMachine="1"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManifestTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCAppVerifierTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebDeploymentTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
|
||||
IntermediateDirectory="$(ConfigurationName)"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="1"
|
||||
WholeProgramOptimization="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories=".."
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
|
||||
RuntimeLibrary="2"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
Detect64BitPortabilityProblems="true"
|
||||
DebugInformationFormat="3"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
LinkIncremental="1"
|
||||
GenerateDebugInformation="true"
|
||||
SubSystem="1"
|
||||
OptimizeReferences="2"
|
||||
EnableCOMDATFolding="2"
|
||||
TargetMachine="1"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManifestTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCAppVerifierTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebDeploymentTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
<References>
|
||||
</References>
|
||||
<Files>
|
||||
<Filter
|
||||
Name="Source Files"
|
||||
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
|
||||
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
|
||||
>
|
||||
<File
|
||||
RelativePath=".\portsmf_test.cpp"
|
||||
>
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Header Files"
|
||||
Filter="h;hpp;hxx;hm;inl;inc;xsd"
|
||||
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
|
||||
>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Resource Files"
|
||||
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
|
||||
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
|
||||
>
|
||||
</Filter>
|
||||
</Files>
|
||||
<Globals>
|
||||
</Globals>
|
||||
</VisualStudioProject>
|
766
lib-src/portsmf/portsmf_test/portsmf_test.cpp
Normal file
766
lib-src/portsmf/portsmf_test/portsmf_test.cpp
Normal file
@@ -0,0 +1,766 @@
|
||||
#include "memory.h"
|
||||
#include <iostream>
|
||||
#include <fstream>
|
||||
using namespace std;
|
||||
#include "allegro.h"
|
||||
|
||||
void seq_print(Alg_seq_ptr seq)
|
||||
{
|
||||
for (int i = 0; i < seq->tracks(); i++) {
|
||||
printf("TRACK %d\n", i);
|
||||
for (int j = 0; j < seq->track(i)->length(); j++) {
|
||||
(*seq->track(i))[j]->show();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Alg_seq_ptr make_simple_score()
|
||||
{
|
||||
Alg_seq_ptr seq = new Alg_seq;
|
||||
Alg_update_ptr update = seq->create_update(0, 0, -1);
|
||||
update->set_real_value("attackr", 0.007);
|
||||
seq->add_event(update, 0);
|
||||
|
||||
Alg_note_ptr note = seq->create_note(0, 0, 63, 63, 105, 0.8);
|
||||
// at 100bpm, dur will be 1.33 beats
|
||||
seq->add_event(note, 0);
|
||||
|
||||
// at 100bpm, time = W0.33 beats, dur = 0.66 beats
|
||||
|
||||
note = seq->create_note(0.8, 0, 65, 65, 107, 0.4);
|
||||
seq->add_event(note, 0);
|
||||
//seq_print(seq);
|
||||
return seq;
|
||||
}
|
||||
|
||||
void test1()
|
||||
{
|
||||
Alg_seq_ptr seq = make_simple_score();
|
||||
seq->write(cout, false);
|
||||
}
|
||||
|
||||
|
||||
void test2()
|
||||
{
|
||||
Alg_seq_ptr seq = make_simple_score();
|
||||
seq->convert_to_seconds();
|
||||
seq->get_time_map()->last_tempo = 120.0 / 60.0; // 120bpm
|
||||
seq->time_sig.insert(0, 3, 4);
|
||||
seq->write(cout, false);
|
||||
}
|
||||
|
||||
|
||||
Alg_seq_ptr make_score()
|
||||
{
|
||||
Alg_seq_ptr seq = make_simple_score();
|
||||
// now we have notes at 0 and 0.8 seconds
|
||||
// add new ones at 1.2 and 1.8 seconds
|
||||
Alg_note_ptr note = seq->create_note(1.2, 0, 67, 67, 107, 0.6);
|
||||
seq->add_event(note, 0);
|
||||
|
||||
note = seq->create_note(1.8, 0, 69, 69, 109, 0.2);
|
||||
seq->add_event(note, 0);
|
||||
|
||||
// make the tempo such that notes start at 0, 1, 2, 3 beats
|
||||
seq->convert_to_seconds(); // hold time, change beats
|
||||
seq->get_time_map()->insert_beat(0.8, 1.0);
|
||||
seq->get_time_map()->insert_beat(1.2, 2.0);
|
||||
seq->get_time_map()->insert_beat(1.8, 3.0);
|
||||
seq->get_time_map()->insert_beat(2.0, 4.0);
|
||||
return seq;
|
||||
}
|
||||
|
||||
|
||||
void test3()
|
||||
{
|
||||
Alg_seq_ptr seq = make_score();
|
||||
// show the tempo map:
|
||||
seq->get_time_map()->show();
|
||||
|
||||
// write the sequence
|
||||
seq->write(cout, false); // in beats
|
||||
/* score should include
|
||||
63 @ m 0 = 0s
|
||||
65 @ m 0.25 = 0.8s
|
||||
67 @ m 0.5 = 1.2s
|
||||
69 @ m 0.75 = 1.8s
|
||||
*/
|
||||
seq->write(cout, true); // in seconds
|
||||
}
|
||||
|
||||
|
||||
void test4()
|
||||
{
|
||||
Alg_seq_ptr seq = make_score();
|
||||
seq->write(cout, false);
|
||||
ofstream file("test4.mid", ios::out | ios::binary);
|
||||
if (!file) {
|
||||
printf("could not open test4.mid for writing");
|
||||
return;
|
||||
}
|
||||
seq->smf_write(file);
|
||||
file.close();
|
||||
delete seq;
|
||||
ifstream ifile("test4.mid", ios::binary | ios::in);
|
||||
if (ifile.fail()) {
|
||||
printf("could not open test4.mid for reading");
|
||||
return;
|
||||
}
|
||||
seq = new Alg_seq(ifile, true); // read midi file
|
||||
ifile.close();
|
||||
seq->write(cout, false);
|
||||
}
|
||||
|
||||
|
||||
void test5()
|
||||
{
|
||||
Alg_seq_ptr seq = make_score();
|
||||
ofstream file("test5.gro");
|
||||
if (file.is_open()) {
|
||||
printf("could not open test5.gro for writing");
|
||||
return;
|
||||
}
|
||||
seq->write(cout, true);
|
||||
seq->write(file, true);
|
||||
file.close();
|
||||
delete seq;
|
||||
ifstream ifile("test5.gro");
|
||||
if (ifile.fail()) {
|
||||
printf("could not open test5.gro for reading");
|
||||
return;
|
||||
}
|
||||
seq = new Alg_seq(ifile, false); // read midi file
|
||||
ifile.close();
|
||||
printf("SCORE AFTER READING\n");
|
||||
seq->write(cout, true);
|
||||
}
|
||||
|
||||
void test6()
|
||||
{
|
||||
Alg_seq_ptr seq = make_score();
|
||||
seq->write(cout, true);
|
||||
long index = seq->seek_time(1.0, 0);
|
||||
printf("seq->get_units_are_seconds() = %d\n", seq->get_units_are_seconds());
|
||||
printf("seq->seek_time(1.0, 0) returns %ld\n", index);
|
||||
printf("note is:\n");
|
||||
if ((*seq->track(0))[index]->is_note()) {
|
||||
((Alg_note_ptr) (*(seq->track(0)))[index])->show();
|
||||
} else {
|
||||
printf("event is not a note\n");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
# test6()
|
||||
# should print
|
||||
# seq.units_are_seconds t
|
||||
# seq_time(1,0) returns 5
|
||||
# note is:
|
||||
# Alg_note: time 1.2, chan 0, dur 0.6, key 67, pitch 67, loud 107, attributes nil
|
||||
*/
|
||||
|
||||
void test7()
|
||||
{
|
||||
Alg_seq_ptr seq = make_score();
|
||||
seq->write(cout, false);
|
||||
// insert time signature for one bar each of 4/4, 3/4, 5/4, 4/4 and
|
||||
// call quarter_to_measure() on various times
|
||||
seq->convert_to_beats(); // make sure we're talking beats
|
||||
seq->time_sig.insert(0, 4, 4);
|
||||
seq->time_sig.insert(4, 3, 4);
|
||||
seq->time_sig.insert(7, 5, 4);
|
||||
seq->time_sig.insert(12, 4, 4);
|
||||
double qtable[] = {0, 1, 3.999, 4, 4.001, 5, 7, 7.5, 12, 17, 17.25};
|
||||
for (int i = 0; i < 11; i++) {
|
||||
long m;
|
||||
double b, n, d;
|
||||
seq->beat_to_measure(qtable[i], &m, &b, &n, &d);
|
||||
printf("%g -> %ld + %g (%g/%g)\n", qtable[i], m, b, n, d);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
# test7()
|
||||
# should print:
|
||||
# 0 -> [0, 0, 4, 4]
|
||||
# 1 -> [0, 1, 4, 4]
|
||||
# 3.99999 -> [0, 3.99999, 4, 4]
|
||||
# 4 -> [1, 0, 3, 4]
|
||||
# 4.00001 -> [1, 1e-005, 3, 4]
|
||||
# 5 -> [1, 1, 3, 4]
|
||||
# 7 -> [2, 0, 5, 4]
|
||||
# 7.5 -> [2, 0.5, 5, 4]
|
||||
# 12 -> [3, 0, 4, 4]
|
||||
# 17 -> [4, 1, 4, 4]
|
||||
# 17.25 -> [4, 1.25, 4, 4]
|
||||
*/
|
||||
|
||||
void test8()
|
||||
{
|
||||
Alg_seq_ptr seq = make_score();
|
||||
seq->convert_to_beats(); // just to be sure
|
||||
seq->write(cout, false);
|
||||
seq->get_time_map()->beats.len = 1;
|
||||
seq->get_time_map()->show();
|
||||
seq->write(cout, false);
|
||||
printf("insert 1 1 returns %d\n", seq->insert_beat(1.0, 1.0));
|
||||
seq->get_time_map()->show();
|
||||
printf("insert 5 3 returns %d\n", seq->insert_beat(5.0, 3.0));
|
||||
seq->get_time_map()->show();
|
||||
seq->write(cout, false);
|
||||
seq->write(cout, true);
|
||||
}
|
||||
|
||||
/*
|
||||
# should indicate notes starting at 0, .25, .5, and .75 whole notes,
|
||||
# and as seconds, starting at 0, 1, 3, and 5 seconds
|
||||
*/
|
||||
|
||||
void test9()
|
||||
{
|
||||
Alg_seq_ptr seq = make_score();
|
||||
seq->convert_to_beats(); // just to be sure
|
||||
seq->write(cout, false);
|
||||
seq->get_time_map()->beats.len = 1;
|
||||
seq->get_time_map()->show();
|
||||
seq->write(cout, false);
|
||||
printf("insert 30 1 returns %d\n", seq->insert_tempo(30.0, 1.0));
|
||||
seq->get_time_map()->show();
|
||||
printf("insert 15 2 returns %d\n", seq->insert_tempo(15.0, 2.0));
|
||||
seq->get_time_map()->show();
|
||||
seq->write(cout, false);
|
||||
seq->write(cout, true);
|
||||
}
|
||||
|
||||
/*
|
||||
# show show
|
||||
# TW0.25 -tempor:30
|
||||
# TW0.5 -tempor:15
|
||||
# in the beat-based output, and beats at 0, 0.6, 2.6, 6.6 in the
|
||||
# time-based output
|
||||
*/
|
||||
|
||||
void test10()
|
||||
{
|
||||
Alg_seq_ptr seq = make_score();
|
||||
seq->convert_to_beats(); // just to be sure
|
||||
seq->set_time_sig(0.0, 4, 4);
|
||||
seq->set_time_sig(4.0, 3, 4);
|
||||
seq->set_time_sig(7.0, 5, 4);
|
||||
seq->set_time_sig(12.0, 4, 4);
|
||||
double btable[] = { 0.0, 4.0, 7.0, 12.0 };
|
||||
for (int i = 0; i < 4; i++) {
|
||||
long m;
|
||||
double b, n, d;
|
||||
seq->beat_to_measure(btable[i], &m, &b, &n, &d);
|
||||
printf("%g -> %ld + %g (%g/%g)\n", btable[i], m, b, n, d);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
# result should show increasing measure numbers:
|
||||
#
|
||||
# [0, 0, 4, 4]
|
||||
# [1, 0, 3, 4]
|
||||
# [2, 0, 5, 4]
|
||||
# [3, 0, 4, 4]
|
||||
*/
|
||||
|
||||
void test11() // add track
|
||||
{
|
||||
Alg_seq_ptr seq = make_score();
|
||||
seq->convert_to_beats();
|
||||
seq->add_track(3);
|
||||
Alg_note_ptr note = seq->create_note(2.0, 0, 50, 50, 100, 1.0);
|
||||
seq->add_event(note, 3);
|
||||
seq->write(cout, false);
|
||||
seq->write(cout, true);
|
||||
}
|
||||
/*
|
||||
# should put note in track3 at beat TW0.5 (same as T1.2). Make sure
|
||||
# in the beat representation, note has duration Q1.
|
||||
*/
|
||||
|
||||
void test12() // test merge_tracks()
|
||||
{
|
||||
Alg_seq_ptr seq = make_score();
|
||||
seq->convert_to_beats(); // just to be sure
|
||||
seq->add_track(3);
|
||||
Alg_note_ptr note = seq->create_note(2.0, 0, 50, 50, 100, 1.0);
|
||||
seq->add_event(note, 3);
|
||||
seq->write(cout, false);
|
||||
seq->merge_tracks();
|
||||
seq->write(cout, false);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
# test12()
|
||||
#
|
||||
# tracks 1, 2, 3 go away, and the note that was in track 3 appears in track 0
|
||||
*/
|
||||
|
||||
void test13()
|
||||
{
|
||||
Alg_seq_ptr seq = make_score();
|
||||
seq->convert_to_beats(); // just to be sure
|
||||
seq->write(cout, false);
|
||||
seq->set_tempo(120.0, 1, 3);
|
||||
seq->write(cout, false);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
# test13()
|
||||
#
|
||||
# tempo should be transformed to:
|
||||
#
|
||||
# TW0 -tempor:75
|
||||
# TW0.25 -tempor:120
|
||||
# TW0.75 -tempor:300
|
||||
# TW1 -tempor:100
|
||||
*/
|
||||
|
||||
void test14()
|
||||
{
|
||||
Alg_seq_ptr seq = make_score();
|
||||
seq->convert_to_beats(); // just to be sure
|
||||
seq->write(cout, false);
|
||||
seq->set_start_time((*(seq->track(0)))[3], 0.5);
|
||||
seq->write(cout, false);
|
||||
}
|
||||
|
||||
/*
|
||||
# test14()
|
||||
#
|
||||
# should place pitch 67 note at time TW0.125
|
||||
*/
|
||||
|
||||
void test15() // test copy() routine
|
||||
{
|
||||
Alg_seq_ptr seq = make_score();
|
||||
seq->convert_to_beats(); // just to be sure
|
||||
Alg_event_ptr event = (*(seq->track(0)))[3];
|
||||
event->show();
|
||||
event = seq->copy_event(event);
|
||||
event->show();
|
||||
event = (*(seq->track(0)))[0];
|
||||
event->show();
|
||||
event = seq->copy_event(event);
|
||||
event->show();
|
||||
}
|
||||
|
||||
/*
|
||||
# test15()
|
||||
#
|
||||
# should print two identical notes, (orginal and a copy)
|
||||
# and two identical updates
|
||||
*/
|
||||
|
||||
void test16() // test cut_from_track
|
||||
{
|
||||
Alg_seq_ptr seq = make_score();
|
||||
seq->convert_to_beats(); // just to be sure
|
||||
seq->write(cout, false);
|
||||
Alg_track_ptr track = seq->cut_from_track(0, 2, 1, true);
|
||||
seq->track_list.append(track);
|
||||
seq->write(cout, false);
|
||||
}
|
||||
|
||||
/*
|
||||
# test16()
|
||||
#
|
||||
# should print original score and modified score
|
||||
# modified score has:
|
||||
# K63 at TW0
|
||||
# K65 at TW0.25
|
||||
# K69 at TW0.5
|
||||
# and on track 1 has
|
||||
# K67 at TW0
|
||||
*/
|
||||
|
||||
void test17() // test cut
|
||||
{
|
||||
Alg_seq_ptr seq = make_score();
|
||||
seq->convert_to_beats(); // just to be sure
|
||||
seq->set_time_sig(0, 2, 4);
|
||||
seq->set_time_sig(2, 2, 8);
|
||||
seq->set_time_sig(3, 4, 4);
|
||||
seq->write(cout, false);
|
||||
Alg_seq_ptr new_seq = seq->cut(2, 1, true)->to_alg_seq();
|
||||
printf("after cut, original is\n");
|
||||
seq->write(cout, false);
|
||||
printf("after cut, new is\n");
|
||||
new_seq->write(cout, false);
|
||||
}
|
||||
|
||||
/*
|
||||
# test17()
|
||||
#
|
||||
# should see seq with everything, then seq with
|
||||
# 2/4 at 0, 4/4 at TW0.5
|
||||
# and K63 at TW0, K65 at TW0.25, and K69 at TW0.5,
|
||||
# then in last seq,
|
||||
# 2/8 at 0, and K67 at 0
|
||||
*/
|
||||
|
||||
|
||||
void test18() // test copy_interval_from_track
|
||||
{
|
||||
Alg_seq_ptr seq = make_score();
|
||||
seq->convert_to_beats(); // just to be sure
|
||||
Alg_track_ptr track = seq->track_list[0].copy(1, 2, false);
|
||||
seq->track_list.append(track);
|
||||
seq->write(cout, false);
|
||||
}
|
||||
/*
|
||||
# test18()
|
||||
#
|
||||
# should see track 0 from beat 1 to 3, i.e.
|
||||
# K65 at T0, K67 at TW0.25
|
||||
*/
|
||||
|
||||
void test19() // test copy
|
||||
{
|
||||
Alg_seq_ptr seq = make_score();
|
||||
seq->convert_to_beats();
|
||||
seq->set_time_sig(0, 2, 4);
|
||||
seq->set_time_sig(2, 2, 8);
|
||||
seq->set_time_sig(3, 4, 4);
|
||||
seq->set_tempo(120.0, 1, 3);
|
||||
seq->write(cout, false);
|
||||
printf("\n");
|
||||
Alg_seq_ptr new_seq = seq->copy(2, 1, true);
|
||||
printf("----------after cut, original---------\n");
|
||||
seq->write(cout, false);
|
||||
printf("----------after cut, new--------------\n");
|
||||
new_seq->write(cout, false);
|
||||
}
|
||||
|
||||
/*
|
||||
# test19()
|
||||
#
|
||||
# should output original, original again (with no changes),
|
||||
# then a sequence with tempo 120 and k67 at TW0
|
||||
*/
|
||||
|
||||
void test20() // TEST 20 -- test track paste
|
||||
{
|
||||
Alg_seq_ptr seq = make_score();
|
||||
seq->convert_to_beats();
|
||||
Alg_track &track = *(seq->track(0)->copy(1, 2, false));
|
||||
printf("-------seq:---------\n");
|
||||
seq->write(cout, false);
|
||||
printf("-------track to paste ---------:\n");
|
||||
Alg_seq_ptr new_seq = new Alg_seq(track);
|
||||
new_seq->write(cout, false);
|
||||
seq->track(0)->paste(2, &track);
|
||||
printf("----------after paste, seq is:---------\n");
|
||||
seq->write(cout, false);
|
||||
}
|
||||
|
||||
/*
|
||||
# test20()
|
||||
#
|
||||
# final printed sequence should be quarter notes as follows:
|
||||
# K63, K65, K65, K67, K67, K69 (last at TW1.25)
|
||||
*/
|
||||
|
||||
void test21() // TEST 21 -- test paste
|
||||
{
|
||||
Alg_seq_ptr seq = make_score();
|
||||
seq->convert_to_beats();
|
||||
seq->set_time_sig(0, 2, 4);
|
||||
seq->set_time_sig(2, 2, 8);
|
||||
seq->set_time_sig(3, 4, 4);
|
||||
seq->set_tempo(120.0, 1, 3);
|
||||
printf("-------seq original:---------\n");
|
||||
seq->write(cout, false);
|
||||
Alg_seq_ptr copy_buffer = seq->copy(1, 2, false);
|
||||
printf("-------what to paste:---------\n");
|
||||
copy_buffer->write(cout, false);
|
||||
seq->paste(2, copy_buffer);
|
||||
printf("-------after paste: ---------:\n");
|
||||
seq->write(cout, false);
|
||||
}
|
||||
|
||||
/*
|
||||
# test21()
|
||||
#
|
||||
# should print like in test20, but with tempo as follows:
|
||||
# TW0: 75
|
||||
# TW0.25: 120
|
||||
# TW0.5: 120
|
||||
# TW1: 120
|
||||
# TW1.25 300
|
||||
# TW1.5: 100
|
||||
# and the time signatures should be:
|
||||
# TW0: 2/4
|
||||
# TW0.5: 2/4
|
||||
# TW0.75: 2/8
|
||||
# TW1: 2/8
|
||||
# TW1.25: 4/4
|
||||
*/
|
||||
|
||||
void test22() // TEST 22 -- test merge_to_track
|
||||
{
|
||||
Alg_seq_ptr seq = make_score();
|
||||
seq->convert_to_beats();
|
||||
Alg_track_ptr track = seq->track(0)->copy(1, 2, false);
|
||||
printf("seq\n");
|
||||
seq->write(cout, false);
|
||||
printf("track:\n");
|
||||
Alg_seq_ptr new_seq = new Alg_seq(track);
|
||||
new_seq->write(cout, false);
|
||||
seq->merge(2, new_seq);
|
||||
printf("seq after merge\n");
|
||||
seq->write(cout, false);
|
||||
}
|
||||
|
||||
/*
|
||||
#test22()
|
||||
#
|
||||
# should output as follows:
|
||||
# 0 K63
|
||||
# 0.25 K65
|
||||
# 0.5 K67 and K65
|
||||
# 0.75 K69 and K67
|
||||
*/
|
||||
|
||||
|
||||
void test23() // test merge
|
||||
{
|
||||
Alg_seq_ptr seq = make_score();
|
||||
seq->convert_to_beats();
|
||||
Alg_track_ptr track = seq->track(0)->copy(1, 2, false);
|
||||
printf("seq:\n");
|
||||
seq->write(cout, false);
|
||||
printf("new_seq:\n");
|
||||
Alg_seq_ptr new_seq = new Alg_seq(track);
|
||||
new_seq->write(cout, false);
|
||||
seq->merge(2, new_seq);
|
||||
printf("seq after merge:\n");
|
||||
seq->write(cout, false);
|
||||
}
|
||||
|
||||
/*
|
||||
# test23()
|
||||
#
|
||||
# should output same as test22
|
||||
*/
|
||||
|
||||
void test24() // test silence_track
|
||||
{
|
||||
Alg_seq_ptr seq = make_score();
|
||||
seq->convert_to_beats();
|
||||
seq->silence_track(0, 1, 2, true);
|
||||
seq->write(cout, false);
|
||||
}
|
||||
|
||||
/*
|
||||
#test24()
|
||||
#
|
||||
# should print two notes: K63 at T0 and K69 at TW0.75
|
||||
*/
|
||||
|
||||
void test25() // test silence_events
|
||||
{
|
||||
Alg_seq_ptr seq = make_score();
|
||||
seq->convert_to_beats();
|
||||
// copy everything from track 0
|
||||
Alg_track_ptr tr = seq->copy_track(0, 0, 10, false);
|
||||
// and make the new data be track 1
|
||||
seq->track_list.append(tr);
|
||||
seq->silence(1, 2, true);
|
||||
seq->write(cout, false);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
#test25()
|
||||
#
|
||||
# should print track 0 like test24, and track 1 like track 0
|
||||
*/
|
||||
|
||||
void test26() // test clear_track
|
||||
{
|
||||
Alg_seq_ptr seq = make_score();
|
||||
seq->convert_to_beats();
|
||||
seq->clear_track(0, 1, 2, true);
|
||||
seq->write(cout, false);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
# test26()
|
||||
#
|
||||
# should print two notes: K63 at T0 and K69 at TW0.25
|
||||
*/
|
||||
|
||||
void test27() // test clear
|
||||
{
|
||||
Alg_seq_ptr seq = make_score();
|
||||
seq->convert_to_beats();
|
||||
// copy everything from track 0
|
||||
Alg_track_ptr track = seq->copy_track(0, 0, 10, false);
|
||||
// and make the new data be track 1
|
||||
seq->track_list.append(track);
|
||||
seq->clear(1, 2, true);
|
||||
seq->write(cout, false);
|
||||
}
|
||||
|
||||
/*
|
||||
#
|
||||
# should print track 0 like test26, and track 1 like track 0
|
||||
*/
|
||||
|
||||
|
||||
void test28() // test insert_silence_in_track
|
||||
{
|
||||
Alg_seq_ptr seq = make_score();
|
||||
printf("BEFORE:\n");
|
||||
seq->write(cout, false);
|
||||
seq->convert_to_beats();
|
||||
seq->insert_silence_in_track(0, 1, 2);
|
||||
printf("AFTER:\n");
|
||||
seq->write(cout, false);
|
||||
}
|
||||
|
||||
/*
|
||||
# test28()
|
||||
#
|
||||
# should print this:
|
||||
# TW0 K63
|
||||
# TW0.75 K65
|
||||
# TW1 K67
|
||||
# TW1.25 K69
|
||||
*/
|
||||
|
||||
void test29() // test insert_silence
|
||||
{
|
||||
Alg_seq_ptr seq = make_score();
|
||||
seq->convert_to_beats();
|
||||
seq->set_time_sig(0, 2, 4);
|
||||
seq->set_time_sig(2, 2, 8);
|
||||
printf("BEFORE:\n");
|
||||
seq->write(cout, false);
|
||||
seq->insert_silence(1, 2);
|
||||
printf("AFTER:\n");
|
||||
seq->write(cout, false);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
# test29()
|
||||
#
|
||||
# should print
|
||||
# TW0 -tempor:75
|
||||
# TW0.25 -tempor:150
|
||||
# TW1 -tempor:100
|
||||
# TW1.25 -tempor:300
|
||||
# TW1.5 -tempor:100
|
||||
# TW0 ... (2/4 time) ...
|
||||
# TW1 ... (2/8 time) ...
|
||||
# TW0 V0 -attackr:0.007
|
||||
# TW0 V0 K63 P63 Q1 L105
|
||||
# TW0.75 V0 K65 P65 Q1 L107
|
||||
# TW1 V0 K67 P67 Q1 L107
|
||||
# TW1.25 V0 K69 P69 Q1 L109
|
||||
*/
|
||||
|
||||
void test30() // test find on a track
|
||||
{
|
||||
Alg_seq_ptr seq = make_score();
|
||||
seq->convert_to_beats();
|
||||
Alg_event_list_ptr track = seq->track(0)->find(0, 2, false, 1 << 0,
|
||||
1 << ALG_NOTE);
|
||||
seq->track_list.append(new Alg_track(*track, seq->get_time_map(),
|
||||
seq->get_units_are_seconds()));
|
||||
seq->write(cout, false);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
# test30()
|
||||
#
|
||||
# sets track 1 to TW0 K63, TW0.25 K65
|
||||
*/
|
||||
|
||||
|
||||
void test31() // test find_in_track
|
||||
{
|
||||
Alg_seq_ptr seq = make_score();
|
||||
seq->convert_to_beats();
|
||||
Alg_event_list_ptr track = seq->find_in_track(0, 0, 2, false, 1 << 0,
|
||||
1 << ALG_NOTE);
|
||||
seq->track_list.append(new Alg_track(*track, seq->get_time_map(),
|
||||
seq->get_units_are_seconds()));
|
||||
seq->write(cout, false);
|
||||
}
|
||||
|
||||
void test32() // serialize big midi file and unserialize
|
||||
{
|
||||
ifstream file("jsb-wtc-c-f.mid", ios::in | ios::binary);
|
||||
if (!file) {
|
||||
printf("Error: Could not open jsb-wtc-c-f.mid for reading\n");
|
||||
return;
|
||||
}
|
||||
Alg_seq_ptr seq = new Alg_seq(file, true); // read midi file
|
||||
file.close();
|
||||
|
||||
ofstream ofile("bigseq1.alg", ios::out | ios::binary);
|
||||
printf("after reading, real_dur is %g, beat_dur is %g\n",
|
||||
seq->get_real_dur(), seq->get_beat_dur());
|
||||
seq->write(ofile, true);
|
||||
ofile.close();
|
||||
|
||||
void *buffer;
|
||||
long bytes;
|
||||
seq->serialize(&buffer, &bytes);
|
||||
printf("Serialized %ld bytes\n", bytes);
|
||||
Alg_seq_ptr new_seq = (Alg_seq_ptr) seq->unserialize(buffer, bytes);
|
||||
ofstream sfile("bigseq2.alg", ios::out | ios::binary);
|
||||
new_seq->write(sfile, true);
|
||||
sfile.close();
|
||||
}
|
||||
|
||||
void test33() // cut and inspect some notes
|
||||
{
|
||||
ifstream file("be-ps-05.mid", ios::in | ios::binary);
|
||||
if (!file.is_open()) {
|
||||
printf("Error: Could not open be-ps-05.mid for reading\n");
|
||||
return;
|
||||
}
|
||||
Alg_seq_ptr seq = new Alg_seq(file, true); // read midi file
|
||||
file.close();
|
||||
seq->convert_to_seconds();
|
||||
|
||||
Alg_time_map_ptr tm = seq->get_time_map();
|
||||
printf("time map %p before\n", tm);
|
||||
// tm->show();
|
||||
printf("timestamp before %.15g\n", tm->beats[tm->locate_time(3.74)].time);
|
||||
ofstream ofile("before-33.alg", ios::out | ios::binary);
|
||||
seq->write(ofile, true);
|
||||
ofile.close();
|
||||
|
||||
Alg_seq_ptr cut = seq->cut(0.0, 3.0, false);
|
||||
|
||||
tm = seq->get_time_map();
|
||||
printf("timemap %p after\n", tm);
|
||||
// tm->show();
|
||||
printf("timestamp after %.15g\n", tm->beats[tm->locate_time(0.74)].time);
|
||||
ofile.open("after-33.alg", ios::out | ios::binary);
|
||||
seq->write(ofile, true);
|
||||
ofile.close();
|
||||
}
|
||||
|
||||
|
||||
int main()
|
||||
{
|
||||
test33();
|
||||
printf("Test 33 done, type return to exit\n");
|
||||
getchar();
|
||||
}
|
199
lib-src/portsmf/portsmf_test/portsmf_test.vcproj
Normal file
199
lib-src/portsmf/portsmf_test/portsmf_test.vcproj
Normal file
@@ -0,0 +1,199 @@
|
||||
<?xml version="1.0" encoding="Windows-1252"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="9.00"
|
||||
Name="portsmf_test"
|
||||
ProjectGUID="{AF00107F-E436-4EBC-A1F3-CB176E7D1F84}"
|
||||
RootNamespace="allegro_test"
|
||||
Keyword="Win32Proj"
|
||||
TargetFrameworkVersion="131072"
|
||||
>
|
||||
<Platforms>
|
||||
<Platform
|
||||
Name="Win32"
|
||||
/>
|
||||
</Platforms>
|
||||
<ToolFiles>
|
||||
</ToolFiles>
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
|
||||
IntermediateDirectory="$(ConfigurationName)"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories=".."
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
|
||||
MinimalRebuild="true"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="3"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="0"
|
||||
Detect64BitPortabilityProblems="false"
|
||||
DebugInformationFormat="4"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="../Debug/portsmf.lib"
|
||||
LinkIncremental="2"
|
||||
GenerateDebugInformation="true"
|
||||
SubSystem="1"
|
||||
RandomizedBaseAddress="1"
|
||||
DataExecutionPrevention="0"
|
||||
TargetMachine="1"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManifestTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCAppVerifierTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
|
||||
IntermediateDirectory="$(ConfigurationName)"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="1"
|
||||
WholeProgramOptimization="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories=".."
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
|
||||
RuntimeLibrary="0"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
Detect64BitPortabilityProblems="false"
|
||||
DebugInformationFormat="3"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
LinkIncremental="1"
|
||||
GenerateDebugInformation="true"
|
||||
SubSystem="1"
|
||||
OptimizeReferences="2"
|
||||
EnableCOMDATFolding="2"
|
||||
RandomizedBaseAddress="1"
|
||||
DataExecutionPrevention="0"
|
||||
TargetMachine="1"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManifestTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCAppVerifierTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
<References>
|
||||
</References>
|
||||
<Files>
|
||||
<Filter
|
||||
Name="Source Files"
|
||||
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
|
||||
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
|
||||
>
|
||||
<File
|
||||
RelativePath=".\portsmf_test.cpp"
|
||||
>
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Header Files"
|
||||
Filter="h;hpp;hxx;hm;inl;inc;xsd"
|
||||
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
|
||||
>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Resource Files"
|
||||
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
|
||||
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
|
||||
>
|
||||
</Filter>
|
||||
</Files>
|
||||
<Globals>
|
||||
</Globals>
|
||||
</VisualStudioProject>
|
8
lib-src/portsmf/portsmf_test/scale.gro
Normal file
8
lib-src/portsmf/portsmf_test/scale.gro
Normal file
@@ -0,0 +1,8 @@
|
||||
TW0 C4 Q
|
||||
D4 Q
|
||||
E4 Q
|
||||
F4 Q
|
||||
G4 Q
|
||||
A4 Q
|
||||
B4 Q
|
||||
C5 Q
|
22
lib-src/portsmf/portsmf_test/test.gro
Normal file
22
lib-src/portsmf/portsmf_test/test.gro
Normal file
@@ -0,0 +1,22 @@
|
||||
TW0 C4 Q
|
||||
D4 Q
|
||||
E4 Q
|
||||
F4 Q
|
||||
G4 Q
|
||||
A4 Q
|
||||
B4 Q
|
||||
C5 Q
|
||||
|
||||
|
||||
TQ1.5 E4 Q L0 -shapea:'rectangle' -y1r:60.0 -filll:false -linecolori:0 -linethicki:3
|
||||
TQ5.5 P64.1 Q L0 -shapea:'rectangle' -y1r:60.0 -filll:false -linecolori:0 -linethicki:3
|
||||
|
||||
TQ C4 W2 L0 -shapea:'line' -y1r:72.0 -linecolori:0 -linethicki:2
|
||||
|
||||
TH G4 U0.6 L0 -shapea:'triangle' -y1r:67.0 -x1r:1.8 -y2r:72.0 -linecolori:0 -linethicki:1 -filll:t
|
||||
|
||||
TQ3 B4 Q L0 -shapea:'oval' -y1r:60.0 -filll:false -linecolori:255 -linethicki:2
|
||||
|
||||
T0 G4 U1.0 L0 -shapea:'polygon' -x1r:0.8 -y1r:65.0 -x2r:1.0 -y2r:68 -x3r:0.9 -y3r:72.0 -x4r:0.2 -y4r:72.0 -filll:t
|
||||
|
||||
TW C4 L0 U0 -shapea:'text' -texts:"Hello World" -linecolori:128 -sizei:20 -justifys:"lc" -fonta:'modern' -weighta:'bold' -filll:t -fillcolori:65535
|
11
lib-src/portsmf/portsmf_test/test2.gro
Normal file
11
lib-src/portsmf/portsmf_test/test2.gro
Normal file
@@ -0,0 +1,11 @@
|
||||
TW0 C4 Q
|
||||
D4 Q
|
||||
E4 Q
|
||||
F4 Q
|
||||
G4 Q
|
||||
A4 Q
|
||||
B4 Q
|
||||
C5 Q
|
||||
|
||||
|
||||
TQ5.5 P64.1 Q L0 -shapea:'rectangle' -y1r:60.0 -filll:false -linecolori:0 -linethicki:3
|
10
lib-src/portsmf/portsmf_test/test5.gro
Normal file
10
lib-src/portsmf/portsmf_test/test5.gro
Normal file
@@ -0,0 +1,10 @@
|
||||
#track 0
|
||||
T0 -tempor:75
|
||||
T0.8 -tempor:150
|
||||
T1.2 -tempor:100
|
||||
T1.8 -tempor:300
|
||||
T0 V0 -attackr:0.007
|
||||
T0 V0 K63 P63 U0.8 L105
|
||||
T0.8 V0 K65 P65 U0.4 L107
|
||||
T1.2 V0 K67 P67 U0.6 L107
|
||||
T1.8 V0 K69 P69 U0.2 L109
|
Reference in New Issue
Block a user