Creating a MIDI file for Finale or Sibelius
I have a patch that generates a random series of sixteenth note vales (1 = sixteenth note, 2 = eighth note, etc.), and a random series of pitches. I’m trying to find a way to export these values as a midi file that can be opened in finale or sibelius. Help!!
[seq] or [detonate]. in any case, you have to record the events in realtime before you can export.
Thank Roman. I’m a bit of a newb with MIDI in Max. If I have a coll object with a series of values that look like this:
for rhythm (# of sixteenth notes in duration)
What would be the best way to record them into [seq] or [detonate] so that when I bring the midi file over to finale or sibelius, I’m going to have the right rhythmic values? Or if I wanted to do randomized pitches instead, to just have a quarter note value for each pitch?
>> [seq] or [detonate]. in any case, you have to record the events in realtime before you can export.
Not true for [detonate], in which you can record in nonrealtime.
See this example.
i dont see any duration values there yet …
If I understand you correctly, you want to have a table of successive durations (more specifically a coll containing number of 16ths between notes) and convert that into a series of MIDI notes. So, based on your beat tempo (beats per minute) you need to calculate the amount of time each 16th-note pulse takes (milliseconds per 16th-note) and multiply that by each of your stored durations to get the correct milliseconds to wait till the next note. Here’s a patch that plays your rhythm and stores it in a seq object (which you can then write to a MIDI file).
----------begin_max5_patcher---------- 1721.3oc2ZszbaaCD9r7uBTdriiBA.AezSsyzK4P+EjIiGHQHGlvGpjPJwMS 9uW7hJzNRPTjfRz4fMMnA.28C69sKVfuc2BuUUek03A9Cv6AKV7s6VrP8J4K VXZuvqf9004zFU27VWUTvJ4d2q+eb1W4p2ustZeVJCrmkWsNi+DfVlBJq3r2 TsYSauyyJYqq1UpFBx7xM0OtR11eoe6apJ4kzBlZh+q5LZd6DrkxW+wrxGen lslqEaTbrXf.bLYI4d.zGpZgW5C9fYPYopIpZ0mdSP6DUtqHqLmwUJEry2sI 6+TeWH5f3H5a0Ndam8ku762cm7W2ORPaSUcAkCnMf+4c+86.ErlF5ih0iIDt vH4.AADENkDZCshCmWvUCmVyABcopNUnUdNBQvJPHVgKwQxeKwniBH2H6mR1 WDe9e1mit9ydCRk8CTFAXjZ4OzpNiNpNitDctEfzuh+zVlVN77.evcvQQVZl wiB5OJbQaK.88sBLviBLQNAXxjN8evk9Nz8L.uBPAaxxYNx0AFoLcBBUvVTr M3JJ9136XHUOBYR016Aorb5S.gX+k5LNyaLffwnApHVgwm.EBmcdSmBfz7rC BRBfcgj.hUDI30B+RC6eGCqBApYaQx7TNoWBZ7dIHajJ2C7VQEwNcK4hvWxQ TJHjBrPQn1LSr.Vv4U9IYkYbg1I9j.NqXakqRPQa+.CTORrFTJLYVkgRdEMU xuHikNFeGXnN6LhUcOZ75tiYRNkkhJrSiacYLXTfcLZlkR+VY3W41DcUFIIZ dCsuBIwJVLy1MHuN6wGY0fRwKzIl3HPgDKC4fIHcVsV4TCQyJBjU.zvRJCoq Jf9Qn0c0E5OgwbUAamjfthdHRouoZWYpqHR70fVn5QjUhDRxbr1.JuFltvSN idU4uDq4X04vcRPIZ9sGGuQPi9rrvNUB7DxrKAdqQa1jU2vcYLGoaifeUWGx X6FH3YF6ZvXXWI5BGEZs9QDGjjdPuXWu2Ersm.ohHio1.FFU6a8KHdB8iFb8 jNAdHceDejgVns1ZlnK.IDFXEXNNAC9VEpovUQVzkGAkXbir4EguQUOaSdkX RF1V2PczNh0cshsuqjszZwGkypefURWkq979NI6Lg5Q4SBgwyyeeHotp24K1 5VXvSYwybNlTP+LSRbHqFvfqHPKkZRenNv3wScbdiG8e33JpIRm0U6IFoKIs F2BrZOci182pcbdUYe1OWqzaQGructI23+TKo0rFFWdDL9Nttf5GgPafBJdd scMXH+iNNLp9PnBrZafvyKXXcU4dlXeqapqJ.q1VHMOJZdqDcb0lSfIJBRs2 OLzZweP2nBpKlgUr5wjkgYw25IPBStQYYL5yc4DwS+c.b4XRwvfZDnsPnvnI LEiIHxoicez6sGooUHV8dfgu5xQWdlAcTOqbmvfe4RR+2dK.R788WNJvSSsR rViYH50kWjHVja8fNbvLVQI3qUOHi5Y2CJ4WNGH0sSbfQtMAgZe.sdbCG28g 3jhHZBO29iqKU15p7bvexDY3jBfiBozGvah0D8mxps1Ek7N7wk52CoTN0.MF rYg2gqtp4JwsvqsWuW0uC8T7e9L6oN16x2rmluy7gI5kiEsKFGcnviNzv9LT zQGZTeFJd3CM3nCE2mgRF9PCOKLY9SwbnWek2bvzGD1VB6wGnbdclX255KMd 2UakAtZgvL7NdPJaE00Y9E20bkwt78O2spoZW85VqNCyI3Gl6orFdVIkmUU1 oOxPrc5zGyRSYkcIQSyZj7pomNJQeEmXTOjG48C8ZIOvdHOQWO7QdKGGu7Tj ktsRvFarYf5a3OwWEn.CwGZ8iOj6zffIPCBPWQMPdanNqFjbYJfQjg56gELR eiWimHEvWHbvyn.xCM6JYTqjmyAnWpMMNRe0bL2t.Uw9edq1p2p6op0D.1xC w+rJGN3xzNjutxBIZQWqApVSgFH4.wmyi8B0.br53EL2iYs6ar+zrB.cg49K WAD1PwXLFE2d+DPI5qyR2F3PTqiLwzZpTvw5+3XwA0CwAcAlK9nkvvvPRnzS 0uCnBQSiUyKLHNgeK9pgp39D27ELoSp7f6SlZCKSDIevOhiqZMAqvJM.1GM. dA7BwpfJAvH886RUCCUqoRCN2ZP.45ZS.6i7LLDUFjCiWhLP5TDrC2mbQHWu Mfzm8Cc8jFXeR8EGNnT0PwI504CMlfk29o.AWO.sOr5JgFdcjmdYucEwm9HN ICydSetBF6MxzvPC66x6PfScwena2tmU2XlSkj3UP+TU8ghRI.fRcS0L5Uy1 m01+36jy12u6+ADZQUxO -----------end_max5_patcher-----------
Thanks for the replies.
Roman–the durations were in # of sixteenth notes between attacks, as Christopher understood. The first number (in [0, 5] for example) is just the index # in the coll object. So the duration value would be the second number, or in this case 5 sixteenth notes.
Thanks for the patch Christopher. I ended up coming up with a solution that records in realtime, though yours is definitely more elegant. The realtime recording isn’t a huge issue since the person I’m writing it for wants to hear it before exporting, but it would be nice to have a non-realtime solution somewhere down the line. I don’t completely understand the detonate object yet, but will have to look into it some more.