Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Transpozycja dźwięków w excelu. Czy możliwe?

mysiak 13 Dec 2013 23:18 2412 10
  • #1
    mysiak
    Level 16  
    Witam.

    Potrzebuję wykonać w Excelu "automat" do transponowania dźwięków.
    Niestety nie mam pojęcia jak się za to zabrać i tym bardziej nie wiem czy w ogóle da się coś takiego napisać aczkolwiek w teorii transpozycja dźwięku nie jest trudna.

    Postaram się jak najjaśniej opisać zasadę działania takowego Excelowego transponzera:

    W kolumnie A jeden pod drugim miały by być wpisywane dźwięki. Za przykład weźmy dźwięk "C".

    W kolumnie B podajemy wartość transpozycji - o ile półtonów ma być podniesiony lub opuszczony nasz przykładowy dźwięk C. Za przykład weźmy 2 półtony.

    W kolumnie C ma pojawić się wynik transpozycji, w tym przypadku dźwięk D.

    Zatem powinno wykonać się proste działanie: Dźwięk C + 2 = Dźwięk D.

    Analogicznie podaję przykłady dla kilku dźwięków:

    Kolumna A Kolumna B Kolumna C

    C + 2 D
    D + 2 E
    F + 2 G

    D - 2 C

    Jak widać wszystko opiera się na dodawaniu i odejmowaniu tylko podstawowym dla mnie problemem jest: jak "wytłumaczyć" Excelowi, że litera C + 2 = litera D, litera D - 2 = litera C itd.,

    Mam nadzieję, że opisałem to dość zrozumiale. Jednak gdyby coś było nie zrozumiałe to proszę o pytania.

    Bardzo proszę o pomoc.
    Za wszelkie podpowiedzi dziękuję z góry.

    Pozdrawiam.
  • Helpful post
    #2
    mickpr
    Level 39  
    Rozumiem, że transpozycje będą co jakie wartości? Co tony, półtony, ćwiartki, ósemki i szesnastki? Czy może tylko półtony?

    Jeśli tylko o półtony - określ maksymalną wartość o jaką mogą być transponowane nuty i zrób tabelkę - wiersze to nuty (C,D... itd..) a kolumny to transpozycja (tyle kolumn o ile pozycji może być dana nuta transponowana.
    Dla danej transpozycji i nuty wstaw (na przecięciu kolumny/wiersza) wynikającą z niej nutę wynikową.
    Potem odpowiednia formuła i "voila".
    Wszystko jasne?
  • #3
    mysiak
    Level 16  
    Witam ponownie.

    Przygotowałem tabelę jednak dalsze instrukcje
    Quote:
    "Dla danej transpozycji i nuty wstaw (na przecięciu kolumny/wiersza) wynikającą z niej nutę wynikową.
    Potem odpowiednia formuła i "voila"."
    nie są dla mnie wystarczająco jasne.

    Nie wiem co kolega miał na myśli pisząc: "Dla danej transpozycji i nuty wstaw (na przecięciu kolumny/wiersza) wynikającą z niej nutę wynikową" więc proszę o objaśnienie.

    Co do formuły również nie mam pojęcia nawet od czego zacząć.

    Na wstępie moich dalszych objaśnień chciałbym przeprosić za wprowadzenie w błąd:

    Otóż pisząc wczoraj o dość późnej porze napisałem, że chodzi o transpozycje dźwięków. Otóż jest to błąd. Chodzi mi o transpozycję akordów.

    Różnica wynikająca z mojego błędu jest taka, że Excel powinien też umieć "odróżnić" akord durowy od molowego czyli w moim założeniu wielką literę od małej C - c dur, c - c moll.

    Żeby łatwiej było to wszystko ogarnąć w załączniku zamieszczam dokument xls, w którym jest rozpisany utwór, w kolumnie C są rozpisane akordy, w kolumnie D chciałbym aby pojawiały się akordy po transpozycji a obok zamieszczona jest tabelka o której pisał kolega mickpr.

    Jeszcze jedno: Transponowanie ma być jedynie tylko o półtony w zakresie od -12 do + 12 jak w większości keyboardów.

    Ponownie proszę o pomoc i jeszcze raz przepraszam za wprowadzenie w błąd.
  • #4
    mickpr
    Level 39  
    mysiak wrote:
    Nie wiem co kolega miał na myśli pisząc: "Dla danej transpozycji i nuty wstaw (na przecięciu kolumny/wiersza) wynikającą z niej nutę wynikową" więc proszę o objaśnienie.
    Prawie dokładnie tak jak to zrobiłeś.

    Zrobiłem praktycznie wzór.
    Jedyny problem, to fakt, że funkcja PODAJ.POZYCJĘ nie rozróżnia pomiędzy wielkimi i małymi literami, kiedy dopasowuje wartości tekstowe.

    Ale nad tym, to zastanów się już sam :)
    Dodam, że prostym "mykiem" i to można obejść.
  • Helpful post
    #5
    Maciej Gonet
    VBA, Excel specialist
    Dobry wieczór,
    Moja propozycja w załączniku, z wykorzystaniem Tabeli danych.
    Niestety nie jestem biegły w teorii muzyki, więc małe litery pozostawiłem bez zmiany, bo w tabelce ich nie ma, więc nie wiem w jaki sposób miałyby być transponowane. Ale mam nadzieję, że sobie z tym jakoś poradzisz, na przykład rozbudowując tabelkę.
    Powodzenia
  • #7
    mickpr
    Level 39  
    Maciej Gonet wrote:
    Moja propozycja w załączniku, z wykorzystaniem Tabeli danych.
    Niestety w przypadku kolegi błąd jest w rozróżnianiu mol/dur (małe/duże litery).

    dt1 wrote:
    Moja z kolei propozycja będzie oparta na prostym makro
    Kolega moderator (przy całym szacunku dla rozwiązania) mija się z prawdą. To nie tylko makro, ale i kod VBA - prawda?
    Najważniejsze - że działa :) i wygląda najprościej.
  • #8
    Maciej Gonet
    VBA, Excel specialist
    Dobry wieczór,
    W moim rozwiązaniu brak obsługi małych liter nie jest błędem, tylko świadomym pominięciem, bo szanowny Kolega nie napisał jak obsłużyć te małe litery.
    Pozdrowienia.
  • #9
    dt1
    Admin of Computers group
    mickpr wrote:
    Kolega moderator (przy całym szacunku dla rozwiązania) mija się z prawdą. To nie tylko makro, ale i kod VBA - prawda?

    Być może nieświadomie. Makra zawsze wiązałem z programowaniem w VBA (lub rejestrowaniem, co w wyniku daje również kod VBA). Jeśli da się realizować makra w excelu inaczej niż przez VBA to chętnie się dowiem jak :)
  • #10
    mickpr
    Level 39  
    dt1 wrote:
    Być może nieświadomie. Makra zawsze wiązałem z programowaniem w VBA (lub rejestrowaniem, co w wyniku daje również kod VBA).
    Chodziło mi o fakt, że autor wątku powinien znać VBA - jeśli będzie chciał sobie zmodyfikować ten kod. Inaczej może głowić się "skąd się to bierze" i "gdzie powinien zajrzeć".
    Znam bowiem osoby, które używają makr - nie znając VBA.
    Chodzi o ścisłość, ale nadal uważam kolegi rozwiązanie za lepsze (ładniejsze) :)
  • #11
    mysiak
    Level 16  
    Witam.

    Dziękuję kolegom za zaangażowanie i pomoc.

    Najbardziej przypadła mi do gustu propozycja kolegi Maciej Gonet ponieważ jest najbardziej zautomatyzowana i jak najbardziej działa prawidłowo pod względem transpozycji akordów mollowych. Nie mniej jednak pozostałe propozycje są również pomocne.

    Quote:
    Niestety w przypadku kolegi błąd jest w rozróżnianiu mol/dur (małe/duże litery).


    Quote:
    Dobry wieczór,
    W moim rozwiązaniu brak obsługi małych liter nie jest błędem, tylko świadomym pominięciem, bo szanowny Kolega nie napisał jak obsłużyć te małe litery.
    Pozdrowienia.


    Quote:
    Niestety nie jestem biegły w teorii muzyki, więc małe litery pozostawiłem bez zmiany, bo w tabelce ich nie ma, więc nie wiem w jaki sposób miałyby być transponowane. Ale mam nadzieję, że sobie z tym jakoś poradzisz, na przykład rozbudowując tabelkę.



    Dla rozwiania wątpliwości z teorii muzyki odnośnie akordów mollowych: akord mollowy wyrażany przez małą literę np. c po transpozycji zawsze pozostanie akordem mollowym więc zawsze będzie wyrażany małą literą np. c ( c-moll ) + 2 = d ( d-moll ) więc sposób zamiany akordów mollowych analogicznie do durowych jest jak najbardziej prawidłowy. Jeszcze raz dziękuję za zaangażowanie i pomoc.

    Pozostawiam temat otwarty jeszcze na kilka dni gdyby ktoś chciałby coś dodac :)