Hey all,

My day's are starting to settle down after relocation away from central
London. I'm finally in a new apartment, although have to wait until the
20th to get broadband connected. One of the final pieces of relocation.
Mobile broadband isn't too bad, but has a sucky upload speed (that's
stalled my recent vlogging on YouTube). But considering the change in cost
of living, I'm not complaining :)

Currently my day is to awake and answer emails and gitter where possible.
Following overnight changes and discussions. A couple of hours work before
taking the afternoon off. Then back to main working in the evenings when
the US West coast awakes (around 5pm local time).

The past few weeks has had me buried in the NuPIC for Windows work.
Thankfully we've made some breakthroughs recently freeing up a little time.

Time to file and fill five binders of research papers (not including the
200 or so I have in Medeley, some duplicates from print outs). I still need
to go back and arrange them into some order.
To start seriously thinking about HTM and audio with a view to the HTM
challenge event.
To continue diagnosing problems with the C++ TM port and looking at C++
encoder porting.
Getting back to multi-sensory encoding research. Keeping the dream alive of
joining vision and audio, taking advantage of HTM theory. An emphasis on
feed-forward first, with feedback and attention at a later stage. Alongside
keeping as up to date with HTM theory discussions as I can.
Preparing for a HTM presentation that may occur in December to a general
Tech audience.
And getting back to vlogging my activities and thoughts.

I'm sure I'm forgetting something, but my notebook isn't at hand. All in
all keeping busy and having immense fun, continuing to challenging myself
and stride onwards and upwards.

Regards, Richard.

PS: It looks worth creating a new thread for discussing the chord
sequencing/prediction. Be good to get this thread back and see what others
are up to?


On Sun, Oct 11, 2015 at 7:18 PM, Jos Theelen <[email protected]> wrote:

