[jmsl] Passing MusicShape to PHP
jmsl at music.columbia.edu
jmsl at music.columbia.edu
Mon Apr 13 14:23:00 EDT 2009
You can use a separate ByteArrayOutputStream to capture the
MusicShape.save() output, and then write the entire contents of the
ByteArrayOutputStream to our dataoutputstream.
Something like:
ByteArrayOutputStream bout = new ByteArrayOutputStream();
PrintWriter out = new PrintWriter(bout);
try {
m.save(out);
} catch (IOException e) {
e.printStackTrace();
}
out.close();
// bout.close(); // need to close? not sure
// now the ByteArrayOutputStream has stored the contents of
everything musicshape wrote to PrintWriter
System.out.println("bout.toByteArray(), you can write this to a
data output stream " + bout.toByteArray().length);
// dos.writeBytes(bout.toByteArray());
Thanks,
Nick Didkovsky
jmsl at music.columbia.edu wrote:
> I wrote a testing program that uploads a file through php. Everything
> seems to work well. I'm having a problem figuring out making
> MusicShape.save to write through DataOutputStream. Nothing gets
> written. The file just has the text "This is a test." that I added at
> the end. How can I make it work?
> Thanks for the help. Here's the code.
>
>
> MidiInstrument ins = new MidiInstrument(1);
> MusicShape s1 = new MusicShape(ins.getDimensionNameSpace() );
> s1.add(0.0, 64, 100, 2.0);
> s1.add(0.0, 66, 90, 2.5);
> s1.add(1.5, 69, 80, 1.5);
> s1.add(0.0, 72, 70, 2.5);
> s1.add(1.5, 75, 100, 2.0);
> s1.setInstrument(ins);
> s1.setRepeats(100);
> s1.setName("Piano");
>
>
> MusicShape s2 = new MusicShape(ins.getDimensionNameSpace());
> s2.add(0.3333, 72, 70, 0.33);
> s2.add(0.3333, 74, 80, 0.33);
> s2.add(0.3333, 77, 70, 0.33);
> s2.add(0.6666, 80, 85, 0.66);
> s2.add(0.3333, 73, 70, 0.33);
> s2.setInstrument(ins);
> s2.setRepeats(100);
> s2.setName("Oboe");
>
>
> String newLine = "\r\n";
> String dashes = "--";
>
>
> URL url = new URL("http://localhost/upload.php");
> huc = (HttpURLConnection) url.openConnection();
> huc.setDoInput(true);
> huc.setDoOutput(true);
> huc.setUseCaches(false);
> huc.setRequestMethod("POST");
> huc.setRequestProperty("Connection", "Keep-Alive");
> huc.setRequestProperty("Content-Type",
> "multipart/form-data;boundary="+boundary);
>
>
> DataOutputStream dos = new DataOutputStream( huc.getOutputStream());
> dos.writeBytes(dashes + boundary + newLine);
> dos.writeBytes("Content-Disposition: form-data; name=\"Message\"" +
> newLine);
> dos.writeBytes(newLine);
> dos.writeBytes(msg + newLine);
> dos.writeBytes(dashes + boundary + newLine);
> dos.writeBytes("Content-Disposition: form-data; name=\"upload\";" + "
> filename=\"" + fileName +"\"" + newLine);
> dos.writeBytes(newLine);
> PrintWriter pw = new PrintWriter(dos);
> s1.save(pw);
> s2.save(pw);
>
>
> dos.writeBytes("This is a test.");
>
> dos.writeBytes(newLine);
> dos.writeBytes(dashes + boundary + dashes + newLine);
> dos.flush();
> dos.close();
>
> ----- Original Message ----- From: <jmsl at music.columbia.edu>
> To: <jmsl at music.columbia.edu>
> Sent: Saturday, April 11, 2009 2:39 PM
> Subject: Re: [jmsl] Exporting to Midi
>
>
>> I am not sure what your design intent is...
>> Do you want to offer a sequencer in an applet, with the ability to
>> edit and save music to the server? Do you want to be able to load
>> music from the server back into the sequencer for further editing? If
>> so, then don't save it as a midi file, save the hierarchy and data as
>> I described earlier.
>> Thanks
>> Nick
>>
>>
>> jmsl at music.columbia.edu wrote:
>>> It's just an alternative to xml. If I go for xml route, I would need
>>> to make a player.
>>> If I go for midi route, I could just embed midi file inn html, but I
>>> need to find out the way to export the entire sequence into midi
>>> like MidiLoggerRealTimeTest preferably without the rendering time.
>>> Which one do you think is easier? Thanks.
>>>
>>> Chi
>>> ----- Original Message ----- From: <jmsl at music.columbia.edu>
>>> To: <jmsl at music.columbia.edu>
>>> Sent: Saturday, April 11, 2009 10:41 AM
>>> Subject: Re: [jmsl] Exporting to Midi
>>>
>>>
>>>> Is your goal really to create a MidiFile or is this is a
>>>> followup/alternative to your previous posting (ie a way to
>>>> save/load a piece)?
>>>> Thanks
>>>> Nick
>>>>
>>>> jmsl at music.columbia.edu wrote:
>>>>> I've checked out the example MidiLoggerNonRealTimeTest from
>>>>> jmsltestsuite. Is there way to export all the data from sequential
>>>>> collection which contains parallel collections which contains
>>>>> music shapes to midi in non-realtime? The example seems to feed
>>>>> one midi message at a time to the logger.
>>>>> If that's the only way, I'd probably need to figure out which
>>>>> notes play at the same time from different music shapes from
>>>>> different parallel collections and calculate note on and off time
>>>>> which might be too much work. MidiLoggerRealTimeTest sounds very
>>>>> simple, but users have to wait to hear the whole thing to render
>>>>> into midi. If you have a good solution, please let me know.
>>>>> How can I make JMSL to play through an external midi device (not
>>>>> soundbank) without MidiShare? I know timing might be sloppy, but
>>>>> can I still do it?
>>>>> Thanks,
>>>>>
>>>>> Chi
>>>>> _______________________________________________
>>>>> jmsl mailing list
>>>>> jmsl at music.columbia.edu
>>>>> http://music.columbia.edu/mailman/listinfo/jmsl
>>>> _______________________________________________
>>>> jmsl mailing list
>>>> jmsl at music.columbia.edu
>>>> http://music.columbia.edu/mailman/listinfo/jmsl
>>>>
>>>
>>> _______________________________________________
>>> jmsl mailing list
>>> jmsl at music.columbia.edu
>>> http://music.columbia.edu/mailman/listinfo/jmsl
>> _______________________________________________
>> jmsl mailing list
>> jmsl at music.columbia.edu
>> http://music.columbia.edu/mailman/listinfo/jmsl
>>
>
> _______________________________________________
> jmsl mailing list
> jmsl at music.columbia.edu
> http://music.columbia.edu/mailman/listinfo/jmsl
More information about the jmsl
mailing list