> Putting a chord as a sequence of notes is a possibility, but I will first
> try to see a chord as one object. In that case the system hopefully learns,
> which sequence of chords sounds good and which sounds bad.
>
> If I understand it correctly, setting learning false means that the TM
> will not change. So I could do the following, when I want to find the
> chords for a given melody:
>
> 1) Put a lot of Bach's note-chord combinations in the TM for learning;
> 2) set learning false and try a note-chord combination, with a fixed note
> (the note from the melody) and a random chord;
> 3) look at the anomaly-value of that combination;
> 4) is that value low (no anomaly), accept that note-chord combination, add
> it to the TM with learning true and restart (2) with the next note of the
> melody;
> 5) is that value high (an anomaly), try a new note-chord combination with
> learning false;
>
> greetings: Jos Theelen
>
> On 2015-10-10 14:26, cogmission (David Ray) wrote:
>
>> Hi Jos,
>>
>>     I can fill the Temporal Memory with a lot of nice sounding
>>     note-chord combinations from Bachs chorals. But then I have to find
>>     a new chord with a given note. How do I do that?
>>
>>
>> What about entering each chord as a sequence of notes. Then "resetting"
>> after each chord - entering each note of the chord; resetting then
>> entering in the next chord in a song? That way, it will predict a series
>> of subsequent notes for each note entered.
>>
>> But remember, the HTM is not a "creative" entity, it predicts or
>> generalizes. A "generalization" can be composed of elements not
>> previously combined in a given way, but those individual elements (not
>> the combination of them), will always be what it has seen before... AFAIK
>>
>>     And what happens with the Temporal Memory when I do that? Does that
>>     trying somehow change the Temporal Memory?
>>
>>
>> Once you enter the notes, turn off learning.
>>
>> On Sat, Oct 10, 2015 at 6:28 AM, Jos Theelen <[email protected]
>> <mailto:[email protected]>> wrote:
>>
>>     Yes, I have seen that video.
>>
>>     I hope I can solve the problem before the enddate of the
>>     HTM-challenge. What I still don't understand is how to get a
>>     prediction of a chord, when the note is known. I can fill the
>>     Temporal Memory with a lot of nice sounding note-chord combinations
>>     from Bachs chorals. But then I have to find a new chord with a given
>>     note. How do I do that?
>>
>>     Should I just try to put the combination of that note with a random
>>     chord in the Temporal Memory and look if it is an anomaly? And try
>>     that for all the possible chords? And pick the chord with the lowest
>>     anomaly-value? That could be a very slow solution. And what happens
>>     with the Temporal Memory when I do that? Does that trying somehow
>>     change the Temporal Memory?
>>
>>     greetings: Jos Theelen
>>
>>
>>     On 2015-10-09 20:27, Matthew Taylor wrote:
>>
>>         That is a very interesting problem. I hope you've seen this video
>>         about music theory with Charlie Gillingham?
>>
>>         https://www.youtube.com/watch?v=tGfDjwSORaw
>>         ---------
>>         Matt Taylor
>>         OS Community Flag-Bearer
>>         Numenta
>>
>>
>>         On Fri, Oct 9, 2015 at 11:21 AM, Jos Theelen <[email protected]
>>         <mailto:[email protected]>> wrote:
>>
>>             That probably means, they used a scalarencoder. But their
>>             problem was
>>             different than mine. They had to remember the notes and to
>>             learn which note
>>             came after which other note. For me the combination of
>>             melody and chords
>>             have to sound "nice". Somehow a system has too learn or
>>             remember that.
>>
>>             greetings: Jos Theelen
>>
>>
>>             On 2015-10-09 17:19, Matthew Taylor wrote:
>>
>>
>>                 They actually didn't create a NoteEncoder (the codebase
>>                 was much less
>>                 extensible 2.5 years ago). They wrote a preprocessing
>>                 script that
>>                 turned the MIDI song file into a scalar input stream. I
>>                 don't remember the
>>                 details, and their codebase is lost now. But I do
>>                 remember that they
>>                 needed to remove the "rests" from the input.
>>
>>                 ---------
>>                 Matt Taylor
>>                 OS Community Flag-Bearer
>>                 Numenta
>>
>>
>>                 On Fri, Oct 9, 2015 at 3:15 AM, Jos Theelen <[email protected]
>>                 <mailto:[email protected]>> wrote:
>>
>>
>>                     Yes, I know it and looked at it. I wondered how they
>>                     made a NoteEncoder,
>>                     I
>>                     am still struggling with that. Nupic says that notes
>>                     that are "close" to
>>                     each other should have the most overlapping bits.
>>                     But what is "close" in
>>                     music?
>>
>>                     1) a scalarencoder, where the number of the note is
>>                     encoded. In this case
>>                     "close" means almost the same frequency.
>>                     2) 2 scalarencoders, one for the note and a
>>                     different one for the octave.
>>                     This because a note sounds almost the same as that
>>                     same note an octave
>>                     lower
>>                     or an octave higher.
>>                     3) a typical noteencoder and a scalarencoder for the
>>                     octave. The
>>                     noteencoder
>>                     should take the notes in the following cyclical order:
>>                     C,G,D,A,E,.....Es,Bes,F,C, each a quint apart. In
>>                     this case notes that
>>                     are
>>                     close together sound better together. C-G sounds
>>                     better together than
>>                     C-Cis
>>
>>                     Probably I should make all 3 encoders, just to test.
>>
>>                     greetings: Jos Theelen
>>
>>                     On 2015-10-08 15:14, Marek Otahal wrote:
>>
>>
>>
>>                         Hi Jos,
>>
>>                         On Thu, Oct 8, 2015 at 3:06 PM, Jos Theelen
>>                         <[email protected] <mailto:[email protected]>
>>                         <mailto:[email protected] <mailto:[email protected]>>> wrote:
>>
>>                                I am working on a model, that reads
>>                         melodies and chords from
>>                                midifiles, mainly chorales from JS Bach.
>>                         When the model is given a
>>                                new melody without chords, it should find
>>                         the chords, that sound
>>                                correct, conform what it learned from the
>>                         midifiles.
>>
>>                         Nice, I love classical music and music related
>>                         examples :)
>>                         You probably know, but just in case: check out
>>                         nupic.audio project and a
>>                         former hackathon submission that composed song
>>                         on trained MIDI music.
>>
>>
>>                                greetings: Jos Theelen
>>
>>                         No virus found in this message.
>>                         Checked by AVG - www.avg.com
>>                         <http://www.avg.com> <http://www.avg.com>
>>                         Version: 2015.0.6140 / Virus Database:
>>                         4435/10780 - Release Date:
>>                         10/08/15
>>
>>
>>
>>
>>
>>
>>                 -----
>>                 No virus found in this message.
>>                 Checked by AVG - www.avg.com <http://www.avg.com>
>>                 Version: 2015.0.6140 / Virus Database: 4435/10783 -
>>                 Release Date: 10/08/15
>>
>>
>>
>>
>>
>>
>>
>>         -----
>>         No virus found in this message.
>>         Checked by AVG - www.avg.com <http://www.avg.com>
>>         Version: 2015.0.6140 / Virus Database: 4435/10790 - Release
>>         Date: 10/10/15
>>
>>
>>
>>
>>
>>
>>
>> --
>> /With kind regards,/
>> David Ray
>> Java Solutions Architect
>> *Cortical.io <http://cortical.io/>*
>> Sponsor of: HTM.java <https://github.com/numenta/htm.java>
>> [email protected] <mailto:[email protected]>
>> http://cortical.io <http://cortical.io/>
>>
>> No virus found in this message.
>> Checked by AVG - www.avg.com <http://www.avg.com>
>> Version: 2015.0.6140 / Virus Database: 4435/10790 - Release Date: 10/10/15
>>
>>
>
>

Reply via email to